{"version":3,"file":"app/vendor.js","mappings":"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AAsB,CACxBnG,KAAM,0BACNC,WAAY,MACZC,UAAW,CACP,IAAK,CACDC,cAAe,IAEnBC,QAAS,CACLC,WAAY,EACZF,cAAe,KAGvBI,gBAAiB,CAAC,IAClBC,cAAe,CAAC,IAChBC,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GL21CiB,CACrBpH,cAAe,WACfC,OAAQ,CACJ1D,aAAc,aACdC,YAAY,EACZnT,eAAgB,iBAChBE,KAAM,CACFC,KAAM,aK/1Cd6d,OAAO,EACPE,WAAY,IAEVmF,GAA2B,CAC7B/F,KAAM,0BACNC,WAAY,MACZC,UAAW,CACP,IAAK,CACDC,cAAe,IAEnBC,QAAS,CACLC,WAAY,EACZF,cAAe,KAGvBG,YAAa,GACbC,gBAAiB,CAAC,GAA6B,IAC/CC,cAAe,CAAC,IAChBC,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJC,OAAO,EACPxW,YAAa,iCACbyW,UAAW,SACXC,WAAY,IAEVqF,GAAkC,CACpCjG,KAAM,0BACNC,WAAY,MACZC,UAAW,CACP,IAAK,CACDC,cAAe,IAEnBC,QAAS,CACLC,WAAY,EACZF,cAAe,KAGvBI,gBAAiB,CAAC,GAA6B,IAC/CC,cAAe,CAAC,IAChBC,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJC,OAAO,EACPE,WAAY,IAEVuF,GAAoB,CACtBnG,KAAM,0BACNC,WAAY,MACZC,UAAW,CACP,IAAK,CACDC,cAAe,IAEnBC,QAAS,CACLC,WAAY,EACZF,cAAe,KAGvBI,gBAAiB,CAAC,GL2yCA,CAClBlH,cAAe,OACfC,OAAQ,CACJ1D,aAAc,OACdC,YAAY,EACZnT,eAAgB,OAChBE,KAAM,CACFC,KAAM,aKjzCd2d,cAAe,CAAC,IAChBC,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJC,OAAO,EACPE,WAAY,IC/MT,MAAMwF,GAKT,WAAA1H,CAAYC,GACRC,KAAKD,OAASA,CAClB,CAUA,MAAA0H,CAAOpc,EAAeiQ,EAAM4E,GACxB,OAAOF,KAAKD,OAAOI,qBAAqB,CAAE9U,gBAAeiQ,OAAM4E,WAAWwH,GAC9E,CAcA,cAAAC,CAAetc,EAAeW,EAAYkU,GACtC,OAAOF,KAAKD,OAAOI,qBAAqB,CAAE9U,gBAAeW,aAAYkU,WAAW0H,GACpF,CAUA,UAAAC,CAAWnI,EAASrU,EAAeiQ,EAAM4E,GACrC,OAAOF,KAAKD,OAAOI,qBAAqB,CAAET,UAASrU,gBAAeiQ,OAAM4E,WAAW4H,GACvF,CAWA,iBAAAC,CAAkBrI,EAASrU,EAAe4T,EAAWiB,GACjD,OAAOF,KAAKD,OAAOI,qBAAqB,CAAET,UAASrU,gBAAe4T,YAAWiB,WAAW8H,GAC5F,CAYA,eAAAC,CAAgBtI,EAAQO,GACpB,OAAOF,KAAKD,OAAOI,qBAAqB,CAAER,SAAQO,WAAWgI,GACjE,CAQA,YAAAC,CAAaC,EAAUlI,GACnB,OAAOF,KAAKD,OAAOI,qBAAqB,CAAEiI,WAAUlI,WAAWmI,GACnE,EAGJ,MAAM,GAAgB,KAA4B,GAAqB,GACjEX,GAAsB,CACxBtG,KAAM,0BACNC,WAAY,MACZC,UAAW,CACP,IAAK,CACDC,cAAe,IAEnBC,QAAS,CACLC,WAAY,EACZF,cAAe,KAGvBG,YAAa,GACbC,gBAAiB,CAAC,IAClBC,cAAe,CAAC,IAChBC,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJC,OAAO,EACPxW,YAAa,iCACbyW,UAAW,SACXC,WAAY,IAEV4F,GAA8B,CAChCxG,KAAM,0BACNC,WAAY,MACZC,UAAW,CACP,IAAK,CACDC,cAAe,IAEnBC,QAAS,CACLC,WAAY,EACZF,cAAe,KAGvBI,gBAAiB,CAAC,IAClBC,cAAe,CAAC,IAChBC,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GNs0CgC,CACpCpH,cAAe,CAAC,UAAW,4BAC3BC,OAAQ,CACJ5W,eAAgB,mCAChBC,QAAS,mCACTC,KAAM,CACFC,KAAM,cMz0Cd6d,OAAO,EACPE,WAAY,IAEV8F,GAA0B,CAC5B1G,KAAM,0BACNC,WAAY,MACZC,UAAW,CACP,IAAK,CACDC,cAAe,IAEnBC,QAAS,CACLC,WAAY,EACZF,cAAe,KAGvBG,YAAa,GACbC,gBAAiB,CACb,GACA,GACA,IAEJC,cAAe,CAAC,IAChBC,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJC,OAAO,EACPxW,YAAa,iCACbyW,UAAW,SACXC,WAAY,IAEVgG,GAAiC,CACnC5G,KAAM,0BACNC,WAAY,MACZC,UAAW,CACP,IAAK,CACDC,cAAe,IAEnBC,QAAS,CACLC,WAAY,EACZF,cAAe,KAGvBI,gBAAiB,CACb,GACA,GACA,IAEJC,cAAe,CAAC,IAChBC,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJC,OAAO,EACPE,WAAY,IAEVkG,GAA+B,CACjC9G,KAAM,0BACNC,WAAY,MACZC,UAAW,CACP,IAAK,CACDC,cAAe,IAEnBC,QAAS,CACLC,WAAY,EACZF,cAAe,KAGvBG,YAAa,GACbC,gBAAiB,CAAC,GAA6B,IAC/CC,cAAe,CAAC,IAChBC,iBAAkB,CACd,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GAC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R0G,KAAM,OACNC,SAAU,WACVC,kBAAmB,oBACnBC,cAAe,gBACfC,oBAAqB,sBACrBC,mBAAoB,QACpBC,MAAO,QACPC,WAAY,aACZC,uBAAwB,yBACxBC,iBAAkB,mBAClBC,UAAW,YACXnT,gBAAiB,kBACjB8D,aAAc,eACdsP,yBAA0B,+BAEjBC,EAAW,GACXC,EAAU,IAEVC,EAAoB,IAEpBC,EAAmB,OACnBC,EAAmB,WACnBC,EAA2B,SAC3BC,EAA8B,uNAC9BC,EAAuC,CAChD,8BACA,gBACA,iBACA,eACA,OACA,aACA,cACA,oBACA,aACA,yBACA,YACA,kBACA,kBACA,gCACA,eACA,gBACA,sBACA,mBACA,mBACA,cACA,gBACA,OACA,gBACA,SACA,OACA,qBACA,mBACA,4BACA,eACA,qBACA,mBACA,+BACA,sBACA,mBACA,oBACA,aACA,gCACA,wBACA,gBACA,oBACA,WACA,oBACA,gBACA,sBACA,mBACA,+BACA,4BACA,oBACA,sBACA,0BACA,0BACA,kCACA,gCACA,8BACA,gCACA,6BACA,6BACA,2BACA,wBACA,yBACA,0BACA,4BACA,iBACA,iCACA,qBACA,gCACA,wBACA,6BACA,sCACA,4BACA,6BACA,6BACA,6BACA,wBACA,oBACA,0BACA,sBACA,gBACA,kBACA,kBACA,yBACA,6BACA,0BACA,8BACA,gBACA,0BACA,uBACA,gCACA,4BACA,kCACA,iBACA,6BACA,8BACA,+BACA,eACA,uBAESC,EAA2C,CACpD,OACA,aACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,MACA,KACA,MACA,KACA,MACA,KACA,KACA,KACA,UACA,SACA,SACA,SACA,UACA,UACA,gBACA,YACA,eACA,MACA,QACA,MACA,MACA,QACA,MACA,YAESC,EAAyC,sCACzCC,EAA4C,4CAG5CC,EAAiB,CAC1B,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,2UCtKG,SAASC,EAAcx8B,GAC1B,MAAMy8B,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AAG,KAKJ,KAAXD,IACFvhL,EAAIuhL,EAAQrqL,cAAgB8I,EAAE4hL,OAAO,IAGhC5hL,CACT,EAEO,SAAUk5J,GACf,OAAOA,EAAM7nL,OAAOmsM,EACtB,GAGFC,EAAKh3L,SAASi5L,iBAAiBjC,EAAKK,QAAS,WAmB7CL,EAAKqE,uBAAyB,SAAUC,GACtC,IAAIC,EAAQD,EAAUxuF,QAAO,SAAU0F,EAAMgpF,GAE3C,OADAhpF,EAAKgpF,GAAYA,EACVhpF,CACT,GAAG,CAAC,GAEJ,OAAO,SAAUigE,GACf,GAAIA,GAAS8oB,EAAM9oB,EAAM5uL,cAAgB4uL,EAAM5uL,WAAY,OAAO4uL,CACpE,CACF,EAeAukB,EAAKI,eAAiBJ,EAAKqE,uBAAuB,CAChD,IACA,OACA,QACA,SACA,QACA,MACA,SACA,OACA,KACA,QACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,UACA,OACA,MACA,KACA,MACA,SACA,QACA,OACA,MACA,KACA,OACA,SACA,OACA,OACA,QACA,MACA,OACA,MACA,MACA,MACA,MACA,OACA,KACA,MACA,OACA,MACA,MACA,MACA,UACA,IACA,KACA,KACA,OACA,KACA,KACA,MACA,OACA,QACA,MACA,OACA,SACA,MACA,KACA,QACA,OACA,OACA,KACA,UACA,KACA,MACA,MACA,KACA,MACA,QACA,KACA,OACA,KACA,QACA,MACA,MACA,SACA,OACA,MACA,OACA,MACA,SACA,QACA,KACA,OACA,OACA,OACA,MACA,QACA,OACA,OACA,QACA,QACA,OACA,OACA,MACA,KACA,MACA,OACA,KACA,QACA,MACA,KACA,OACA,OACA,OACA,QACA,QACA,QACA,MACA,OACA,MACA,OACA,OACA,QACA,MACA,MACA,SAGFrE,EAAKh3L,SAASi5L,iBAAiBjC,EAAKI,eAAgB,kBAqBpDJ,EAAKG,QAAU,SAAU1kB,GACvB,OAAOA,EAAM7nL,QAAO,SAAU6uB,GAC5B,OAAOA,EAAExlB,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,GAC/C,GACF,EAEA+iM,EAAKh3L,SAASi5L,iB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","sources":["webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/models/mappers.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/models/parameters.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/service.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/container.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/blob.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/pageBlob.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/appendBlob.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/blockBlob.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/storageClient.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/StorageContextClient.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/StorageClient.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/tracing.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/BlobSASPermissions.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/ContainerSASPermissions.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/credentials/UserDelegationKeyCredential.browser.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/SasIPRange.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/SASQueryParameters.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/BlobSASSignatureValues.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BlobLeaseClient.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BlobQueryResponse.browser.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/models.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/PageBlobRangeResponse.js","webpack://afrba-portal/./node_modules/@azure/core-lro/dist/browser/logger.js","webpack://afrba-portal/./node_modules/@azure/core-lro/dist/browser/legacy/poller.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/pollers/BlobStartCopyFromUrlPoller.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/Range.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/Batch.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-common/src/BufferScheduler.browser.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/Clients.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BlobDownloadResponse.browser.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BatchUtils.browser.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/utils.browser.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BatchResponseParser.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/Mutex.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BlobBatch.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BlobBatchClient.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/ContainerClient.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/AccountSASPermissions.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/AccountSASResourceTypes.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/AccountSASServices.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/AccountSASSignatureValues.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BlobServiceClient.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/StorageRetryPolicyFactory.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/cache.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageBrowserPolicyV2.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageRetryPolicyV2.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageBrowserPolicy.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/StorageBrowserPolicyFactory.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageCorrectContentLengthPolicy.browser.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/Pipeline.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/CredentialPolicy.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/AnonymousCredentialPolicy.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/credentials/Credential.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/credentials/AnonymousCredential.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/credentials/StorageSharedKeyCredential.browser.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/log.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/RequestPolicy.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageRetryPolicy.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageSharedKeyCredentialPolicyV2.browser.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/constants.js","webpack://afrba-portal/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/utils.common.js","webpack://afrba-portal/./node_modules/@nevware21/ts-utils/dist/es5/mod/ts-utils.js","webpack://afrba-portal/./node_modules/@microsoft/dynamicproto-js/dist-es5/DynamicProto.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-shims/dist-es5/Constants.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-shims/dist-es5/TsLibShims.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/__DynamicConstants.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/InternalConstants.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/HelperFuncs.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/EnvUtils.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/RandomHelper.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/DataCacheHelper.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/Config/ConfigDefaults.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/Config/DynamicSupport.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/Config/DynamicProperty.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/AggregationError.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/Config/DynamicState.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/Config/DynamicConfig.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/DbgExtensionUtils.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/DiagnosticLogger.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK.Enums/EnumHelperFuncs.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Enums.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/__DynamicConstants.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/StorageHelperFuncs.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/applicationinsights-common.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Constants.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/Common/DataSanitizer.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/TelemetryItemCreator.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/Event.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/Trace.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/Common/DataPoint.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/Metric.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/HelperFuncs.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/PageView.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/PageViewPerformance.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/Exception.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/CoreUtils.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/W3cTraceParent.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/RequestResponseHeaders.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/UrlHelperFuncs.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Util.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/RemoteDependencyData.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/CookieMgr.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/DomHelperFuncs.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/Config/ConfigDefaultHelpers.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/EventHelpers.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/PerfManager.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/TelemetryHelpers.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/ProcessTelemetryContext.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/UnloadHookContainer.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/BaseTelemetryPlugin.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/InstrumentHooks.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/UnloadHandlerContainer.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-analytics-js/dist-es5/__DynamicConstants.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-analytics-js/dist-es5/JavaScriptSDK/Telemetry/PageViewManager.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-analytics-js/dist-es5/JavaScriptSDK/Telemetry/PageViewPerformanceManager.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-analytics-js/dist-es5/JavaScriptSDK/AnalyticsPlugin.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-analytics-js/dist-es5/JavaScriptSDK/Telemetry/PageVisitTimeManager.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-analytics-js/dist-es5/JavaScriptSDK/Timing.js","webpack://afrba-portal/./node_modules/@nevware21/ts-async/dist/es5/mod/ts-async.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-cfgsync-js/dist-es5/__DynamicConstants.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-cfgsync-js/dist-es5/CfgSyncHelperFuncs.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-cfgsync-js/dist-es5/CfgSyncPlugin.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Offline.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK.Enums/InitActiveStatusEnum.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/Constants.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/SenderPostManager.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/AsyncUtils.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/ResponseHelpers.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Interfaces/Contracts/ContextTagKeys.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Interfaces/PartAExtensions.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/Common/Envelope.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/Telemetry/Common/Data.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/InternalConstants.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/__DynamicConstants.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/EnvelopeCreator.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/SendBuffer.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/Sender.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/Serializer.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/TelemetryProcessors/SamplingScoreGenerators/SamplingScoreGenerator.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-channel-js/dist-es5/TelemetryProcessors/Sample.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/ConnectionStringParser.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-common/dist-es5/ThrottleMgr.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/NotificationManager.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/TelemetryInitializerPlugin.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-core-js/dist-es5/JavaScriptSDK/AppInsightsCore.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-dependencies-js/dist-es5/InternalConstants.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-dependencies-js/dist-es5/__DynamicConstants.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-dependencies-js/dist-es5/ajaxRecord.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-dependencies-js/dist-es5/ajax.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/Context/Application.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/Context/Device.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/Context/Internal.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/Context/Location.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/__DynamicConstants.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/Context/Session.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/Context/TelemetryTrace.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/Context/User.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/TelemetryContext.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-properties-js/dist-es5/PropertiesPlugin.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-web/dist-es5/InternalConstants.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-web/dist-es5/AISku.js","webpack://afrba-portal/./node_modules/@microsoft/applicationinsights-web/dist-es5/__DynamicConstants.js","webpack://afrba-portal/./node_modules/backbone.marionette/lib/backbone.marionette.js","webpack://afrba-portal/./node_modules/backbone.radio/build/backbone.radio.js","webpack://afrba-portal/./node_modules/backbone.syphon/lib/backbone.syphon.js","webpack://afrba-portal/./node_modules/backbone/backbone.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/enums.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/math.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/within.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/createPopper.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/popper.js","webpack://afrba-portal/./node_modules/@popperjs/core/lib/popper-lite.js","webpack://afrba-portal/./node_modules/bootstrap/dist/js/bootstrap.esm.js","webpack://afrba-portal/./node_modules/events/events.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/base.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/decorators.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/helpers.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/logger.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/runtime.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack://afrba-portal/./node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack://afrba-portal/./node_modules/handlebars/runtime.js","webpack://afrba-portal/./node_modules/jquery/dist/jquery.js","webpack://afrba-portal/./node_modules/lunr/lunr.js","webpack://afrba-portal/./node_modules/marionette.approuter/lib/marionette.approuter.esm.js","webpack://afrba-portal/./node_modules/@azure/abort-controller/dist/browser/AbortError.js","webpack://afrba-portal/./node_modules/@azure/core-auth/dist/browser/tokenCredential.js","webpack://afrba-portal/./node_modules/@azure/core-client/dist/browser/base64.js","webpack://afrba-portal/./node_modules/@azure/core-client/dist/browser/interfaces.js","webpack://afrba-portal/./node_modules/@azure/core-client/dist/browser/utils.js","webpack://afrba-portal/./node_modules/@azure/core-client/dist/browser/serializer.js","webpack://afrba-portal/./node_modules/@azure/core-client/dist/browser/state.js","webpack://afrba-portal/./node_modules/@azure/core-client/dist/browser/operationHelpers.js","webpack://afrba-portal/./node_modules/@azure/core-client/dist/browser/deserializationPolicy.js","webpack://afrba-portal/./node_modules/@azure/core-client/dist/browser/interfaceHelpers.js","webpack://afrba-portal/./node_modules/@azure/core-client/dist/browser/serializationPolicy.js","webpack://afrba-portal/./node_modules/@azure/core-client/dist/browser/pipeline.js","webpack://afrba-portal/./node_modules/@azure/core-client/dist/browser/httpClientCache.js","webpack://afrba-portal/./node_modules/@azure/core-client/dist/browser/urlHelpers.js","webpack://afrba-portal/./node_modules/@azure/core-client/dist/browser/log.js","webpack://afrba-portal/./node_modules/@azure/core-client/dist/browser/serviceClient.js","webpack://afrba-portal/./node_modules/@azure/core-client/dist/browser/authorizeRequestOnTenantChallenge.js","webpack://afrba-portal/./node_modules/@azure/core-http-compat/dist/browser/policies/disableKeepAlivePolicy.js","webpack://afrba-portal/./node_modules/@azure/core-http-compat/dist/browser/util.js","webpack://afrba-portal/./node_modules/@azure/core-http-compat/dist/browser/response.js","webpack://afrba-portal/./node_modules/@azure/core-http-compat/dist/browser/extendedClient.js","webpack://afrba-portal/./node_modules/@azure/core-http-compat/dist/browser/policies/requestPolicyFactoryPolicy.js","webpack://afrba-portal/./node_modules/@azure/core-http-compat/dist/browser/httpClientAdapter.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/pipeline.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/log.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/util/sanitizer.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/logPolicy.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/redirectPolicy.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/constants.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgent.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/util/userAgentPlatform.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/userAgentPolicy.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/util/file.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/util/typeGuards.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/util/concat.common.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/multipartPolicy.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/decompressResponsePolicy.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/util/helpers.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/throttlingRetryStrategy.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/retryStrategies/exponentialRetryStrategy.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/retryPolicy.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/defaultRetryPolicy.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/httpHeaders.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/formDataPolicy.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/proxyPolicy.common.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/setClientRequestIdPolicy.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/tlsPolicy.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/util/inspect.common.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/restError.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/tracingPolicy.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/createPipelineFromOptions.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/fetchHttpClient.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/defaultHttpClient.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/pipelineRequest.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/util/tokenCycler.js","webpack://afrba-portal/./node_modules/@azure/core-rest-pipeline/dist/browser/policies/bearerTokenAuthenticationPolicy.js","webpack://afrba-portal/./node_modules/@azure/core-tracing/dist/browser/tracingContext.js","webpack://afrba-portal/./node_modules/@azure/core-tracing/dist/browser/state.js","webpack://afrba-portal/./node_modules/@azure/core-tracing/dist/browser/instrumenter.js","webpack://afrba-portal/./node_modules/@azure/core-tracing/dist/browser/tracingClient.js","webpack://afrba-portal/./node_modules/@azure/core-util/dist/browser/delay.js","webpack://afrba-portal/./node_modules/@azure/core-util/dist/browser/createAbortablePromise.js","webpack://afrba-portal/./node_modules/@azure/core-util/dist/browser/random.js","webpack://afrba-portal/./node_modules/@azure/core-util/dist/browser/object.js","webpack://afrba-portal/./node_modules/@azure/core-util/dist/browser/error.js","webpack://afrba-portal/./node_modules/@azure/core-util/dist/browser/bytesEncoding.common.js","webpack://afrba-portal/./node_modules/@azure/core-util/dist/browser/uuidUtils.common.js","webpack://afrba-portal/./node_modules/@azure/core-util/dist/browser/uuidUtils.js","webpack://afrba-portal/./node_modules/@azure/core-util/dist/browser/checkEnvironment.js","webpack://afrba-portal/./node_modules/@azure/core-xml/dist/browser/xml.common.js","webpack://afrba-portal/./node_modules/@azure/core-xml/dist/browser/xml.js","webpack://afrba-portal/./node_modules/@azure/logger/dist/browser/debug.js","webpack://afrba-portal/./node_modules/@azure/logger/dist/browser/log.common.js","webpack://afrba-portal/./node_modules/@azure/logger/dist/browser/index.js","webpack://afrba-portal/./node_modules/photoswipe-dynamic-caption-plugin/photoswipe-dynamic-caption-plugin.esm.js","webpack://afrba-portal/./node_modules/photoswipe/dist/photoswipe-lightbox.esm.js","webpack://afrba-portal/./node_modules/photoswipe/dist/photoswipe.esm.js","webpack://afrba-portal/./node_modules/tslib/tslib.es6.mjs","webpack://afrba-portal/./node_modules/underscore/modules/_setup.js","webpack://afrba-portal/./node_modules/underscore/modules/restArguments.js","webpack://afrba-portal/./node_modules/underscore/modules/isObject.js","webpack://afrba-portal/./node_modules/underscore/modules/isNull.js","webpack://afrba-portal/./node_modules/underscore/modules/isUndefined.js","webpack://afrba-portal/./node_modules/underscore/modules/isBoolean.js","webpack://afrba-portal/./node_modules/underscore/modules/isElement.js","webpack://afrba-portal/./node_modules/underscore/modules/_tagTester.js","webpack://afrba-portal/./node_modules/underscore/modules/isString.js","webpack://afrba-portal/./node_modules/underscore/modules/isNumber.js","webpack://afrba-portal/./node_modules/underscore/modules/isDate.js","webpack://afrba-portal/./node_modules/underscore/modules/isRegExp.js","webpack://afrba-portal/./node_modules/underscore/modules/isError.js","webpack://afrba-portal/./node_modules/underscore/modules/isSymbol.js","webpack://afrba-portal/./node_modules/underscore/modules/isArrayBuffer.js","webpack://afrba-portal/./node_modules/underscore/modules/isFunction.js","webpack://afrba-portal/./node_modules/underscore/modules/_hasObjectTag.js","webpack://afrba-portal/./node_modules/underscore/modules/_stringTagBug.js","webpack://afrba-portal/./node_modules/underscore/modules/isDataView.js","webpack://afrba-portal/./node_modules/underscore/modules/isArray.js","webpack://afrba-portal/./node_modules/underscore/modules/_has.js","webpack://afrba-portal/./node_modules/underscore/modules/isArguments.js","webpack://afrba-portal/./node_modules/underscore/modules/isFinite.js","webpack://afrba-portal/./node_modules/underscore/modules/isNaN.js","webpack://afrba-portal/./node_modules/underscore/modules/constant.js","webpack://afrba-portal/./node_modules/underscore/modules/_createSizePropertyCheck.js","webpack://afrba-portal/./node_modules/underscore/modules/_shallowProperty.js","webpack://afrba-portal/./node_modules/underscore/modules/_getByteLength.js","webpack://afrba-portal/./node_modules/underscore/modules/_isBufferLike.js","webpack://afrba-portal/./node_modules/underscore/modules/isTypedArray.js","webpack://afrba-portal/./node_modules/underscore/modules/_getLength.js","webpack://afrba-portal/./node_modules/underscore/modules/_collectNonEnumProps.js","webpack://afrba-portal/./node_modules/underscore/modules/keys.js","webpack://afrba-portal/./node_modules/underscore/modules/isEmpty.js","webpack://afrba-portal/./node_modules/underscore/modules/isMatch.js","webpack://afrba-portal/./node_modules/underscore/modules/underscore.js","webpack://afrba-portal/./node_modules/underscore/modules/_toBufferView.js","webpack://afrba-portal/./node_modules/underscore/modules/isEqual.js","webpack://afrba-portal/./node_modules/underscore/modules/allKeys.js","webpack://afrba-portal/./node_modules/underscore/modules/_methodFingerprint.js","webpack://afrba-portal/./node_modules/underscore/modules/isMap.js","webpack://afrba-portal/./node_modules/underscore/modules/isWeakMap.js","webpack://afrba-portal/./node_modules/underscore/modules/isSet.js","webpack://afrba-portal/./node_modules/underscore/modules/isWeakSet.js","webpack://afrba-portal/./node_modules/underscore/modules/values.js","webpack://afrba-portal/./node_modules/underscore/modules/pairs.js","webpack://afrba-portal/./node_modules/underscore/modules/invert.js","webpack://afrba-portal/./node_modules/underscore/modules/functions.js","webpack://afrba-portal/./node_modules/underscore/modules/_createAssigner.js","webpack://afrba-portal/./node_modules/underscore/modules/extend.js","webpack://afrba-portal/./node_modules/underscore/modules/extendOwn.js","webpack://afrba-portal/./node_modules/underscore/modules/defaults.js","webpack://afrba-portal/./node_modules/underscore/modules/_baseCreate.js","webpack://afrba-portal/./node_modules/underscore/modules/create.js","webpack://afrba-portal/./node_modules/underscore/modules/clone.js","webpack://afrba-portal/./node_modules/underscore/modules/tap.js","webpack://afrba-portal/./node_modules/underscore/modules/toPath.js","webpack://afrba-portal/./node_modules/underscore/modules/_toPath.js","webpack://afrba-portal/./node_modules/underscore/modules/_deepGet.js","webpack://afrba-portal/./node_modules/underscore/modules/get.js","webpack://afrba-portal/./node_modules/underscore/modules/has.js","webpack://afrba-portal/./node_modules/underscore/modules/identity.js","webpack://afrba-portal/./node_modules/underscore/modules/matcher.js","webpack://afrba-portal/./node_modules/underscore/modules/property.js","webpack://afrba-portal/./node_modules/underscore/modules/_optimizeCb.js","webpack://afrba-portal/./node_modules/underscore/modules/_baseIteratee.js","webpack://afrba-portal/./node_modules/underscore/modules/iteratee.js","webpack://afrba-portal/./node_modules/underscore/modules/_cb.js","webpack://afrba-portal/./node_modules/underscore/modules/mapObject.js","webpack://afrba-portal/./node_modules/underscore/modules/noop.js","webpack://afrba-portal/./node_modules/underscore/modules/propertyOf.js","webpack://afrba-portal/./node_modules/underscore/modules/times.js","webpack://afrba-portal/./node_modules/underscore/modules/random.js","webpack://afrba-portal/./node_modules/underscore/modules/now.js","webpack://afrba-portal/./node_modules/underscore/modules/_createEscaper.js","webpack://afrba-portal/./node_modules/underscore/modules/_escapeMap.js","webpack://afrba-portal/./node_modules/underscore/modules/escape.js","webpack://afrba-portal/./node_modules/underscore/modules/unescape.js","webpack://afrba-portal/./node_modules/underscore/modules/_unescapeMap.js","webpack://afrba-portal/./node_modules/underscore/modules/templateSettings.js","webpack://afrba-portal/./node_modules/underscore/modules/template.js","webpack://afrba-portal/./node_modules/underscore/modules/result.js","webpack://afrba-portal/./node_modules/underscore/modules/uniqueId.js","webpack://afrba-portal/./node_modules/underscore/modules/chain.js","webpack://afrba-portal/./node_modules/underscore/modules/_executeBound.js","webpack://afrba-portal/./node_modules/underscore/modules/partial.js","webpack://afrba-portal/./node_modules/underscore/modules/bind.js","webpack://afrba-portal/./node_modules/underscore/modules/_isArrayLike.js","webpack://afrba-portal/./node_modules/underscore/modules/_flatten.js","webpack://afrba-portal/./node_modules/underscore/modules/bindAll.js","webpack://afrba-portal/./node_modules/underscore/modules/memoize.js","webpack://afrba-portal/./node_modules/underscore/modules/delay.js","webpack://afrba-portal/./node_modules/underscore/modules/defer.js","webpack://afrba-portal/./node_modules/underscore/modules/throttle.js","webpack://afrba-portal/./node_modules/underscore/modules/debounce.js","webpack://afrba-portal/./node_modules/underscore/modules/wrap.js","webpack://afrba-portal/./node_modules/underscore/modules/negate.js","webpack://afrba-portal/./node_modules/underscore/modules/compose.js","webpack://afrba-portal/./node_modules/underscore/modules/after.js","webpack://afrba-portal/./node_modules/underscore/modules/before.js","webpack://afrba-portal/./node_modules/underscore/modules/once.js","webpack://afrba-portal/./node_modules/underscore/modules/findKey.js","webpack://afrba-portal/./node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack://afrba-portal/./node_modules/underscore/modules/findIndex.js","webpack://afrba-portal/./node_modules/underscore/modules/findLastIndex.js","webpack://afrba-portal/./node_modules/underscore/modules/sortedIndex.js","webpack://afrba-portal/./node_modules/underscore/modules/_createIndexFinder.js","webpack://afrba-portal/./node_modules/underscore/modules/indexOf.js","webpack://afrba-portal/./node_modules/underscore/modules/lastIndexOf.js","webpack://afrba-portal/./node_modules/underscore/modules/find.js","webpack://afrba-portal/./node_modules/underscore/modules/findWhere.js","webpack://afrba-portal/./node_modules/underscore/modules/each.js","webpack://afrba-portal/./node_modules/underscore/modules/map.js","webpack://afrba-portal/./node_modules/underscore/modules/_createReduce.js","webpack://afrba-portal/./node_modules/underscore/modules/reduce.js","webpack://afrba-portal/./node_modules/underscore/modules/reduceRight.js","webpack://afrba-portal/./node_modules/underscore/modules/filter.js","webpack://afrba-portal/./node_modules/underscore/modules/reject.js","webpack://afrba-portal/./node_modules/underscore/modules/every.js","webpack://afrba-portal/./node_modules/underscore/modules/some.js","webpack://afrba-portal/./node_modules/underscore/modules/contains.js","webpack://afrba-portal/./node_modules/underscore/modules/invoke.js","webpack://afrba-portal/./node_modules/underscore/modules/pluck.js","webpack://afrba-portal/./node_modules/underscore/modules/where.js","webpack://afrba-portal/./node_modules/underscore/modules/max.js","webpack://afrba-portal/./node_modules/underscore/modules/min.js","webpack://afrba-portal/./node_modules/underscore/modules/toArray.js","webpack://afrba-portal/./node_modules/underscore/modules/sample.js","webpack://afrba-portal/./node_modules/underscore/modules/shuffle.js","webpack://afrba-portal/./node_modules/underscore/modules/sortBy.js","webpack://afrba-portal/./node_modules/underscore/modules/_group.js","webpack://afrba-portal/./node_modules/underscore/modules/groupBy.js","webpack://afrba-portal/./node_modules/underscore/modules/indexBy.js","webpack://afrba-portal/./node_modules/underscore/modules/countBy.js","webpack://afrba-portal/./node_modules/underscore/modules/partition.js","webpack://afrba-portal/./node_modules/underscore/modules/size.js","webpack://afrba-portal/./node_modules/underscore/modules/_keyInObj.js","webpack://afrba-portal/./node_modules/underscore/modules/pick.js","webpack://afrba-portal/./node_modules/underscore/modules/omit.js","webpack://afrba-portal/./node_modules/underscore/modules/initial.js","webpack://afrba-portal/./node_modules/underscore/modules/first.js","webpack://afrba-portal/./node_modules/underscore/modules/rest.js","webpack://afrba-portal/./node_modules/underscore/modules/last.js","webpack://afrba-portal/./node_modules/underscore/modules/compact.js","webpack://afrba-portal/./node_modules/underscore/modules/flatten.js","webpack://afrba-portal/./node_modules/underscore/modules/difference.js","webpack://afrba-portal/./node_modules/underscore/modules/without.js","webpack://afrba-portal/./node_modules/underscore/modules/uniq.js","webpack://afrba-portal/./node_modules/underscore/modules/union.js","webpack://afrba-portal/./node_modules/underscore/modules/intersection.js","webpack://afrba-portal/./node_modules/underscore/modules/unzip.js","webpack://afrba-portal/./node_modules/underscore/modules/zip.js","webpack://afrba-portal/./node_modules/underscore/modules/object.js","webpack://afrba-portal/./node_modules/underscore/modules/range.js","webpack://afrba-portal/./node_modules/underscore/modules/chunk.js","webpack://afrba-portal/./node_modules/underscore/modules/_chainResult.js","webpack://afrba-portal/./node_modules/underscore/modules/mixin.js","webpack://afrba-portal/./node_modules/underscore/modules/underscore-array-methods.js","webpack://afrba-portal/./node_modules/underscore/modules/index-default.js","webpack://afrba-portal/./node_modules/uuid/dist/esm-browser/native.js","webpack://afrba-portal/./node_modules/uuid/dist/esm-browser/rng.js","webpack://afrba-portal/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://afrba-portal/./node_modules/uuid/dist/esm-browser/v4.js"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nexport const BlobServiceProperties = {\n    serializedName: \"BlobServiceProperties\",\n    xmlName: \"StorageServiceProperties\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobServiceProperties\",\n        modelProperties: {\n            blobAnalyticsLogging: {\n                serializedName: \"Logging\",\n                xmlName: \"Logging\",\n                type: {\n                    name: \"Composite\",\n                    className: \"Logging\",\n                },\n            },\n            hourMetrics: {\n                serializedName: \"HourMetrics\",\n                xmlName: \"HourMetrics\",\n                type: {\n                    name: \"Composite\",\n                    className: \"Metrics\",\n                },\n            },\n            minuteMetrics: {\n                serializedName: \"MinuteMetrics\",\n                xmlName: \"MinuteMetrics\",\n                type: {\n                    name: \"Composite\",\n                    className: \"Metrics\",\n                },\n            },\n            cors: {\n                serializedName: \"Cors\",\n                xmlName: \"Cors\",\n                xmlIsWrapped: true,\n                xmlElementName: \"CorsRule\",\n                type: {\n                    name: \"Sequence\",\n                    element: {\n                        type: {\n                            name: \"Composite\",\n                            className: \"CorsRule\",\n                        },\n                    },\n                },\n            },\n            defaultServiceVersion: {\n                serializedName: \"DefaultServiceVersion\",\n                xmlName: \"DefaultServiceVersion\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            deleteRetentionPolicy: {\n                serializedName: \"DeleteRetentionPolicy\",\n                xmlName: \"DeleteRetentionPolicy\",\n                type: {\n                    name: \"Composite\",\n                    className: \"RetentionPolicy\",\n                },\n            },\n            staticWebsite: {\n                serializedName: \"StaticWebsite\",\n                xmlName: \"StaticWebsite\",\n                type: {\n                    name: \"Composite\",\n                    className: \"StaticWebsite\",\n                },\n            },\n        },\n    },\n};\nexport const Logging = {\n    serializedName: \"Logging\",\n    type: {\n        name: \"Composite\",\n        className: \"Logging\",\n        modelProperties: {\n            version: {\n                serializedName: \"Version\",\n                required: true,\n                xmlName: \"Version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            deleteProperty: {\n                serializedName: \"Delete\",\n                required: true,\n                xmlName: \"Delete\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            read: {\n                serializedName: \"Read\",\n                required: true,\n                xmlName: \"Read\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            write: {\n                serializedName: \"Write\",\n                required: true,\n                xmlName: \"Write\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            retentionPolicy: {\n                serializedName: \"RetentionPolicy\",\n                xmlName: \"RetentionPolicy\",\n                type: {\n                    name: \"Composite\",\n                    className: \"RetentionPolicy\",\n                },\n            },\n        },\n    },\n};\nexport const RetentionPolicy = {\n    serializedName: \"RetentionPolicy\",\n    type: {\n        name: \"Composite\",\n        className: \"RetentionPolicy\",\n        modelProperties: {\n            enabled: {\n                serializedName: \"Enabled\",\n                required: true,\n                xmlName: \"Enabled\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            days: {\n                constraints: {\n                    InclusiveMinimum: 1,\n                },\n                serializedName: \"Days\",\n                xmlName: \"Days\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n        },\n    },\n};\nexport const Metrics = {\n    serializedName: \"Metrics\",\n    type: {\n        name: \"Composite\",\n        className: \"Metrics\",\n        modelProperties: {\n            version: {\n                serializedName: \"Version\",\n                xmlName: \"Version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            enabled: {\n                serializedName: \"Enabled\",\n                required: true,\n                xmlName: \"Enabled\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            includeAPIs: {\n                serializedName: \"IncludeAPIs\",\n                xmlName: \"IncludeAPIs\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            retentionPolicy: {\n                serializedName: \"RetentionPolicy\",\n                xmlName: \"RetentionPolicy\",\n                type: {\n                    name: \"Composite\",\n                    className: \"RetentionPolicy\",\n                },\n            },\n        },\n    },\n};\nexport const CorsRule = {\n    serializedName: \"CorsRule\",\n    type: {\n        name: \"Composite\",\n        className: \"CorsRule\",\n        modelProperties: {\n            allowedOrigins: {\n                serializedName: \"AllowedOrigins\",\n                required: true,\n                xmlName: \"AllowedOrigins\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            allowedMethods: {\n                serializedName: \"AllowedMethods\",\n                required: true,\n                xmlName: \"AllowedMethods\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            allowedHeaders: {\n                serializedName: \"AllowedHeaders\",\n                required: true,\n                xmlName: \"AllowedHeaders\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            exposedHeaders: {\n                serializedName: \"ExposedHeaders\",\n                required: true,\n                xmlName: \"ExposedHeaders\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            maxAgeInSeconds: {\n                constraints: {\n                    InclusiveMinimum: 0,\n                },\n                serializedName: \"MaxAgeInSeconds\",\n                required: true,\n                xmlName: \"MaxAgeInSeconds\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n        },\n    },\n};\nexport const StaticWebsite = {\n    serializedName: \"StaticWebsite\",\n    type: {\n        name: \"Composite\",\n        className: \"StaticWebsite\",\n        modelProperties: {\n            enabled: {\n                serializedName: \"Enabled\",\n                required: true,\n                xmlName: \"Enabled\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            indexDocument: {\n                serializedName: \"IndexDocument\",\n                xmlName: \"IndexDocument\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorDocument404Path: {\n                serializedName: \"ErrorDocument404Path\",\n                xmlName: \"ErrorDocument404Path\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            defaultIndexDocumentPath: {\n                serializedName: \"DefaultIndexDocumentPath\",\n                xmlName: \"DefaultIndexDocumentPath\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const StorageError = {\n    serializedName: \"StorageError\",\n    type: {\n        name: \"Composite\",\n        className: \"StorageError\",\n        modelProperties: {\n            message: {\n                serializedName: \"Message\",\n                xmlName: \"Message\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            code: {\n                serializedName: \"Code\",\n                xmlName: \"Code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            authenticationErrorDetail: {\n                serializedName: \"AuthenticationErrorDetail\",\n                xmlName: \"AuthenticationErrorDetail\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobServiceStatistics = {\n    serializedName: \"BlobServiceStatistics\",\n    xmlName: \"StorageServiceStats\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobServiceStatistics\",\n        modelProperties: {\n            geoReplication: {\n                serializedName: \"GeoReplication\",\n                xmlName: \"GeoReplication\",\n                type: {\n                    name: \"Composite\",\n                    className: \"GeoReplication\",\n                },\n            },\n        },\n    },\n};\nexport const GeoReplication = {\n    serializedName: \"GeoReplication\",\n    type: {\n        name: \"Composite\",\n        className: \"GeoReplication\",\n        modelProperties: {\n            status: {\n                serializedName: \"Status\",\n                required: true,\n                xmlName: \"Status\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"live\", \"bootstrap\", \"unavailable\"],\n                },\n            },\n            lastSyncOn: {\n                serializedName: \"LastSyncTime\",\n                required: true,\n                xmlName: \"LastSyncTime\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n        },\n    },\n};\nexport const ListContainersSegmentResponse = {\n    serializedName: \"ListContainersSegmentResponse\",\n    xmlName: \"EnumerationResults\",\n    type: {\n        name: \"Composite\",\n        className: \"ListContainersSegmentResponse\",\n        modelProperties: {\n            serviceEndpoint: {\n                serializedName: \"ServiceEndpoint\",\n                required: true,\n                xmlName: \"ServiceEndpoint\",\n                xmlIsAttribute: true,\n                type: {\n                    name: \"String\",\n                },\n            },\n            prefix: {\n                serializedName: \"Prefix\",\n                xmlName: \"Prefix\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            marker: {\n                serializedName: \"Marker\",\n                xmlName: \"Marker\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            maxPageSize: {\n                serializedName: \"MaxResults\",\n                xmlName: \"MaxResults\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            containerItems: {\n                serializedName: \"ContainerItems\",\n                required: true,\n                xmlName: \"Containers\",\n                xmlIsWrapped: true,\n                xmlElementName: \"Container\",\n                type: {\n                    name: \"Sequence\",\n                    element: {\n                        type: {\n                            name: \"Composite\",\n                            className: \"ContainerItem\",\n                        },\n                    },\n                },\n            },\n            continuationToken: {\n                serializedName: \"NextMarker\",\n                xmlName: \"NextMarker\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerItem = {\n    serializedName: \"ContainerItem\",\n    xmlName: \"Container\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerItem\",\n        modelProperties: {\n            name: {\n                serializedName: \"Name\",\n                required: true,\n                xmlName: \"Name\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            deleted: {\n                serializedName: \"Deleted\",\n                xmlName: \"Deleted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            version: {\n                serializedName: \"Version\",\n                xmlName: \"Version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            properties: {\n                serializedName: \"Properties\",\n                xmlName: \"Properties\",\n                type: {\n                    name: \"Composite\",\n                    className: \"ContainerProperties\",\n                },\n            },\n            metadata: {\n                serializedName: \"Metadata\",\n                xmlName: \"Metadata\",\n                type: {\n                    name: \"Dictionary\",\n                    value: { type: { name: \"String\" } },\n                },\n            },\n        },\n    },\n};\nexport const ContainerProperties = {\n    serializedName: \"ContainerProperties\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerProperties\",\n        modelProperties: {\n            lastModified: {\n                serializedName: \"Last-Modified\",\n                required: true,\n                xmlName: \"Last-Modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            etag: {\n                serializedName: \"Etag\",\n                required: true,\n                xmlName: \"Etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            leaseStatus: {\n                serializedName: \"LeaseStatus\",\n                xmlName: \"LeaseStatus\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"locked\", \"unlocked\"],\n                },\n            },\n            leaseState: {\n                serializedName: \"LeaseState\",\n                xmlName: \"LeaseState\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\n                        \"available\",\n                        \"leased\",\n                        \"expired\",\n                        \"breaking\",\n                        \"broken\",\n                    ],\n                },\n            },\n            leaseDuration: {\n                serializedName: \"LeaseDuration\",\n                xmlName: \"LeaseDuration\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"infinite\", \"fixed\"],\n                },\n            },\n            publicAccess: {\n                serializedName: \"PublicAccess\",\n                xmlName: \"PublicAccess\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"container\", \"blob\"],\n                },\n            },\n            hasImmutabilityPolicy: {\n                serializedName: \"HasImmutabilityPolicy\",\n                xmlName: \"HasImmutabilityPolicy\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            hasLegalHold: {\n                serializedName: \"HasLegalHold\",\n                xmlName: \"HasLegalHold\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            defaultEncryptionScope: {\n                serializedName: \"DefaultEncryptionScope\",\n                xmlName: \"DefaultEncryptionScope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            preventEncryptionScopeOverride: {\n                serializedName: \"DenyEncryptionScopeOverride\",\n                xmlName: \"DenyEncryptionScopeOverride\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            deletedOn: {\n                serializedName: \"DeletedTime\",\n                xmlName: \"DeletedTime\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            remainingRetentionDays: {\n                serializedName: \"RemainingRetentionDays\",\n                xmlName: \"RemainingRetentionDays\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            isImmutableStorageWithVersioningEnabled: {\n                serializedName: \"ImmutableStorageWithVersioningEnabled\",\n                xmlName: \"ImmutableStorageWithVersioningEnabled\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n        },\n    },\n};\nexport const KeyInfo = {\n    serializedName: \"KeyInfo\",\n    type: {\n        name: \"Composite\",\n        className: \"KeyInfo\",\n        modelProperties: {\n            startsOn: {\n                serializedName: \"Start\",\n                required: true,\n                xmlName: \"Start\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            expiresOn: {\n                serializedName: \"Expiry\",\n                required: true,\n                xmlName: \"Expiry\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const UserDelegationKey = {\n    serializedName: \"UserDelegationKey\",\n    type: {\n        name: \"Composite\",\n        className: \"UserDelegationKey\",\n        modelProperties: {\n            signedObjectId: {\n                serializedName: \"SignedOid\",\n                required: true,\n                xmlName: \"SignedOid\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            signedTenantId: {\n                serializedName: \"SignedTid\",\n                required: true,\n                xmlName: \"SignedTid\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            signedStartsOn: {\n                serializedName: \"SignedStart\",\n                required: true,\n                xmlName: \"SignedStart\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            signedExpiresOn: {\n                serializedName: \"SignedExpiry\",\n                required: true,\n                xmlName: \"SignedExpiry\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            signedService: {\n                serializedName: \"SignedService\",\n                required: true,\n                xmlName: \"SignedService\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            signedVersion: {\n                serializedName: \"SignedVersion\",\n                required: true,\n                xmlName: \"SignedVersion\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            value: {\n                serializedName: \"Value\",\n                required: true,\n                xmlName: \"Value\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const FilterBlobSegment = {\n    serializedName: \"FilterBlobSegment\",\n    xmlName: \"EnumerationResults\",\n    type: {\n        name: \"Composite\",\n        className: \"FilterBlobSegment\",\n        modelProperties: {\n            serviceEndpoint: {\n                serializedName: \"ServiceEndpoint\",\n                required: true,\n                xmlName: \"ServiceEndpoint\",\n                xmlIsAttribute: true,\n                type: {\n                    name: \"String\",\n                },\n            },\n            where: {\n                serializedName: \"Where\",\n                required: true,\n                xmlName: \"Where\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            blobs: {\n                serializedName: \"Blobs\",\n                required: true,\n                xmlName: \"Blobs\",\n                xmlIsWrapped: true,\n                xmlElementName: \"Blob\",\n                type: {\n                    name: \"Sequence\",\n                    element: {\n                        type: {\n                            name: \"Composite\",\n                            className: \"FilterBlobItem\",\n                        },\n                    },\n                },\n            },\n            continuationToken: {\n                serializedName: \"NextMarker\",\n                xmlName: \"NextMarker\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const FilterBlobItem = {\n    serializedName: \"FilterBlobItem\",\n    xmlName: \"Blob\",\n    type: {\n        name: \"Composite\",\n        className: \"FilterBlobItem\",\n        modelProperties: {\n            name: {\n                serializedName: \"Name\",\n                required: true,\n                xmlName: \"Name\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            containerName: {\n                serializedName: \"ContainerName\",\n                required: true,\n                xmlName: \"ContainerName\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            tags: {\n                serializedName: \"Tags\",\n                xmlName: \"Tags\",\n                type: {\n                    name: \"Composite\",\n                    className: \"BlobTags\",\n                },\n            },\n        },\n    },\n};\nexport const BlobTags = {\n    serializedName: \"BlobTags\",\n    xmlName: \"Tags\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobTags\",\n        modelProperties: {\n            blobTagSet: {\n                serializedName: \"BlobTagSet\",\n                required: true,\n                xmlName: \"TagSet\",\n                xmlIsWrapped: true,\n                xmlElementName: \"Tag\",\n                type: {\n                    name: \"Sequence\",\n                    element: {\n                        type: {\n                            name: \"Composite\",\n                            className: \"BlobTag\",\n                        },\n                    },\n                },\n            },\n        },\n    },\n};\nexport const BlobTag = {\n    serializedName: \"BlobTag\",\n    xmlName: \"Tag\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobTag\",\n        modelProperties: {\n            key: {\n                serializedName: \"Key\",\n                required: true,\n                xmlName: \"Key\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            value: {\n                serializedName: \"Value\",\n                required: true,\n                xmlName: \"Value\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const SignedIdentifier = {\n    serializedName: \"SignedIdentifier\",\n    xmlName: \"SignedIdentifier\",\n    type: {\n        name: \"Composite\",\n        className: \"SignedIdentifier\",\n        modelProperties: {\n            id: {\n                serializedName: \"Id\",\n                required: true,\n                xmlName: \"Id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            accessPolicy: {\n                serializedName: \"AccessPolicy\",\n                xmlName: \"AccessPolicy\",\n                type: {\n                    name: \"Composite\",\n                    className: \"AccessPolicy\",\n                },\n            },\n        },\n    },\n};\nexport const AccessPolicy = {\n    serializedName: \"AccessPolicy\",\n    type: {\n        name: \"Composite\",\n        className: \"AccessPolicy\",\n        modelProperties: {\n            startsOn: {\n                serializedName: \"Start\",\n                xmlName: \"Start\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            expiresOn: {\n                serializedName: \"Expiry\",\n                xmlName: \"Expiry\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            permissions: {\n                serializedName: \"Permission\",\n                xmlName: \"Permission\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ListBlobsFlatSegmentResponse = {\n    serializedName: \"ListBlobsFlatSegmentResponse\",\n    xmlName: \"EnumerationResults\",\n    type: {\n        name: \"Composite\",\n        className: \"ListBlobsFlatSegmentResponse\",\n        modelProperties: {\n            serviceEndpoint: {\n                serializedName: \"ServiceEndpoint\",\n                required: true,\n                xmlName: \"ServiceEndpoint\",\n                xmlIsAttribute: true,\n                type: {\n                    name: \"String\",\n                },\n            },\n            containerName: {\n                serializedName: \"ContainerName\",\n                required: true,\n                xmlName: \"ContainerName\",\n                xmlIsAttribute: true,\n                type: {\n                    name: \"String\",\n                },\n            },\n            prefix: {\n                serializedName: \"Prefix\",\n                xmlName: \"Prefix\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            marker: {\n                serializedName: \"Marker\",\n                xmlName: \"Marker\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            maxPageSize: {\n                serializedName: \"MaxResults\",\n                xmlName: \"MaxResults\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            segment: {\n                serializedName: \"Segment\",\n                xmlName: \"Blobs\",\n                type: {\n                    name: \"Composite\",\n                    className: \"BlobFlatListSegment\",\n                },\n            },\n            continuationToken: {\n                serializedName: \"NextMarker\",\n                xmlName: \"NextMarker\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobFlatListSegment = {\n    serializedName: \"BlobFlatListSegment\",\n    xmlName: \"Blobs\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobFlatListSegment\",\n        modelProperties: {\n            blobItems: {\n                serializedName: \"BlobItems\",\n                required: true,\n                xmlName: \"BlobItems\",\n                xmlElementName: \"Blob\",\n                type: {\n                    name: \"Sequence\",\n                    element: {\n                        type: {\n                            name: \"Composite\",\n                            className: \"BlobItemInternal\",\n                        },\n                    },\n                },\n            },\n        },\n    },\n};\nexport const BlobItemInternal = {\n    serializedName: \"BlobItemInternal\",\n    xmlName: \"Blob\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobItemInternal\",\n        modelProperties: {\n            name: {\n                serializedName: \"Name\",\n                xmlName: \"Name\",\n                type: {\n                    name: \"Composite\",\n                    className: \"BlobName\",\n                },\n            },\n            deleted: {\n                serializedName: \"Deleted\",\n                required: true,\n                xmlName: \"Deleted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            snapshot: {\n                serializedName: \"Snapshot\",\n                required: true,\n                xmlName: \"Snapshot\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            versionId: {\n                serializedName: \"VersionId\",\n                xmlName: \"VersionId\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            isCurrentVersion: {\n                serializedName: \"IsCurrentVersion\",\n                xmlName: \"IsCurrentVersion\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            properties: {\n                serializedName: \"Properties\",\n                xmlName: \"Properties\",\n                type: {\n                    name: \"Composite\",\n                    className: \"BlobPropertiesInternal\",\n                },\n            },\n            metadata: {\n                serializedName: \"Metadata\",\n                xmlName: \"Metadata\",\n                type: {\n                    name: \"Dictionary\",\n                    value: { type: { name: \"String\" } },\n                },\n            },\n            blobTags: {\n                serializedName: \"BlobTags\",\n                xmlName: \"Tags\",\n                type: {\n                    name: \"Composite\",\n                    className: \"BlobTags\",\n                },\n            },\n            objectReplicationMetadata: {\n                serializedName: \"ObjectReplicationMetadata\",\n                xmlName: \"OrMetadata\",\n                type: {\n                    name: \"Dictionary\",\n                    value: { type: { name: \"String\" } },\n                },\n            },\n            hasVersionsOnly: {\n                serializedName: \"HasVersionsOnly\",\n                xmlName: \"HasVersionsOnly\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n        },\n    },\n};\nexport const BlobName = {\n    serializedName: \"BlobName\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobName\",\n        modelProperties: {\n            encoded: {\n                serializedName: \"Encoded\",\n                xmlName: \"Encoded\",\n                xmlIsAttribute: true,\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            content: {\n                serializedName: \"content\",\n                xmlName: \"content\",\n                xmlIsMsText: true,\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobPropertiesInternal = {\n    serializedName: \"BlobPropertiesInternal\",\n    xmlName: \"Properties\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobPropertiesInternal\",\n        modelProperties: {\n            createdOn: {\n                serializedName: \"Creation-Time\",\n                xmlName: \"Creation-Time\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            lastModified: {\n                serializedName: \"Last-Modified\",\n                required: true,\n                xmlName: \"Last-Modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            etag: {\n                serializedName: \"Etag\",\n                required: true,\n                xmlName: \"Etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentLength: {\n                serializedName: \"Content-Length\",\n                xmlName: \"Content-Length\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            contentType: {\n                serializedName: \"Content-Type\",\n                xmlName: \"Content-Type\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentEncoding: {\n                serializedName: \"Content-Encoding\",\n                xmlName: \"Content-Encoding\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentLanguage: {\n                serializedName: \"Content-Language\",\n                xmlName: \"Content-Language\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentMD5: {\n                serializedName: \"Content-MD5\",\n                xmlName: \"Content-MD5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            contentDisposition: {\n                serializedName: \"Content-Disposition\",\n                xmlName: \"Content-Disposition\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            cacheControl: {\n                serializedName: \"Cache-Control\",\n                xmlName: \"Cache-Control\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            blobSequenceNumber: {\n                serializedName: \"x-ms-blob-sequence-number\",\n                xmlName: \"x-ms-blob-sequence-number\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            blobType: {\n                serializedName: \"BlobType\",\n                xmlName: \"BlobType\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"BlockBlob\", \"PageBlob\", \"AppendBlob\"],\n                },\n            },\n            leaseStatus: {\n                serializedName: \"LeaseStatus\",\n                xmlName: \"LeaseStatus\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"locked\", \"unlocked\"],\n                },\n            },\n            leaseState: {\n                serializedName: \"LeaseState\",\n                xmlName: \"LeaseState\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\n                        \"available\",\n                        \"leased\",\n                        \"expired\",\n                        \"breaking\",\n                        \"broken\",\n                    ],\n                },\n            },\n            leaseDuration: {\n                serializedName: \"LeaseDuration\",\n                xmlName: \"LeaseDuration\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"infinite\", \"fixed\"],\n                },\n            },\n            copyId: {\n                serializedName: \"CopyId\",\n                xmlName: \"CopyId\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copyStatus: {\n                serializedName: \"CopyStatus\",\n                xmlName: \"CopyStatus\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"],\n                },\n            },\n            copySource: {\n                serializedName: \"CopySource\",\n                xmlName: \"CopySource\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copyProgress: {\n                serializedName: \"CopyProgress\",\n                xmlName: \"CopyProgress\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copyCompletedOn: {\n                serializedName: \"CopyCompletionTime\",\n                xmlName: \"CopyCompletionTime\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            copyStatusDescription: {\n                serializedName: \"CopyStatusDescription\",\n                xmlName: \"CopyStatusDescription\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            serverEncrypted: {\n                serializedName: \"ServerEncrypted\",\n                xmlName: \"ServerEncrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            incrementalCopy: {\n                serializedName: \"IncrementalCopy\",\n                xmlName: \"IncrementalCopy\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            destinationSnapshot: {\n                serializedName: \"DestinationSnapshot\",\n                xmlName: \"DestinationSnapshot\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            deletedOn: {\n                serializedName: \"DeletedTime\",\n                xmlName: \"DeletedTime\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            remainingRetentionDays: {\n                serializedName: \"RemainingRetentionDays\",\n                xmlName: \"RemainingRetentionDays\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            accessTier: {\n                serializedName: \"AccessTier\",\n                xmlName: \"AccessTier\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\n                        \"P4\",\n                        \"P6\",\n                        \"P10\",\n                        \"P15\",\n                        \"P20\",\n                        \"P30\",\n                        \"P40\",\n                        \"P50\",\n                        \"P60\",\n                        \"P70\",\n                        \"P80\",\n                        \"Hot\",\n                        \"Cool\",\n                        \"Archive\",\n                        \"Cold\",\n                    ],\n                },\n            },\n            accessTierInferred: {\n                serializedName: \"AccessTierInferred\",\n                xmlName: \"AccessTierInferred\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            archiveStatus: {\n                serializedName: \"ArchiveStatus\",\n                xmlName: \"ArchiveStatus\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\n                        \"rehydrate-pending-to-hot\",\n                        \"rehydrate-pending-to-cool\",\n                        \"rehydrate-pending-to-cold\",\n                    ],\n                },\n            },\n            customerProvidedKeySha256: {\n                serializedName: \"CustomerProvidedKeySha256\",\n                xmlName: \"CustomerProvidedKeySha256\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"EncryptionScope\",\n                xmlName: \"EncryptionScope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            accessTierChangedOn: {\n                serializedName: \"AccessTierChangeTime\",\n                xmlName: \"AccessTierChangeTime\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            tagCount: {\n                serializedName: \"TagCount\",\n                xmlName: \"TagCount\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            expiresOn: {\n                serializedName: \"Expiry-Time\",\n                xmlName: \"Expiry-Time\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            isSealed: {\n                serializedName: \"Sealed\",\n                xmlName: \"Sealed\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            rehydratePriority: {\n                serializedName: \"RehydratePriority\",\n                xmlName: \"RehydratePriority\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"High\", \"Standard\"],\n                },\n            },\n            lastAccessedOn: {\n                serializedName: \"LastAccessTime\",\n                xmlName: \"LastAccessTime\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            immutabilityPolicyExpiresOn: {\n                serializedName: \"ImmutabilityPolicyUntilDate\",\n                xmlName: \"ImmutabilityPolicyUntilDate\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            immutabilityPolicyMode: {\n                serializedName: \"ImmutabilityPolicyMode\",\n                xmlName: \"ImmutabilityPolicyMode\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"Mutable\", \"Unlocked\", \"Locked\"],\n                },\n            },\n            legalHold: {\n                serializedName: \"LegalHold\",\n                xmlName: \"LegalHold\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n        },\n    },\n};\nexport const ListBlobsHierarchySegmentResponse = {\n    serializedName: \"ListBlobsHierarchySegmentResponse\",\n    xmlName: \"EnumerationResults\",\n    type: {\n        name: \"Composite\",\n        className: \"ListBlobsHierarchySegmentResponse\",\n        modelProperties: {\n            serviceEndpoint: {\n                serializedName: \"ServiceEndpoint\",\n                required: true,\n                xmlName: \"ServiceEndpoint\",\n                xmlIsAttribute: true,\n                type: {\n                    name: \"String\",\n                },\n            },\n            containerName: {\n                serializedName: \"ContainerName\",\n                required: true,\n                xmlName: \"ContainerName\",\n                xmlIsAttribute: true,\n                type: {\n                    name: \"String\",\n                },\n            },\n            prefix: {\n                serializedName: \"Prefix\",\n                xmlName: \"Prefix\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            marker: {\n                serializedName: \"Marker\",\n                xmlName: \"Marker\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            maxPageSize: {\n                serializedName: \"MaxResults\",\n                xmlName: \"MaxResults\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            delimiter: {\n                serializedName: \"Delimiter\",\n                xmlName: \"Delimiter\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            segment: {\n                serializedName: \"Segment\",\n                xmlName: \"Blobs\",\n                type: {\n                    name: \"Composite\",\n                    className: \"BlobHierarchyListSegment\",\n                },\n            },\n            continuationToken: {\n                serializedName: \"NextMarker\",\n                xmlName: \"NextMarker\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobHierarchyListSegment = {\n    serializedName: \"BlobHierarchyListSegment\",\n    xmlName: \"Blobs\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobHierarchyListSegment\",\n        modelProperties: {\n            blobPrefixes: {\n                serializedName: \"BlobPrefixes\",\n                xmlName: \"BlobPrefixes\",\n                xmlElementName: \"BlobPrefix\",\n                type: {\n                    name: \"Sequence\",\n                    element: {\n                        type: {\n                            name: \"Composite\",\n                            className: \"BlobPrefix\",\n                        },\n                    },\n                },\n            },\n            blobItems: {\n                serializedName: \"BlobItems\",\n                required: true,\n                xmlName: \"BlobItems\",\n                xmlElementName: \"Blob\",\n                type: {\n                    name: \"Sequence\",\n                    element: {\n                        type: {\n                            name: \"Composite\",\n                            className: \"BlobItemInternal\",\n                        },\n                    },\n                },\n            },\n        },\n    },\n};\nexport const BlobPrefix = {\n    serializedName: \"BlobPrefix\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobPrefix\",\n        modelProperties: {\n            name: {\n                serializedName: \"Name\",\n                xmlName: \"Name\",\n                type: {\n                    name: \"Composite\",\n                    className: \"BlobName\",\n                },\n            },\n        },\n    },\n};\nexport const BlockLookupList = {\n    serializedName: \"BlockLookupList\",\n    xmlName: \"BlockList\",\n    type: {\n        name: \"Composite\",\n        className: \"BlockLookupList\",\n        modelProperties: {\n            committed: {\n                serializedName: \"Committed\",\n                xmlName: \"Committed\",\n                xmlElementName: \"Committed\",\n                type: {\n                    name: \"Sequence\",\n                    element: {\n                        type: {\n                            name: \"String\",\n                        },\n                    },\n                },\n            },\n            uncommitted: {\n                serializedName: \"Uncommitted\",\n                xmlName: \"Uncommitted\",\n                xmlElementName: \"Uncommitted\",\n                type: {\n                    name: \"Sequence\",\n                    element: {\n                        type: {\n                            name: \"String\",\n                        },\n                    },\n                },\n            },\n            latest: {\n                serializedName: \"Latest\",\n                xmlName: \"Latest\",\n                xmlElementName: \"Latest\",\n                type: {\n                    name: \"Sequence\",\n                    element: {\n                        type: {\n                            name: \"String\",\n                        },\n                    },\n                },\n            },\n        },\n    },\n};\nexport const BlockList = {\n    serializedName: \"BlockList\",\n    type: {\n        name: \"Composite\",\n        className: \"BlockList\",\n        modelProperties: {\n            committedBlocks: {\n                serializedName: \"CommittedBlocks\",\n                xmlName: \"CommittedBlocks\",\n                xmlIsWrapped: true,\n                xmlElementName: \"Block\",\n                type: {\n                    name: \"Sequence\",\n                    element: {\n                        type: {\n                            name: \"Composite\",\n                            className: \"Block\",\n                        },\n                    },\n                },\n            },\n            uncommittedBlocks: {\n                serializedName: \"UncommittedBlocks\",\n                xmlName: \"UncommittedBlocks\",\n                xmlIsWrapped: true,\n                xmlElementName: \"Block\",\n                type: {\n                    name: \"Sequence\",\n                    element: {\n                        type: {\n                            name: \"Composite\",\n                            className: \"Block\",\n                        },\n                    },\n                },\n            },\n        },\n    },\n};\nexport const Block = {\n    serializedName: \"Block\",\n    type: {\n        name: \"Composite\",\n        className: \"Block\",\n        modelProperties: {\n            name: {\n                serializedName: \"Name\",\n                required: true,\n                xmlName: \"Name\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            size: {\n                serializedName: \"Size\",\n                required: true,\n                xmlName: \"Size\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n        },\n    },\n};\nexport const PageList = {\n    serializedName: \"PageList\",\n    type: {\n        name: \"Composite\",\n        className: \"PageList\",\n        modelProperties: {\n            pageRange: {\n                serializedName: \"PageRange\",\n                xmlName: \"PageRange\",\n                xmlElementName: \"PageRange\",\n                type: {\n                    name: \"Sequence\",\n                    element: {\n                        type: {\n                            name: \"Composite\",\n                            className: \"PageRange\",\n                        },\n                    },\n                },\n            },\n            clearRange: {\n                serializedName: \"ClearRange\",\n                xmlName: \"ClearRange\",\n                xmlElementName: \"ClearRange\",\n                type: {\n                    name: \"Sequence\",\n                    element: {\n                        type: {\n                            name: \"Composite\",\n                            className: \"ClearRange\",\n                        },\n                    },\n                },\n            },\n            continuationToken: {\n                serializedName: \"NextMarker\",\n                xmlName: \"NextMarker\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageRange = {\n    serializedName: \"PageRange\",\n    xmlName: \"PageRange\",\n    type: {\n        name: \"Composite\",\n        className: \"PageRange\",\n        modelProperties: {\n            start: {\n                serializedName: \"Start\",\n                required: true,\n                xmlName: \"Start\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            end: {\n                serializedName: \"End\",\n                required: true,\n                xmlName: \"End\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n        },\n    },\n};\nexport const ClearRange = {\n    serializedName: \"ClearRange\",\n    xmlName: \"ClearRange\",\n    type: {\n        name: \"Composite\",\n        className: \"ClearRange\",\n        modelProperties: {\n            start: {\n                serializedName: \"Start\",\n                required: true,\n                xmlName: \"Start\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            end: {\n                serializedName: \"End\",\n                required: true,\n                xmlName: \"End\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n        },\n    },\n};\nexport const QueryRequest = {\n    serializedName: \"QueryRequest\",\n    xmlName: \"QueryRequest\",\n    type: {\n        name: \"Composite\",\n        className: \"QueryRequest\",\n        modelProperties: {\n            queryType: {\n                serializedName: \"QueryType\",\n                required: true,\n                xmlName: \"QueryType\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            expression: {\n                serializedName: \"Expression\",\n                required: true,\n                xmlName: \"Expression\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            inputSerialization: {\n                serializedName: \"InputSerialization\",\n                xmlName: \"InputSerialization\",\n                type: {\n                    name: \"Composite\",\n                    className: \"QuerySerialization\",\n                },\n            },\n            outputSerialization: {\n                serializedName: \"OutputSerialization\",\n                xmlName: \"OutputSerialization\",\n                type: {\n                    name: \"Composite\",\n                    className: \"QuerySerialization\",\n                },\n            },\n        },\n    },\n};\nexport const QuerySerialization = {\n    serializedName: \"QuerySerialization\",\n    type: {\n        name: \"Composite\",\n        className: \"QuerySerialization\",\n        modelProperties: {\n            format: {\n                serializedName: \"Format\",\n                xmlName: \"Format\",\n                type: {\n                    name: \"Composite\",\n                    className: \"QueryFormat\",\n                },\n            },\n        },\n    },\n};\nexport const QueryFormat = {\n    serializedName: \"QueryFormat\",\n    type: {\n        name: \"Composite\",\n        className: \"QueryFormat\",\n        modelProperties: {\n            type: {\n                serializedName: \"Type\",\n                required: true,\n                xmlName: \"Type\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"delimited\", \"json\", \"arrow\", \"parquet\"],\n                },\n            },\n            delimitedTextConfiguration: {\n                serializedName: \"DelimitedTextConfiguration\",\n                xmlName: \"DelimitedTextConfiguration\",\n                type: {\n                    name: \"Composite\",\n                    className: \"DelimitedTextConfiguration\",\n                },\n            },\n            jsonTextConfiguration: {\n                serializedName: \"JsonTextConfiguration\",\n                xmlName: \"JsonTextConfiguration\",\n                type: {\n                    name: \"Composite\",\n                    className: \"JsonTextConfiguration\",\n                },\n            },\n            arrowConfiguration: {\n                serializedName: \"ArrowConfiguration\",\n                xmlName: \"ArrowConfiguration\",\n                type: {\n                    name: \"Composite\",\n                    className: \"ArrowConfiguration\",\n                },\n            },\n            parquetTextConfiguration: {\n                serializedName: \"ParquetTextConfiguration\",\n                xmlName: \"ParquetTextConfiguration\",\n                type: {\n                    name: \"Dictionary\",\n                    value: { type: { name: \"any\" } },\n                },\n            },\n        },\n    },\n};\nexport const DelimitedTextConfiguration = {\n    serializedName: \"DelimitedTextConfiguration\",\n    xmlName: \"DelimitedTextConfiguration\",\n    type: {\n        name: \"Composite\",\n        className: \"DelimitedTextConfiguration\",\n        modelProperties: {\n            columnSeparator: {\n                serializedName: \"ColumnSeparator\",\n                xmlName: \"ColumnSeparator\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            fieldQuote: {\n                serializedName: \"FieldQuote\",\n                xmlName: \"FieldQuote\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            recordSeparator: {\n                serializedName: \"RecordSeparator\",\n                xmlName: \"RecordSeparator\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            escapeChar: {\n                serializedName: \"EscapeChar\",\n                xmlName: \"EscapeChar\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            headersPresent: {\n                serializedName: \"HeadersPresent\",\n                xmlName: \"HasHeaders\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n        },\n    },\n};\nexport const JsonTextConfiguration = {\n    serializedName: \"JsonTextConfiguration\",\n    xmlName: \"JsonTextConfiguration\",\n    type: {\n        name: \"Composite\",\n        className: \"JsonTextConfiguration\",\n        modelProperties: {\n            recordSeparator: {\n                serializedName: \"RecordSeparator\",\n                xmlName: \"RecordSeparator\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ArrowConfiguration = {\n    serializedName: \"ArrowConfiguration\",\n    xmlName: \"ArrowConfiguration\",\n    type: {\n        name: \"Composite\",\n        className: \"ArrowConfiguration\",\n        modelProperties: {\n            schema: {\n                serializedName: \"Schema\",\n                required: true,\n                xmlName: \"Schema\",\n                xmlIsWrapped: true,\n                xmlElementName: \"Field\",\n                type: {\n                    name: \"Sequence\",\n                    element: {\n                        type: {\n                            name: \"Composite\",\n                            className: \"ArrowField\",\n                        },\n                    },\n                },\n            },\n        },\n    },\n};\nexport const ArrowField = {\n    serializedName: \"ArrowField\",\n    xmlName: \"Field\",\n    type: {\n        name: \"Composite\",\n        className: \"ArrowField\",\n        modelProperties: {\n            type: {\n                serializedName: \"Type\",\n                required: true,\n                xmlName: \"Type\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            name: {\n                serializedName: \"Name\",\n                xmlName: \"Name\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            precision: {\n                serializedName: \"Precision\",\n                xmlName: \"Precision\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            scale: {\n                serializedName: \"Scale\",\n                xmlName: \"Scale\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n        },\n    },\n};\nexport const ServiceSetPropertiesHeaders = {\n    serializedName: \"Service_setPropertiesHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ServiceSetPropertiesHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ServiceSetPropertiesExceptionHeaders = {\n    serializedName: \"Service_setPropertiesExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ServiceSetPropertiesExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ServiceGetPropertiesHeaders = {\n    serializedName: \"Service_getPropertiesHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ServiceGetPropertiesHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ServiceGetPropertiesExceptionHeaders = {\n    serializedName: \"Service_getPropertiesExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ServiceGetPropertiesExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ServiceGetStatisticsHeaders = {\n    serializedName: \"Service_getStatisticsHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ServiceGetStatisticsHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ServiceGetStatisticsExceptionHeaders = {\n    serializedName: \"Service_getStatisticsExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ServiceGetStatisticsExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ServiceListContainersSegmentHeaders = {\n    serializedName: \"Service_listContainersSegmentHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ServiceListContainersSegmentHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ServiceListContainersSegmentExceptionHeaders = {\n    serializedName: \"Service_listContainersSegmentExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ServiceListContainersSegmentExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ServiceGetUserDelegationKeyHeaders = {\n    serializedName: \"Service_getUserDelegationKeyHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ServiceGetUserDelegationKeyHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ServiceGetUserDelegationKeyExceptionHeaders = {\n    serializedName: \"Service_getUserDelegationKeyExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ServiceGetUserDelegationKeyExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ServiceGetAccountInfoHeaders = {\n    serializedName: \"Service_getAccountInfoHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ServiceGetAccountInfoHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            skuName: {\n                serializedName: \"x-ms-sku-name\",\n                xmlName: \"x-ms-sku-name\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\n                        \"Standard_LRS\",\n                        \"Standard_GRS\",\n                        \"Standard_RAGRS\",\n                        \"Standard_ZRS\",\n                        \"Premium_LRS\",\n                    ],\n                },\n            },\n            accountKind: {\n                serializedName: \"x-ms-account-kind\",\n                xmlName: \"x-ms-account-kind\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\n                        \"Storage\",\n                        \"BlobStorage\",\n                        \"StorageV2\",\n                        \"FileStorage\",\n                        \"BlockBlobStorage\",\n                    ],\n                },\n            },\n            isHierarchicalNamespaceEnabled: {\n                serializedName: \"x-ms-is-hns-enabled\",\n                xmlName: \"x-ms-is-hns-enabled\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ServiceGetAccountInfoExceptionHeaders = {\n    serializedName: \"Service_getAccountInfoExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ServiceGetAccountInfoExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ServiceSubmitBatchHeaders = {\n    serializedName: \"Service_submitBatchHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ServiceSubmitBatchHeaders\",\n        modelProperties: {\n            contentType: {\n                serializedName: \"content-type\",\n                xmlName: \"content-type\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ServiceSubmitBatchExceptionHeaders = {\n    serializedName: \"Service_submitBatchExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ServiceSubmitBatchExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ServiceFilterBlobsHeaders = {\n    serializedName: \"Service_filterBlobsHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ServiceFilterBlobsHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ServiceFilterBlobsExceptionHeaders = {\n    serializedName: \"Service_filterBlobsExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ServiceFilterBlobsExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerCreateHeaders = {\n    serializedName: \"Container_createHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerCreateHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerCreateExceptionHeaders = {\n    serializedName: \"Container_createExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerCreateExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerGetPropertiesHeaders = {\n    serializedName: \"Container_getPropertiesHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerGetPropertiesHeaders\",\n        modelProperties: {\n            metadata: {\n                serializedName: \"x-ms-meta\",\n                headerCollectionPrefix: \"x-ms-meta-\",\n                xmlName: \"x-ms-meta\",\n                type: {\n                    name: \"Dictionary\",\n                    value: { type: { name: \"String\" } },\n                },\n            },\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            leaseDuration: {\n                serializedName: \"x-ms-lease-duration\",\n                xmlName: \"x-ms-lease-duration\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"infinite\", \"fixed\"],\n                },\n            },\n            leaseState: {\n                serializedName: \"x-ms-lease-state\",\n                xmlName: \"x-ms-lease-state\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\n                        \"available\",\n                        \"leased\",\n                        \"expired\",\n                        \"breaking\",\n                        \"broken\",\n                    ],\n                },\n            },\n            leaseStatus: {\n                serializedName: \"x-ms-lease-status\",\n                xmlName: \"x-ms-lease-status\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"locked\", \"unlocked\"],\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            blobPublicAccess: {\n                serializedName: \"x-ms-blob-public-access\",\n                xmlName: \"x-ms-blob-public-access\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"container\", \"blob\"],\n                },\n            },\n            hasImmutabilityPolicy: {\n                serializedName: \"x-ms-has-immutability-policy\",\n                xmlName: \"x-ms-has-immutability-policy\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            hasLegalHold: {\n                serializedName: \"x-ms-has-legal-hold\",\n                xmlName: \"x-ms-has-legal-hold\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            defaultEncryptionScope: {\n                serializedName: \"x-ms-default-encryption-scope\",\n                xmlName: \"x-ms-default-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            denyEncryptionScopeOverride: {\n                serializedName: \"x-ms-deny-encryption-scope-override\",\n                xmlName: \"x-ms-deny-encryption-scope-override\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            isImmutableStorageWithVersioningEnabled: {\n                serializedName: \"x-ms-immutable-storage-with-versioning-enabled\",\n                xmlName: \"x-ms-immutable-storage-with-versioning-enabled\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerGetPropertiesExceptionHeaders = {\n    serializedName: \"Container_getPropertiesExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerGetPropertiesExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerDeleteHeaders = {\n    serializedName: \"Container_deleteHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerDeleteHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerDeleteExceptionHeaders = {\n    serializedName: \"Container_deleteExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerDeleteExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerSetMetadataHeaders = {\n    serializedName: \"Container_setMetadataHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerSetMetadataHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerSetMetadataExceptionHeaders = {\n    serializedName: \"Container_setMetadataExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerSetMetadataExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerGetAccessPolicyHeaders = {\n    serializedName: \"Container_getAccessPolicyHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerGetAccessPolicyHeaders\",\n        modelProperties: {\n            blobPublicAccess: {\n                serializedName: \"x-ms-blob-public-access\",\n                xmlName: \"x-ms-blob-public-access\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"container\", \"blob\"],\n                },\n            },\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerGetAccessPolicyExceptionHeaders = {\n    serializedName: \"Container_getAccessPolicyExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerGetAccessPolicyExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerSetAccessPolicyHeaders = {\n    serializedName: \"Container_setAccessPolicyHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerSetAccessPolicyHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerSetAccessPolicyExceptionHeaders = {\n    serializedName: \"Container_setAccessPolicyExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerSetAccessPolicyExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerRestoreHeaders = {\n    serializedName: \"Container_restoreHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerRestoreHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerRestoreExceptionHeaders = {\n    serializedName: \"Container_restoreExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerRestoreExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerRenameHeaders = {\n    serializedName: \"Container_renameHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerRenameHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerRenameExceptionHeaders = {\n    serializedName: \"Container_renameExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerRenameExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerSubmitBatchHeaders = {\n    serializedName: \"Container_submitBatchHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerSubmitBatchHeaders\",\n        modelProperties: {\n            contentType: {\n                serializedName: \"content-type\",\n                xmlName: \"content-type\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerSubmitBatchExceptionHeaders = {\n    serializedName: \"Container_submitBatchExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerSubmitBatchExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerFilterBlobsHeaders = {\n    serializedName: \"Container_filterBlobsHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerFilterBlobsHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerFilterBlobsExceptionHeaders = {\n    serializedName: \"Container_filterBlobsExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerFilterBlobsExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerAcquireLeaseHeaders = {\n    serializedName: \"Container_acquireLeaseHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerAcquireLeaseHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            leaseId: {\n                serializedName: \"x-ms-lease-id\",\n                xmlName: \"x-ms-lease-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerAcquireLeaseExceptionHeaders = {\n    serializedName: \"Container_acquireLeaseExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerAcquireLeaseExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerReleaseLeaseHeaders = {\n    serializedName: \"Container_releaseLeaseHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerReleaseLeaseHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerReleaseLeaseExceptionHeaders = {\n    serializedName: \"Container_releaseLeaseExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerReleaseLeaseExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerRenewLeaseHeaders = {\n    serializedName: \"Container_renewLeaseHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerRenewLeaseHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            leaseId: {\n                serializedName: \"x-ms-lease-id\",\n                xmlName: \"x-ms-lease-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerRenewLeaseExceptionHeaders = {\n    serializedName: \"Container_renewLeaseExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerRenewLeaseExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerBreakLeaseHeaders = {\n    serializedName: \"Container_breakLeaseHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerBreakLeaseHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            leaseTime: {\n                serializedName: \"x-ms-lease-time\",\n                xmlName: \"x-ms-lease-time\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerBreakLeaseExceptionHeaders = {\n    serializedName: \"Container_breakLeaseExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerBreakLeaseExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerChangeLeaseHeaders = {\n    serializedName: \"Container_changeLeaseHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerChangeLeaseHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            leaseId: {\n                serializedName: \"x-ms-lease-id\",\n                xmlName: \"x-ms-lease-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerChangeLeaseExceptionHeaders = {\n    serializedName: \"Container_changeLeaseExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerChangeLeaseExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerListBlobFlatSegmentHeaders = {\n    serializedName: \"Container_listBlobFlatSegmentHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerListBlobFlatSegmentHeaders\",\n        modelProperties: {\n            contentType: {\n                serializedName: \"content-type\",\n                xmlName: \"content-type\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerListBlobFlatSegmentExceptionHeaders = {\n    serializedName: \"Container_listBlobFlatSegmentExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerListBlobFlatSegmentExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerListBlobHierarchySegmentHeaders = {\n    serializedName: \"Container_listBlobHierarchySegmentHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerListBlobHierarchySegmentHeaders\",\n        modelProperties: {\n            contentType: {\n                serializedName: \"content-type\",\n                xmlName: \"content-type\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerListBlobHierarchySegmentExceptionHeaders = {\n    serializedName: \"Container_listBlobHierarchySegmentExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerListBlobHierarchySegmentExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerGetAccountInfoHeaders = {\n    serializedName: \"Container_getAccountInfoHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerGetAccountInfoHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            skuName: {\n                serializedName: \"x-ms-sku-name\",\n                xmlName: \"x-ms-sku-name\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\n                        \"Standard_LRS\",\n                        \"Standard_GRS\",\n                        \"Standard_RAGRS\",\n                        \"Standard_ZRS\",\n                        \"Premium_LRS\",\n                    ],\n                },\n            },\n            accountKind: {\n                serializedName: \"x-ms-account-kind\",\n                xmlName: \"x-ms-account-kind\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\n                        \"Storage\",\n                        \"BlobStorage\",\n                        \"StorageV2\",\n                        \"FileStorage\",\n                        \"BlockBlobStorage\",\n                    ],\n                },\n            },\n            isHierarchicalNamespaceEnabled: {\n                serializedName: \"x-ms-is-hns-enabled\",\n                xmlName: \"x-ms-is-hns-enabled\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n        },\n    },\n};\nexport const ContainerGetAccountInfoExceptionHeaders = {\n    serializedName: \"Container_getAccountInfoExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"ContainerGetAccountInfoExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobDownloadHeaders = {\n    serializedName: \"Blob_downloadHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobDownloadHeaders\",\n        modelProperties: {\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            createdOn: {\n                serializedName: \"x-ms-creation-time\",\n                xmlName: \"x-ms-creation-time\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            metadata: {\n                serializedName: \"x-ms-meta\",\n                headerCollectionPrefix: \"x-ms-meta-\",\n                xmlName: \"x-ms-meta\",\n                type: {\n                    name: \"Dictionary\",\n                    value: { type: { name: \"String\" } },\n                },\n            },\n            objectReplicationPolicyId: {\n                serializedName: \"x-ms-or-policy-id\",\n                xmlName: \"x-ms-or-policy-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            objectReplicationRules: {\n                serializedName: \"x-ms-or\",\n                headerCollectionPrefix: \"x-ms-or-\",\n                xmlName: \"x-ms-or\",\n                type: {\n                    name: \"Dictionary\",\n                    value: { type: { name: \"String\" } },\n                },\n            },\n            contentLength: {\n                serializedName: \"content-length\",\n                xmlName: \"content-length\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            contentType: {\n                serializedName: \"content-type\",\n                xmlName: \"content-type\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentRange: {\n                serializedName: \"content-range\",\n                xmlName: \"content-range\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentMD5: {\n                serializedName: \"content-md5\",\n                xmlName: \"content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            contentEncoding: {\n                serializedName: \"content-encoding\",\n                xmlName: \"content-encoding\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            cacheControl: {\n                serializedName: \"cache-control\",\n                xmlName: \"cache-control\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentDisposition: {\n                serializedName: \"content-disposition\",\n                xmlName: \"content-disposition\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentLanguage: {\n                serializedName: \"content-language\",\n                xmlName: \"content-language\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            blobSequenceNumber: {\n                serializedName: \"x-ms-blob-sequence-number\",\n                xmlName: \"x-ms-blob-sequence-number\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            blobType: {\n                serializedName: \"x-ms-blob-type\",\n                xmlName: \"x-ms-blob-type\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"BlockBlob\", \"PageBlob\", \"AppendBlob\"],\n                },\n            },\n            copyCompletedOn: {\n                serializedName: \"x-ms-copy-completion-time\",\n                xmlName: \"x-ms-copy-completion-time\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            copyStatusDescription: {\n                serializedName: \"x-ms-copy-status-description\",\n                xmlName: \"x-ms-copy-status-description\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copyId: {\n                serializedName: \"x-ms-copy-id\",\n                xmlName: \"x-ms-copy-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copyProgress: {\n                serializedName: \"x-ms-copy-progress\",\n                xmlName: \"x-ms-copy-progress\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copySource: {\n                serializedName: \"x-ms-copy-source\",\n                xmlName: \"x-ms-copy-source\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copyStatus: {\n                serializedName: \"x-ms-copy-status\",\n                xmlName: \"x-ms-copy-status\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"],\n                },\n            },\n            leaseDuration: {\n                serializedName: \"x-ms-lease-duration\",\n                xmlName: \"x-ms-lease-duration\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"infinite\", \"fixed\"],\n                },\n            },\n            leaseState: {\n                serializedName: \"x-ms-lease-state\",\n                xmlName: \"x-ms-lease-state\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\n                        \"available\",\n                        \"leased\",\n                        \"expired\",\n                        \"breaking\",\n                        \"broken\",\n                    ],\n                },\n            },\n            leaseStatus: {\n                serializedName: \"x-ms-lease-status\",\n                xmlName: \"x-ms-lease-status\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"locked\", \"unlocked\"],\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            versionId: {\n                serializedName: \"x-ms-version-id\",\n                xmlName: \"x-ms-version-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            isCurrentVersion: {\n                serializedName: \"x-ms-is-current-version\",\n                xmlName: \"x-ms-is-current-version\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            acceptRanges: {\n                serializedName: \"accept-ranges\",\n                xmlName: \"accept-ranges\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            blobCommittedBlockCount: {\n                serializedName: \"x-ms-blob-committed-block-count\",\n                xmlName: \"x-ms-blob-committed-block-count\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            isServerEncrypted: {\n                serializedName: \"x-ms-server-encrypted\",\n                xmlName: \"x-ms-server-encrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            encryptionKeySha256: {\n                serializedName: \"x-ms-encryption-key-sha256\",\n                xmlName: \"x-ms-encryption-key-sha256\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"x-ms-encryption-scope\",\n                xmlName: \"x-ms-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            blobContentMD5: {\n                serializedName: \"x-ms-blob-content-md5\",\n                xmlName: \"x-ms-blob-content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            tagCount: {\n                serializedName: \"x-ms-tag-count\",\n                xmlName: \"x-ms-tag-count\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            isSealed: {\n                serializedName: \"x-ms-blob-sealed\",\n                xmlName: \"x-ms-blob-sealed\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            lastAccessed: {\n                serializedName: \"x-ms-last-access-time\",\n                xmlName: \"x-ms-last-access-time\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            immutabilityPolicyExpiresOn: {\n                serializedName: \"x-ms-immutability-policy-until-date\",\n                xmlName: \"x-ms-immutability-policy-until-date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            immutabilityPolicyMode: {\n                serializedName: \"x-ms-immutability-policy-mode\",\n                xmlName: \"x-ms-immutability-policy-mode\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"Mutable\", \"Unlocked\", \"Locked\"],\n                },\n            },\n            legalHold: {\n                serializedName: \"x-ms-legal-hold\",\n                xmlName: \"x-ms-legal-hold\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentCrc64: {\n                serializedName: \"x-ms-content-crc64\",\n                xmlName: \"x-ms-content-crc64\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n        },\n    },\n};\nexport const BlobDownloadExceptionHeaders = {\n    serializedName: \"Blob_downloadExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobDownloadExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobGetPropertiesHeaders = {\n    serializedName: \"Blob_getPropertiesHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobGetPropertiesHeaders\",\n        modelProperties: {\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            createdOn: {\n                serializedName: \"x-ms-creation-time\",\n                xmlName: \"x-ms-creation-time\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            metadata: {\n                serializedName: \"x-ms-meta\",\n                headerCollectionPrefix: \"x-ms-meta-\",\n                xmlName: \"x-ms-meta\",\n                type: {\n                    name: \"Dictionary\",\n                    value: { type: { name: \"String\" } },\n                },\n            },\n            objectReplicationPolicyId: {\n                serializedName: \"x-ms-or-policy-id\",\n                xmlName: \"x-ms-or-policy-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            objectReplicationRules: {\n                serializedName: \"x-ms-or\",\n                headerCollectionPrefix: \"x-ms-or-\",\n                xmlName: \"x-ms-or\",\n                type: {\n                    name: \"Dictionary\",\n                    value: { type: { name: \"String\" } },\n                },\n            },\n            blobType: {\n                serializedName: \"x-ms-blob-type\",\n                xmlName: \"x-ms-blob-type\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"BlockBlob\", \"PageBlob\", \"AppendBlob\"],\n                },\n            },\n            copyCompletedOn: {\n                serializedName: \"x-ms-copy-completion-time\",\n                xmlName: \"x-ms-copy-completion-time\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            copyStatusDescription: {\n                serializedName: \"x-ms-copy-status-description\",\n                xmlName: \"x-ms-copy-status-description\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copyId: {\n                serializedName: \"x-ms-copy-id\",\n                xmlName: \"x-ms-copy-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copyProgress: {\n                serializedName: \"x-ms-copy-progress\",\n                xmlName: \"x-ms-copy-progress\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copySource: {\n                serializedName: \"x-ms-copy-source\",\n                xmlName: \"x-ms-copy-source\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copyStatus: {\n                serializedName: \"x-ms-copy-status\",\n                xmlName: \"x-ms-copy-status\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"],\n                },\n            },\n            isIncrementalCopy: {\n                serializedName: \"x-ms-incremental-copy\",\n                xmlName: \"x-ms-incremental-copy\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            destinationSnapshot: {\n                serializedName: \"x-ms-copy-destination-snapshot\",\n                xmlName: \"x-ms-copy-destination-snapshot\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            leaseDuration: {\n                serializedName: \"x-ms-lease-duration\",\n                xmlName: \"x-ms-lease-duration\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"infinite\", \"fixed\"],\n                },\n            },\n            leaseState: {\n                serializedName: \"x-ms-lease-state\",\n                xmlName: \"x-ms-lease-state\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\n                        \"available\",\n                        \"leased\",\n                        \"expired\",\n                        \"breaking\",\n                        \"broken\",\n                    ],\n                },\n            },\n            leaseStatus: {\n                serializedName: \"x-ms-lease-status\",\n                xmlName: \"x-ms-lease-status\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"locked\", \"unlocked\"],\n                },\n            },\n            contentLength: {\n                serializedName: \"content-length\",\n                xmlName: \"content-length\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            contentType: {\n                serializedName: \"content-type\",\n                xmlName: \"content-type\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentMD5: {\n                serializedName: \"content-md5\",\n                xmlName: \"content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            contentEncoding: {\n                serializedName: \"content-encoding\",\n                xmlName: \"content-encoding\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentDisposition: {\n                serializedName: \"content-disposition\",\n                xmlName: \"content-disposition\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentLanguage: {\n                serializedName: \"content-language\",\n                xmlName: \"content-language\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            cacheControl: {\n                serializedName: \"cache-control\",\n                xmlName: \"cache-control\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            blobSequenceNumber: {\n                serializedName: \"x-ms-blob-sequence-number\",\n                xmlName: \"x-ms-blob-sequence-number\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            acceptRanges: {\n                serializedName: \"accept-ranges\",\n                xmlName: \"accept-ranges\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            blobCommittedBlockCount: {\n                serializedName: \"x-ms-blob-committed-block-count\",\n                xmlName: \"x-ms-blob-committed-block-count\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            isServerEncrypted: {\n                serializedName: \"x-ms-server-encrypted\",\n                xmlName: \"x-ms-server-encrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            encryptionKeySha256: {\n                serializedName: \"x-ms-encryption-key-sha256\",\n                xmlName: \"x-ms-encryption-key-sha256\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"x-ms-encryption-scope\",\n                xmlName: \"x-ms-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            accessTier: {\n                serializedName: \"x-ms-access-tier\",\n                xmlName: \"x-ms-access-tier\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            accessTierInferred: {\n                serializedName: \"x-ms-access-tier-inferred\",\n                xmlName: \"x-ms-access-tier-inferred\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            archiveStatus: {\n                serializedName: \"x-ms-archive-status\",\n                xmlName: \"x-ms-archive-status\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            accessTierChangedOn: {\n                serializedName: \"x-ms-access-tier-change-time\",\n                xmlName: \"x-ms-access-tier-change-time\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            versionId: {\n                serializedName: \"x-ms-version-id\",\n                xmlName: \"x-ms-version-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            isCurrentVersion: {\n                serializedName: \"x-ms-is-current-version\",\n                xmlName: \"x-ms-is-current-version\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            tagCount: {\n                serializedName: \"x-ms-tag-count\",\n                xmlName: \"x-ms-tag-count\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            expiresOn: {\n                serializedName: \"x-ms-expiry-time\",\n                xmlName: \"x-ms-expiry-time\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            isSealed: {\n                serializedName: \"x-ms-blob-sealed\",\n                xmlName: \"x-ms-blob-sealed\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            rehydratePriority: {\n                serializedName: \"x-ms-rehydrate-priority\",\n                xmlName: \"x-ms-rehydrate-priority\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"High\", \"Standard\"],\n                },\n            },\n            lastAccessed: {\n                serializedName: \"x-ms-last-access-time\",\n                xmlName: \"x-ms-last-access-time\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            immutabilityPolicyExpiresOn: {\n                serializedName: \"x-ms-immutability-policy-until-date\",\n                xmlName: \"x-ms-immutability-policy-until-date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            immutabilityPolicyMode: {\n                serializedName: \"x-ms-immutability-policy-mode\",\n                xmlName: \"x-ms-immutability-policy-mode\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"Mutable\", \"Unlocked\", \"Locked\"],\n                },\n            },\n            legalHold: {\n                serializedName: \"x-ms-legal-hold\",\n                xmlName: \"x-ms-legal-hold\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobGetPropertiesExceptionHeaders = {\n    serializedName: \"Blob_getPropertiesExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobGetPropertiesExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobDeleteHeaders = {\n    serializedName: \"Blob_deleteHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobDeleteHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobDeleteExceptionHeaders = {\n    serializedName: \"Blob_deleteExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobDeleteExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobUndeleteHeaders = {\n    serializedName: \"Blob_undeleteHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobUndeleteHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobUndeleteExceptionHeaders = {\n    serializedName: \"Blob_undeleteExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobUndeleteExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobSetExpiryHeaders = {\n    serializedName: \"Blob_setExpiryHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobSetExpiryHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n        },\n    },\n};\nexport const BlobSetExpiryExceptionHeaders = {\n    serializedName: \"Blob_setExpiryExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobSetExpiryExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobSetHttpHeadersHeaders = {\n    serializedName: \"Blob_setHttpHeadersHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobSetHttpHeadersHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            blobSequenceNumber: {\n                serializedName: \"x-ms-blob-sequence-number\",\n                xmlName: \"x-ms-blob-sequence-number\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobSetHttpHeadersExceptionHeaders = {\n    serializedName: \"Blob_setHttpHeadersExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobSetHttpHeadersExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobSetImmutabilityPolicyHeaders = {\n    serializedName: \"Blob_setImmutabilityPolicyHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobSetImmutabilityPolicyHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            immutabilityPolicyExpiry: {\n                serializedName: \"x-ms-immutability-policy-until-date\",\n                xmlName: \"x-ms-immutability-policy-until-date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            immutabilityPolicyMode: {\n                serializedName: \"x-ms-immutability-policy-mode\",\n                xmlName: \"x-ms-immutability-policy-mode\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"Mutable\", \"Unlocked\", \"Locked\"],\n                },\n            },\n        },\n    },\n};\nexport const BlobSetImmutabilityPolicyExceptionHeaders = {\n    serializedName: \"Blob_setImmutabilityPolicyExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobSetImmutabilityPolicyExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobDeleteImmutabilityPolicyHeaders = {\n    serializedName: \"Blob_deleteImmutabilityPolicyHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobDeleteImmutabilityPolicyHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n        },\n    },\n};\nexport const BlobDeleteImmutabilityPolicyExceptionHeaders = {\n    serializedName: \"Blob_deleteImmutabilityPolicyExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobDeleteImmutabilityPolicyExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobSetLegalHoldHeaders = {\n    serializedName: \"Blob_setLegalHoldHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobSetLegalHoldHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            legalHold: {\n                serializedName: \"x-ms-legal-hold\",\n                xmlName: \"x-ms-legal-hold\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n        },\n    },\n};\nexport const BlobSetLegalHoldExceptionHeaders = {\n    serializedName: \"Blob_setLegalHoldExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobSetLegalHoldExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobSetMetadataHeaders = {\n    serializedName: \"Blob_setMetadataHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobSetMetadataHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            versionId: {\n                serializedName: \"x-ms-version-id\",\n                xmlName: \"x-ms-version-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            isServerEncrypted: {\n                serializedName: \"x-ms-request-server-encrypted\",\n                xmlName: \"x-ms-request-server-encrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            encryptionKeySha256: {\n                serializedName: \"x-ms-encryption-key-sha256\",\n                xmlName: \"x-ms-encryption-key-sha256\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"x-ms-encryption-scope\",\n                xmlName: \"x-ms-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobSetMetadataExceptionHeaders = {\n    serializedName: \"Blob_setMetadataExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobSetMetadataExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobAcquireLeaseHeaders = {\n    serializedName: \"Blob_acquireLeaseHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobAcquireLeaseHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            leaseId: {\n                serializedName: \"x-ms-lease-id\",\n                xmlName: \"x-ms-lease-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n        },\n    },\n};\nexport const BlobAcquireLeaseExceptionHeaders = {\n    serializedName: \"Blob_acquireLeaseExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobAcquireLeaseExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobReleaseLeaseHeaders = {\n    serializedName: \"Blob_releaseLeaseHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobReleaseLeaseHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n        },\n    },\n};\nexport const BlobReleaseLeaseExceptionHeaders = {\n    serializedName: \"Blob_releaseLeaseExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobReleaseLeaseExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobRenewLeaseHeaders = {\n    serializedName: \"Blob_renewLeaseHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobRenewLeaseHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            leaseId: {\n                serializedName: \"x-ms-lease-id\",\n                xmlName: \"x-ms-lease-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n        },\n    },\n};\nexport const BlobRenewLeaseExceptionHeaders = {\n    serializedName: \"Blob_renewLeaseExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobRenewLeaseExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobChangeLeaseHeaders = {\n    serializedName: \"Blob_changeLeaseHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobChangeLeaseHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            leaseId: {\n                serializedName: \"x-ms-lease-id\",\n                xmlName: \"x-ms-lease-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n        },\n    },\n};\nexport const BlobChangeLeaseExceptionHeaders = {\n    serializedName: \"Blob_changeLeaseExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobChangeLeaseExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobBreakLeaseHeaders = {\n    serializedName: \"Blob_breakLeaseHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobBreakLeaseHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            leaseTime: {\n                serializedName: \"x-ms-lease-time\",\n                xmlName: \"x-ms-lease-time\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n        },\n    },\n};\nexport const BlobBreakLeaseExceptionHeaders = {\n    serializedName: \"Blob_breakLeaseExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobBreakLeaseExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobCreateSnapshotHeaders = {\n    serializedName: \"Blob_createSnapshotHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobCreateSnapshotHeaders\",\n        modelProperties: {\n            snapshot: {\n                serializedName: \"x-ms-snapshot\",\n                xmlName: \"x-ms-snapshot\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            versionId: {\n                serializedName: \"x-ms-version-id\",\n                xmlName: \"x-ms-version-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            isServerEncrypted: {\n                serializedName: \"x-ms-request-server-encrypted\",\n                xmlName: \"x-ms-request-server-encrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobCreateSnapshotExceptionHeaders = {\n    serializedName: \"Blob_createSnapshotExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobCreateSnapshotExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobStartCopyFromURLHeaders = {\n    serializedName: \"Blob_startCopyFromURLHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobStartCopyFromURLHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            versionId: {\n                serializedName: \"x-ms-version-id\",\n                xmlName: \"x-ms-version-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            copyId: {\n                serializedName: \"x-ms-copy-id\",\n                xmlName: \"x-ms-copy-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copyStatus: {\n                serializedName: \"x-ms-copy-status\",\n                xmlName: \"x-ms-copy-status\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"],\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobStartCopyFromURLExceptionHeaders = {\n    serializedName: \"Blob_startCopyFromURLExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobStartCopyFromURLExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobCopyFromURLHeaders = {\n    serializedName: \"Blob_copyFromURLHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobCopyFromURLHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            versionId: {\n                serializedName: \"x-ms-version-id\",\n                xmlName: \"x-ms-version-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            copyId: {\n                serializedName: \"x-ms-copy-id\",\n                xmlName: \"x-ms-copy-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copyStatus: {\n                defaultValue: \"success\",\n                isConstant: true,\n                serializedName: \"x-ms-copy-status\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentMD5: {\n                serializedName: \"content-md5\",\n                xmlName: \"content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            xMsContentCrc64: {\n                serializedName: \"x-ms-content-crc64\",\n                xmlName: \"x-ms-content-crc64\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"x-ms-encryption-scope\",\n                xmlName: \"x-ms-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobCopyFromURLExceptionHeaders = {\n    serializedName: \"Blob_copyFromURLExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobCopyFromURLExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobAbortCopyFromURLHeaders = {\n    serializedName: \"Blob_abortCopyFromURLHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobAbortCopyFromURLHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobAbortCopyFromURLExceptionHeaders = {\n    serializedName: \"Blob_abortCopyFromURLExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobAbortCopyFromURLExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobSetTierHeaders = {\n    serializedName: \"Blob_setTierHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobSetTierHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobSetTierExceptionHeaders = {\n    serializedName: \"Blob_setTierExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobSetTierExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobGetAccountInfoHeaders = {\n    serializedName: \"Blob_getAccountInfoHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobGetAccountInfoHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            skuName: {\n                serializedName: \"x-ms-sku-name\",\n                xmlName: \"x-ms-sku-name\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\n                        \"Standard_LRS\",\n                        \"Standard_GRS\",\n                        \"Standard_RAGRS\",\n                        \"Standard_ZRS\",\n                        \"Premium_LRS\",\n                    ],\n                },\n            },\n            accountKind: {\n                serializedName: \"x-ms-account-kind\",\n                xmlName: \"x-ms-account-kind\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\n                        \"Storage\",\n                        \"BlobStorage\",\n                        \"StorageV2\",\n                        \"FileStorage\",\n                        \"BlockBlobStorage\",\n                    ],\n                },\n            },\n            isHierarchicalNamespaceEnabled: {\n                serializedName: \"x-ms-is-hns-enabled\",\n                xmlName: \"x-ms-is-hns-enabled\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n        },\n    },\n};\nexport const BlobGetAccountInfoExceptionHeaders = {\n    serializedName: \"Blob_getAccountInfoExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobGetAccountInfoExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobQueryHeaders = {\n    serializedName: \"Blob_queryHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobQueryHeaders\",\n        modelProperties: {\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            metadata: {\n                serializedName: \"x-ms-meta\",\n                headerCollectionPrefix: \"x-ms-meta-\",\n                xmlName: \"x-ms-meta\",\n                type: {\n                    name: \"Dictionary\",\n                    value: { type: { name: \"String\" } },\n                },\n            },\n            contentLength: {\n                serializedName: \"content-length\",\n                xmlName: \"content-length\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            contentType: {\n                serializedName: \"content-type\",\n                xmlName: \"content-type\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentRange: {\n                serializedName: \"content-range\",\n                xmlName: \"content-range\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentMD5: {\n                serializedName: \"content-md5\",\n                xmlName: \"content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            contentEncoding: {\n                serializedName: \"content-encoding\",\n                xmlName: \"content-encoding\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            cacheControl: {\n                serializedName: \"cache-control\",\n                xmlName: \"cache-control\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentDisposition: {\n                serializedName: \"content-disposition\",\n                xmlName: \"content-disposition\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentLanguage: {\n                serializedName: \"content-language\",\n                xmlName: \"content-language\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            blobSequenceNumber: {\n                serializedName: \"x-ms-blob-sequence-number\",\n                xmlName: \"x-ms-blob-sequence-number\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            blobType: {\n                serializedName: \"x-ms-blob-type\",\n                xmlName: \"x-ms-blob-type\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"BlockBlob\", \"PageBlob\", \"AppendBlob\"],\n                },\n            },\n            copyCompletionTime: {\n                serializedName: \"x-ms-copy-completion-time\",\n                xmlName: \"x-ms-copy-completion-time\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            copyStatusDescription: {\n                serializedName: \"x-ms-copy-status-description\",\n                xmlName: \"x-ms-copy-status-description\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copyId: {\n                serializedName: \"x-ms-copy-id\",\n                xmlName: \"x-ms-copy-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copyProgress: {\n                serializedName: \"x-ms-copy-progress\",\n                xmlName: \"x-ms-copy-progress\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copySource: {\n                serializedName: \"x-ms-copy-source\",\n                xmlName: \"x-ms-copy-source\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copyStatus: {\n                serializedName: \"x-ms-copy-status\",\n                xmlName: \"x-ms-copy-status\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"],\n                },\n            },\n            leaseDuration: {\n                serializedName: \"x-ms-lease-duration\",\n                xmlName: \"x-ms-lease-duration\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"infinite\", \"fixed\"],\n                },\n            },\n            leaseState: {\n                serializedName: \"x-ms-lease-state\",\n                xmlName: \"x-ms-lease-state\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\n                        \"available\",\n                        \"leased\",\n                        \"expired\",\n                        \"breaking\",\n                        \"broken\",\n                    ],\n                },\n            },\n            leaseStatus: {\n                serializedName: \"x-ms-lease-status\",\n                xmlName: \"x-ms-lease-status\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"locked\", \"unlocked\"],\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            acceptRanges: {\n                serializedName: \"accept-ranges\",\n                xmlName: \"accept-ranges\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            blobCommittedBlockCount: {\n                serializedName: \"x-ms-blob-committed-block-count\",\n                xmlName: \"x-ms-blob-committed-block-count\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            isServerEncrypted: {\n                serializedName: \"x-ms-server-encrypted\",\n                xmlName: \"x-ms-server-encrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            encryptionKeySha256: {\n                serializedName: \"x-ms-encryption-key-sha256\",\n                xmlName: \"x-ms-encryption-key-sha256\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"x-ms-encryption-scope\",\n                xmlName: \"x-ms-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            blobContentMD5: {\n                serializedName: \"x-ms-blob-content-md5\",\n                xmlName: \"x-ms-blob-content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentCrc64: {\n                serializedName: \"x-ms-content-crc64\",\n                xmlName: \"x-ms-content-crc64\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n        },\n    },\n};\nexport const BlobQueryExceptionHeaders = {\n    serializedName: \"Blob_queryExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobQueryExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobGetTagsHeaders = {\n    serializedName: \"Blob_getTagsHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobGetTagsHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobGetTagsExceptionHeaders = {\n    serializedName: \"Blob_getTagsExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobGetTagsExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobSetTagsHeaders = {\n    serializedName: \"Blob_setTagsHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobSetTagsHeaders\",\n        modelProperties: {\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlobSetTagsExceptionHeaders = {\n    serializedName: \"Blob_setTagsExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlobSetTagsExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobCreateHeaders = {\n    serializedName: \"PageBlob_createHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobCreateHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            contentMD5: {\n                serializedName: \"content-md5\",\n                xmlName: \"content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            versionId: {\n                serializedName: \"x-ms-version-id\",\n                xmlName: \"x-ms-version-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            isServerEncrypted: {\n                serializedName: \"x-ms-request-server-encrypted\",\n                xmlName: \"x-ms-request-server-encrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            encryptionKeySha256: {\n                serializedName: \"x-ms-encryption-key-sha256\",\n                xmlName: \"x-ms-encryption-key-sha256\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"x-ms-encryption-scope\",\n                xmlName: \"x-ms-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobCreateExceptionHeaders = {\n    serializedName: \"PageBlob_createExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobCreateExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobUploadPagesHeaders = {\n    serializedName: \"PageBlob_uploadPagesHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobUploadPagesHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            contentMD5: {\n                serializedName: \"content-md5\",\n                xmlName: \"content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            xMsContentCrc64: {\n                serializedName: \"x-ms-content-crc64\",\n                xmlName: \"x-ms-content-crc64\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            blobSequenceNumber: {\n                serializedName: \"x-ms-blob-sequence-number\",\n                xmlName: \"x-ms-blob-sequence-number\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            isServerEncrypted: {\n                serializedName: \"x-ms-request-server-encrypted\",\n                xmlName: \"x-ms-request-server-encrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            encryptionKeySha256: {\n                serializedName: \"x-ms-encryption-key-sha256\",\n                xmlName: \"x-ms-encryption-key-sha256\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"x-ms-encryption-scope\",\n                xmlName: \"x-ms-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobUploadPagesExceptionHeaders = {\n    serializedName: \"PageBlob_uploadPagesExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobUploadPagesExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobClearPagesHeaders = {\n    serializedName: \"PageBlob_clearPagesHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobClearPagesHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            contentMD5: {\n                serializedName: \"content-md5\",\n                xmlName: \"content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            xMsContentCrc64: {\n                serializedName: \"x-ms-content-crc64\",\n                xmlName: \"x-ms-content-crc64\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            blobSequenceNumber: {\n                serializedName: \"x-ms-blob-sequence-number\",\n                xmlName: \"x-ms-blob-sequence-number\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobClearPagesExceptionHeaders = {\n    serializedName: \"PageBlob_clearPagesExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobClearPagesExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobUploadPagesFromURLHeaders = {\n    serializedName: \"PageBlob_uploadPagesFromURLHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobUploadPagesFromURLHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            contentMD5: {\n                serializedName: \"content-md5\",\n                xmlName: \"content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            xMsContentCrc64: {\n                serializedName: \"x-ms-content-crc64\",\n                xmlName: \"x-ms-content-crc64\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            blobSequenceNumber: {\n                serializedName: \"x-ms-blob-sequence-number\",\n                xmlName: \"x-ms-blob-sequence-number\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            isServerEncrypted: {\n                serializedName: \"x-ms-request-server-encrypted\",\n                xmlName: \"x-ms-request-server-encrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            encryptionKeySha256: {\n                serializedName: \"x-ms-encryption-key-sha256\",\n                xmlName: \"x-ms-encryption-key-sha256\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"x-ms-encryption-scope\",\n                xmlName: \"x-ms-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobUploadPagesFromURLExceptionHeaders = {\n    serializedName: \"PageBlob_uploadPagesFromURLExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobUploadPagesFromURLExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobGetPageRangesHeaders = {\n    serializedName: \"PageBlob_getPageRangesHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobGetPageRangesHeaders\",\n        modelProperties: {\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            blobContentLength: {\n                serializedName: \"x-ms-blob-content-length\",\n                xmlName: \"x-ms-blob-content-length\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobGetPageRangesExceptionHeaders = {\n    serializedName: \"PageBlob_getPageRangesExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobGetPageRangesExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobGetPageRangesDiffHeaders = {\n    serializedName: \"PageBlob_getPageRangesDiffHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobGetPageRangesDiffHeaders\",\n        modelProperties: {\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            blobContentLength: {\n                serializedName: \"x-ms-blob-content-length\",\n                xmlName: \"x-ms-blob-content-length\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobGetPageRangesDiffExceptionHeaders = {\n    serializedName: \"PageBlob_getPageRangesDiffExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobGetPageRangesDiffExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobResizeHeaders = {\n    serializedName: \"PageBlob_resizeHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobResizeHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            blobSequenceNumber: {\n                serializedName: \"x-ms-blob-sequence-number\",\n                xmlName: \"x-ms-blob-sequence-number\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobResizeExceptionHeaders = {\n    serializedName: \"PageBlob_resizeExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobResizeExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobUpdateSequenceNumberHeaders = {\n    serializedName: \"PageBlob_updateSequenceNumberHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobUpdateSequenceNumberHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            blobSequenceNumber: {\n                serializedName: \"x-ms-blob-sequence-number\",\n                xmlName: \"x-ms-blob-sequence-number\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobUpdateSequenceNumberExceptionHeaders = {\n    serializedName: \"PageBlob_updateSequenceNumberExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobUpdateSequenceNumberExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobCopyIncrementalHeaders = {\n    serializedName: \"PageBlob_copyIncrementalHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobCopyIncrementalHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            copyId: {\n                serializedName: \"x-ms-copy-id\",\n                xmlName: \"x-ms-copy-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            copyStatus: {\n                serializedName: \"x-ms-copy-status\",\n                xmlName: \"x-ms-copy-status\",\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"],\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const PageBlobCopyIncrementalExceptionHeaders = {\n    serializedName: \"PageBlob_copyIncrementalExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"PageBlobCopyIncrementalExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const AppendBlobCreateHeaders = {\n    serializedName: \"AppendBlob_createHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"AppendBlobCreateHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            contentMD5: {\n                serializedName: \"content-md5\",\n                xmlName: \"content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            versionId: {\n                serializedName: \"x-ms-version-id\",\n                xmlName: \"x-ms-version-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            isServerEncrypted: {\n                serializedName: \"x-ms-request-server-encrypted\",\n                xmlName: \"x-ms-request-server-encrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            encryptionKeySha256: {\n                serializedName: \"x-ms-encryption-key-sha256\",\n                xmlName: \"x-ms-encryption-key-sha256\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"x-ms-encryption-scope\",\n                xmlName: \"x-ms-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const AppendBlobCreateExceptionHeaders = {\n    serializedName: \"AppendBlob_createExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"AppendBlobCreateExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const AppendBlobAppendBlockHeaders = {\n    serializedName: \"AppendBlob_appendBlockHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"AppendBlobAppendBlockHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            contentMD5: {\n                serializedName: \"content-md5\",\n                xmlName: \"content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            xMsContentCrc64: {\n                serializedName: \"x-ms-content-crc64\",\n                xmlName: \"x-ms-content-crc64\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            blobAppendOffset: {\n                serializedName: \"x-ms-blob-append-offset\",\n                xmlName: \"x-ms-blob-append-offset\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            blobCommittedBlockCount: {\n                serializedName: \"x-ms-blob-committed-block-count\",\n                xmlName: \"x-ms-blob-committed-block-count\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            isServerEncrypted: {\n                serializedName: \"x-ms-request-server-encrypted\",\n                xmlName: \"x-ms-request-server-encrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            encryptionKeySha256: {\n                serializedName: \"x-ms-encryption-key-sha256\",\n                xmlName: \"x-ms-encryption-key-sha256\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"x-ms-encryption-scope\",\n                xmlName: \"x-ms-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const AppendBlobAppendBlockExceptionHeaders = {\n    serializedName: \"AppendBlob_appendBlockExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"AppendBlobAppendBlockExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const AppendBlobAppendBlockFromUrlHeaders = {\n    serializedName: \"AppendBlob_appendBlockFromUrlHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"AppendBlobAppendBlockFromUrlHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            contentMD5: {\n                serializedName: \"content-md5\",\n                xmlName: \"content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            xMsContentCrc64: {\n                serializedName: \"x-ms-content-crc64\",\n                xmlName: \"x-ms-content-crc64\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            blobAppendOffset: {\n                serializedName: \"x-ms-blob-append-offset\",\n                xmlName: \"x-ms-blob-append-offset\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            blobCommittedBlockCount: {\n                serializedName: \"x-ms-blob-committed-block-count\",\n                xmlName: \"x-ms-blob-committed-block-count\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            encryptionKeySha256: {\n                serializedName: \"x-ms-encryption-key-sha256\",\n                xmlName: \"x-ms-encryption-key-sha256\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"x-ms-encryption-scope\",\n                xmlName: \"x-ms-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            isServerEncrypted: {\n                serializedName: \"x-ms-request-server-encrypted\",\n                xmlName: \"x-ms-request-server-encrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const AppendBlobAppendBlockFromUrlExceptionHeaders = {\n    serializedName: \"AppendBlob_appendBlockFromUrlExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"AppendBlobAppendBlockFromUrlExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const AppendBlobSealHeaders = {\n    serializedName: \"AppendBlob_sealHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"AppendBlobSealHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            isSealed: {\n                serializedName: \"x-ms-blob-sealed\",\n                xmlName: \"x-ms-blob-sealed\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n        },\n    },\n};\nexport const AppendBlobSealExceptionHeaders = {\n    serializedName: \"AppendBlob_sealExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"AppendBlobSealExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlockBlobUploadHeaders = {\n    serializedName: \"BlockBlob_uploadHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlockBlobUploadHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            contentMD5: {\n                serializedName: \"content-md5\",\n                xmlName: \"content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            versionId: {\n                serializedName: \"x-ms-version-id\",\n                xmlName: \"x-ms-version-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            isServerEncrypted: {\n                serializedName: \"x-ms-request-server-encrypted\",\n                xmlName: \"x-ms-request-server-encrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            encryptionKeySha256: {\n                serializedName: \"x-ms-encryption-key-sha256\",\n                xmlName: \"x-ms-encryption-key-sha256\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"x-ms-encryption-scope\",\n                xmlName: \"x-ms-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlockBlobUploadExceptionHeaders = {\n    serializedName: \"BlockBlob_uploadExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlockBlobUploadExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlockBlobPutBlobFromUrlHeaders = {\n    serializedName: \"BlockBlob_putBlobFromUrlHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlockBlobPutBlobFromUrlHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            contentMD5: {\n                serializedName: \"content-md5\",\n                xmlName: \"content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            versionId: {\n                serializedName: \"x-ms-version-id\",\n                xmlName: \"x-ms-version-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            isServerEncrypted: {\n                serializedName: \"x-ms-request-server-encrypted\",\n                xmlName: \"x-ms-request-server-encrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            encryptionKeySha256: {\n                serializedName: \"x-ms-encryption-key-sha256\",\n                xmlName: \"x-ms-encryption-key-sha256\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"x-ms-encryption-scope\",\n                xmlName: \"x-ms-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlockBlobPutBlobFromUrlExceptionHeaders = {\n    serializedName: \"BlockBlob_putBlobFromUrlExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlockBlobPutBlobFromUrlExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlockBlobStageBlockHeaders = {\n    serializedName: \"BlockBlob_stageBlockHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlockBlobStageBlockHeaders\",\n        modelProperties: {\n            contentMD5: {\n                serializedName: \"content-md5\",\n                xmlName: \"content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            xMsContentCrc64: {\n                serializedName: \"x-ms-content-crc64\",\n                xmlName: \"x-ms-content-crc64\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            isServerEncrypted: {\n                serializedName: \"x-ms-request-server-encrypted\",\n                xmlName: \"x-ms-request-server-encrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            encryptionKeySha256: {\n                serializedName: \"x-ms-encryption-key-sha256\",\n                xmlName: \"x-ms-encryption-key-sha256\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"x-ms-encryption-scope\",\n                xmlName: \"x-ms-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlockBlobStageBlockExceptionHeaders = {\n    serializedName: \"BlockBlob_stageBlockExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlockBlobStageBlockExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlockBlobStageBlockFromURLHeaders = {\n    serializedName: \"BlockBlob_stageBlockFromURLHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlockBlobStageBlockFromURLHeaders\",\n        modelProperties: {\n            contentMD5: {\n                serializedName: \"content-md5\",\n                xmlName: \"content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            xMsContentCrc64: {\n                serializedName: \"x-ms-content-crc64\",\n                xmlName: \"x-ms-content-crc64\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            isServerEncrypted: {\n                serializedName: \"x-ms-request-server-encrypted\",\n                xmlName: \"x-ms-request-server-encrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            encryptionKeySha256: {\n                serializedName: \"x-ms-encryption-key-sha256\",\n                xmlName: \"x-ms-encryption-key-sha256\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"x-ms-encryption-scope\",\n                xmlName: \"x-ms-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlockBlobStageBlockFromURLExceptionHeaders = {\n    serializedName: \"BlockBlob_stageBlockFromURLExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlockBlobStageBlockFromURLExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlockBlobCommitBlockListHeaders = {\n    serializedName: \"BlockBlob_commitBlockListHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlockBlobCommitBlockListHeaders\",\n        modelProperties: {\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            contentMD5: {\n                serializedName: \"content-md5\",\n                xmlName: \"content-md5\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            xMsContentCrc64: {\n                serializedName: \"x-ms-content-crc64\",\n                xmlName: \"x-ms-content-crc64\",\n                type: {\n                    name: \"ByteArray\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            versionId: {\n                serializedName: \"x-ms-version-id\",\n                xmlName: \"x-ms-version-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            isServerEncrypted: {\n                serializedName: \"x-ms-request-server-encrypted\",\n                xmlName: \"x-ms-request-server-encrypted\",\n                type: {\n                    name: \"Boolean\",\n                },\n            },\n            encryptionKeySha256: {\n                serializedName: \"x-ms-encryption-key-sha256\",\n                xmlName: \"x-ms-encryption-key-sha256\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            encryptionScope: {\n                serializedName: \"x-ms-encryption-scope\",\n                xmlName: \"x-ms-encryption-scope\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlockBlobCommitBlockListExceptionHeaders = {\n    serializedName: \"BlockBlob_commitBlockListExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlockBlobCommitBlockListExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlockBlobGetBlockListHeaders = {\n    serializedName: \"BlockBlob_getBlockListHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlockBlobGetBlockListHeaders\",\n        modelProperties: {\n            lastModified: {\n                serializedName: \"last-modified\",\n                xmlName: \"last-modified\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            etag: {\n                serializedName: \"etag\",\n                xmlName: \"etag\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            contentType: {\n                serializedName: \"content-type\",\n                xmlName: \"content-type\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            blobContentLength: {\n                serializedName: \"x-ms-blob-content-length\",\n                xmlName: \"x-ms-blob-content-length\",\n                type: {\n                    name: \"Number\",\n                },\n            },\n            clientRequestId: {\n                serializedName: \"x-ms-client-request-id\",\n                xmlName: \"x-ms-client-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            requestId: {\n                serializedName: \"x-ms-request-id\",\n                xmlName: \"x-ms-request-id\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            version: {\n                serializedName: \"x-ms-version\",\n                xmlName: \"x-ms-version\",\n                type: {\n                    name: \"String\",\n                },\n            },\n            date: {\n                serializedName: \"date\",\n                xmlName: \"date\",\n                type: {\n                    name: \"DateTimeRfc1123\",\n                },\n            },\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\nexport const BlockBlobGetBlockListExceptionHeaders = {\n    serializedName: \"BlockBlob_getBlockListExceptionHeaders\",\n    type: {\n        name: \"Composite\",\n        className: \"BlockBlobGetBlockListExceptionHeaders\",\n        modelProperties: {\n            errorCode: {\n                serializedName: \"x-ms-error-code\",\n                xmlName: \"x-ms-error-code\",\n                type: {\n                    name: \"String\",\n                },\n            },\n        },\n    },\n};\n//# sourceMappingURL=mappers.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport { BlobServiceProperties as BlobServicePropertiesMapper, KeyInfo as KeyInfoMapper, QueryRequest as QueryRequestMapper, BlobTags as BlobTagsMapper, BlockLookupList as BlockLookupListMapper, } from \"../models/mappers\";\nexport const contentType = {\n    parameterPath: [\"options\", \"contentType\"],\n    mapper: {\n        defaultValue: \"application/xml\",\n        isConstant: true,\n        serializedName: \"Content-Type\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const blobServiceProperties = {\n    parameterPath: \"blobServiceProperties\",\n    mapper: BlobServicePropertiesMapper,\n};\nexport const accept = {\n    parameterPath: \"accept\",\n    mapper: {\n        defaultValue: \"application/xml\",\n        isConstant: true,\n        serializedName: \"Accept\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const url = {\n    parameterPath: \"url\",\n    mapper: {\n        serializedName: \"url\",\n        required: true,\n        xmlName: \"url\",\n        type: {\n            name: \"String\",\n        },\n    },\n    skipEncoding: true,\n};\nexport const restype = {\n    parameterPath: \"restype\",\n    mapper: {\n        defaultValue: \"service\",\n        isConstant: true,\n        serializedName: \"restype\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const comp = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"properties\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const timeoutInSeconds = {\n    parameterPath: [\"options\", \"timeoutInSeconds\"],\n    mapper: {\n        constraints: {\n            InclusiveMinimum: 0,\n        },\n        serializedName: \"timeout\",\n        xmlName: \"timeout\",\n        type: {\n            name: \"Number\",\n        },\n    },\n};\nexport const version = {\n    parameterPath: \"version\",\n    mapper: {\n        defaultValue: \"2025-01-05\",\n        isConstant: true,\n        serializedName: \"x-ms-version\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const requestId = {\n    parameterPath: [\"options\", \"requestId\"],\n    mapper: {\n        serializedName: \"x-ms-client-request-id\",\n        xmlName: \"x-ms-client-request-id\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const accept1 = {\n    parameterPath: \"accept\",\n    mapper: {\n        defaultValue: \"application/xml\",\n        isConstant: true,\n        serializedName: \"Accept\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const comp1 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"stats\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const comp2 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"list\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const prefix = {\n    parameterPath: [\"options\", \"prefix\"],\n    mapper: {\n        serializedName: \"prefix\",\n        xmlName: \"prefix\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const marker = {\n    parameterPath: [\"options\", \"marker\"],\n    mapper: {\n        serializedName: \"marker\",\n        xmlName: \"marker\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const maxPageSize = {\n    parameterPath: [\"options\", \"maxPageSize\"],\n    mapper: {\n        constraints: {\n            InclusiveMinimum: 1,\n        },\n        serializedName: \"maxresults\",\n        xmlName: \"maxresults\",\n        type: {\n            name: \"Number\",\n        },\n    },\n};\nexport const include = {\n    parameterPath: [\"options\", \"include\"],\n    mapper: {\n        serializedName: \"include\",\n        xmlName: \"include\",\n        xmlElementName: \"ListContainersIncludeType\",\n        type: {\n            name: \"Sequence\",\n            element: {\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\"metadata\", \"deleted\", \"system\"],\n                },\n            },\n        },\n    },\n    collectionFormat: \"CSV\",\n};\nexport const keyInfo = {\n    parameterPath: \"keyInfo\",\n    mapper: KeyInfoMapper,\n};\nexport const comp3 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"userdelegationkey\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const restype1 = {\n    parameterPath: \"restype\",\n    mapper: {\n        defaultValue: \"account\",\n        isConstant: true,\n        serializedName: \"restype\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const body = {\n    parameterPath: \"body\",\n    mapper: {\n        serializedName: \"body\",\n        required: true,\n        xmlName: \"body\",\n        type: {\n            name: \"Stream\",\n        },\n    },\n};\nexport const comp4 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"batch\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const contentLength = {\n    parameterPath: \"contentLength\",\n    mapper: {\n        serializedName: \"Content-Length\",\n        required: true,\n        xmlName: \"Content-Length\",\n        type: {\n            name: \"Number\",\n        },\n    },\n};\nexport const multipartContentType = {\n    parameterPath: \"multipartContentType\",\n    mapper: {\n        serializedName: \"Content-Type\",\n        required: true,\n        xmlName: \"Content-Type\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const comp5 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"blobs\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const where = {\n    parameterPath: [\"options\", \"where\"],\n    mapper: {\n        serializedName: \"where\",\n        xmlName: \"where\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const restype2 = {\n    parameterPath: \"restype\",\n    mapper: {\n        defaultValue: \"container\",\n        isConstant: true,\n        serializedName: \"restype\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const metadata = {\n    parameterPath: [\"options\", \"metadata\"],\n    mapper: {\n        serializedName: \"x-ms-meta\",\n        xmlName: \"x-ms-meta\",\n        headerCollectionPrefix: \"x-ms-meta-\",\n        type: {\n            name: \"Dictionary\",\n            value: { type: { name: \"String\" } },\n        },\n    },\n};\nexport const access = {\n    parameterPath: [\"options\", \"access\"],\n    mapper: {\n        serializedName: \"x-ms-blob-public-access\",\n        xmlName: \"x-ms-blob-public-access\",\n        type: {\n            name: \"Enum\",\n            allowedValues: [\"container\", \"blob\"],\n        },\n    },\n};\nexport const defaultEncryptionScope = {\n    parameterPath: [\n        \"options\",\n        \"containerEncryptionScope\",\n        \"defaultEncryptionScope\",\n    ],\n    mapper: {\n        serializedName: \"x-ms-default-encryption-scope\",\n        xmlName: \"x-ms-default-encryption-scope\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const preventEncryptionScopeOverride = {\n    parameterPath: [\n        \"options\",\n        \"containerEncryptionScope\",\n        \"preventEncryptionScopeOverride\",\n    ],\n    mapper: {\n        serializedName: \"x-ms-deny-encryption-scope-override\",\n        xmlName: \"x-ms-deny-encryption-scope-override\",\n        type: {\n            name: \"Boolean\",\n        },\n    },\n};\nexport const leaseId = {\n    parameterPath: [\"options\", \"leaseAccessConditions\", \"leaseId\"],\n    mapper: {\n        serializedName: \"x-ms-lease-id\",\n        xmlName: \"x-ms-lease-id\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const ifModifiedSince = {\n    parameterPath: [\"options\", \"modifiedAccessConditions\", \"ifModifiedSince\"],\n    mapper: {\n        serializedName: \"If-Modified-Since\",\n        xmlName: \"If-Modified-Since\",\n        type: {\n            name: \"DateTimeRfc1123\",\n        },\n    },\n};\nexport const ifUnmodifiedSince = {\n    parameterPath: [\"options\", \"modifiedAccessConditions\", \"ifUnmodifiedSince\"],\n    mapper: {\n        serializedName: \"If-Unmodified-Since\",\n        xmlName: \"If-Unmodified-Since\",\n        type: {\n            name: \"DateTimeRfc1123\",\n        },\n    },\n};\nexport const comp6 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"metadata\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const comp7 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"acl\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const containerAcl = {\n    parameterPath: [\"options\", \"containerAcl\"],\n    mapper: {\n        serializedName: \"containerAcl\",\n        xmlName: \"SignedIdentifiers\",\n        xmlIsWrapped: true,\n        xmlElementName: \"SignedIdentifier\",\n        type: {\n            name: \"Sequence\",\n            element: {\n                type: {\n                    name: \"Composite\",\n                    className: \"SignedIdentifier\",\n                },\n            },\n        },\n    },\n};\nexport const comp8 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"undelete\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const deletedContainerName = {\n    parameterPath: [\"options\", \"deletedContainerName\"],\n    mapper: {\n        serializedName: \"x-ms-deleted-container-name\",\n        xmlName: \"x-ms-deleted-container-name\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const deletedContainerVersion = {\n    parameterPath: [\"options\", \"deletedContainerVersion\"],\n    mapper: {\n        serializedName: \"x-ms-deleted-container-version\",\n        xmlName: \"x-ms-deleted-container-version\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const comp9 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"rename\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const sourceContainerName = {\n    parameterPath: \"sourceContainerName\",\n    mapper: {\n        serializedName: \"x-ms-source-container-name\",\n        required: true,\n        xmlName: \"x-ms-source-container-name\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const sourceLeaseId = {\n    parameterPath: [\"options\", \"sourceLeaseId\"],\n    mapper: {\n        serializedName: \"x-ms-source-lease-id\",\n        xmlName: \"x-ms-source-lease-id\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const comp10 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"lease\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const action = {\n    parameterPath: \"action\",\n    mapper: {\n        defaultValue: \"acquire\",\n        isConstant: true,\n        serializedName: \"x-ms-lease-action\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const duration = {\n    parameterPath: [\"options\", \"duration\"],\n    mapper: {\n        serializedName: \"x-ms-lease-duration\",\n        xmlName: \"x-ms-lease-duration\",\n        type: {\n            name: \"Number\",\n        },\n    },\n};\nexport const proposedLeaseId = {\n    parameterPath: [\"options\", \"proposedLeaseId\"],\n    mapper: {\n        serializedName: \"x-ms-proposed-lease-id\",\n        xmlName: \"x-ms-proposed-lease-id\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const action1 = {\n    parameterPath: \"action\",\n    mapper: {\n        defaultValue: \"release\",\n        isConstant: true,\n        serializedName: \"x-ms-lease-action\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const leaseId1 = {\n    parameterPath: \"leaseId\",\n    mapper: {\n        serializedName: \"x-ms-lease-id\",\n        required: true,\n        xmlName: \"x-ms-lease-id\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const action2 = {\n    parameterPath: \"action\",\n    mapper: {\n        defaultValue: \"renew\",\n        isConstant: true,\n        serializedName: \"x-ms-lease-action\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const action3 = {\n    parameterPath: \"action\",\n    mapper: {\n        defaultValue: \"break\",\n        isConstant: true,\n        serializedName: \"x-ms-lease-action\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const breakPeriod = {\n    parameterPath: [\"options\", \"breakPeriod\"],\n    mapper: {\n        serializedName: \"x-ms-lease-break-period\",\n        xmlName: \"x-ms-lease-break-period\",\n        type: {\n            name: \"Number\",\n        },\n    },\n};\nexport const action4 = {\n    parameterPath: \"action\",\n    mapper: {\n        defaultValue: \"change\",\n        isConstant: true,\n        serializedName: \"x-ms-lease-action\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const proposedLeaseId1 = {\n    parameterPath: \"proposedLeaseId\",\n    mapper: {\n        serializedName: \"x-ms-proposed-lease-id\",\n        required: true,\n        xmlName: \"x-ms-proposed-lease-id\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const include1 = {\n    parameterPath: [\"options\", \"include\"],\n    mapper: {\n        serializedName: \"include\",\n        xmlName: \"include\",\n        xmlElementName: \"ListBlobsIncludeItem\",\n        type: {\n            name: \"Sequence\",\n            element: {\n                type: {\n                    name: \"Enum\",\n                    allowedValues: [\n                        \"copy\",\n                        \"deleted\",\n                        \"metadata\",\n                        \"snapshots\",\n                        \"uncommittedblobs\",\n                        \"versions\",\n                        \"tags\",\n                        \"immutabilitypolicy\",\n                        \"legalhold\",\n                        \"deletedwithversions\",\n                    ],\n                },\n            },\n        },\n    },\n    collectionFormat: \"CSV\",\n};\nexport const delimiter = {\n    parameterPath: \"delimiter\",\n    mapper: {\n        serializedName: \"delimiter\",\n        required: true,\n        xmlName: \"delimiter\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const snapshot = {\n    parameterPath: [\"options\", \"snapshot\"],\n    mapper: {\n        serializedName: \"snapshot\",\n        xmlName: \"snapshot\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const versionId = {\n    parameterPath: [\"options\", \"versionId\"],\n    mapper: {\n        serializedName: \"versionid\",\n        xmlName: \"versionid\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const range = {\n    parameterPath: [\"options\", \"range\"],\n    mapper: {\n        serializedName: \"x-ms-range\",\n        xmlName: \"x-ms-range\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const rangeGetContentMD5 = {\n    parameterPath: [\"options\", \"rangeGetContentMD5\"],\n    mapper: {\n        serializedName: \"x-ms-range-get-content-md5\",\n        xmlName: \"x-ms-range-get-content-md5\",\n        type: {\n            name: \"Boolean\",\n        },\n    },\n};\nexport const rangeGetContentCRC64 = {\n    parameterPath: [\"options\", \"rangeGetContentCRC64\"],\n    mapper: {\n        serializedName: \"x-ms-range-get-content-crc64\",\n        xmlName: \"x-ms-range-get-content-crc64\",\n        type: {\n            name: \"Boolean\",\n        },\n    },\n};\nexport const encryptionKey = {\n    parameterPath: [\"options\", \"cpkInfo\", \"encryptionKey\"],\n    mapper: {\n        serializedName: \"x-ms-encryption-key\",\n        xmlName: \"x-ms-encryption-key\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const encryptionKeySha256 = {\n    parameterPath: [\"options\", \"cpkInfo\", \"encryptionKeySha256\"],\n    mapper: {\n        serializedName: \"x-ms-encryption-key-sha256\",\n        xmlName: \"x-ms-encryption-key-sha256\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const encryptionAlgorithm = {\n    parameterPath: [\"options\", \"cpkInfo\", \"encryptionAlgorithm\"],\n    mapper: {\n        serializedName: \"x-ms-encryption-algorithm\",\n        xmlName: \"x-ms-encryption-algorithm\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const ifMatch = {\n    parameterPath: [\"options\", \"modifiedAccessConditions\", \"ifMatch\"],\n    mapper: {\n        serializedName: \"If-Match\",\n        xmlName: \"If-Match\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const ifNoneMatch = {\n    parameterPath: [\"options\", \"modifiedAccessConditions\", \"ifNoneMatch\"],\n    mapper: {\n        serializedName: \"If-None-Match\",\n        xmlName: \"If-None-Match\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const ifTags = {\n    parameterPath: [\"options\", \"modifiedAccessConditions\", \"ifTags\"],\n    mapper: {\n        serializedName: \"x-ms-if-tags\",\n        xmlName: \"x-ms-if-tags\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const deleteSnapshots = {\n    parameterPath: [\"options\", \"deleteSnapshots\"],\n    mapper: {\n        serializedName: \"x-ms-delete-snapshots\",\n        xmlName: \"x-ms-delete-snapshots\",\n        type: {\n            name: \"Enum\",\n            allowedValues: [\"include\", \"only\"],\n        },\n    },\n};\nexport const blobDeleteType = {\n    parameterPath: [\"options\", \"blobDeleteType\"],\n    mapper: {\n        serializedName: \"deletetype\",\n        xmlName: \"deletetype\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const comp11 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"expiry\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const expiryOptions = {\n    parameterPath: \"expiryOptions\",\n    mapper: {\n        serializedName: \"x-ms-expiry-option\",\n        required: true,\n        xmlName: \"x-ms-expiry-option\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const expiresOn = {\n    parameterPath: [\"options\", \"expiresOn\"],\n    mapper: {\n        serializedName: \"x-ms-expiry-time\",\n        xmlName: \"x-ms-expiry-time\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const blobCacheControl = {\n    parameterPath: [\"options\", \"blobHttpHeaders\", \"blobCacheControl\"],\n    mapper: {\n        serializedName: \"x-ms-blob-cache-control\",\n        xmlName: \"x-ms-blob-cache-control\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const blobContentType = {\n    parameterPath: [\"options\", \"blobHttpHeaders\", \"blobContentType\"],\n    mapper: {\n        serializedName: \"x-ms-blob-content-type\",\n        xmlName: \"x-ms-blob-content-type\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const blobContentMD5 = {\n    parameterPath: [\"options\", \"blobHttpHeaders\", \"blobContentMD5\"],\n    mapper: {\n        serializedName: \"x-ms-blob-content-md5\",\n        xmlName: \"x-ms-blob-content-md5\",\n        type: {\n            name: \"ByteArray\",\n        },\n    },\n};\nexport const blobContentEncoding = {\n    parameterPath: [\"options\", \"blobHttpHeaders\", \"blobContentEncoding\"],\n    mapper: {\n        serializedName: \"x-ms-blob-content-encoding\",\n        xmlName: \"x-ms-blob-content-encoding\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const blobContentLanguage = {\n    parameterPath: [\"options\", \"blobHttpHeaders\", \"blobContentLanguage\"],\n    mapper: {\n        serializedName: \"x-ms-blob-content-language\",\n        xmlName: \"x-ms-blob-content-language\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const blobContentDisposition = {\n    parameterPath: [\"options\", \"blobHttpHeaders\", \"blobContentDisposition\"],\n    mapper: {\n        serializedName: \"x-ms-blob-content-disposition\",\n        xmlName: \"x-ms-blob-content-disposition\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const comp12 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"immutabilityPolicies\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const immutabilityPolicyExpiry = {\n    parameterPath: [\"options\", \"immutabilityPolicyExpiry\"],\n    mapper: {\n        serializedName: \"x-ms-immutability-policy-until-date\",\n        xmlName: \"x-ms-immutability-policy-until-date\",\n        type: {\n            name: \"DateTimeRfc1123\",\n        },\n    },\n};\nexport const immutabilityPolicyMode = {\n    parameterPath: [\"options\", \"immutabilityPolicyMode\"],\n    mapper: {\n        serializedName: \"x-ms-immutability-policy-mode\",\n        xmlName: \"x-ms-immutability-policy-mode\",\n        type: {\n            name: \"Enum\",\n            allowedValues: [\"Mutable\", \"Unlocked\", \"Locked\"],\n        },\n    },\n};\nexport const comp13 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"legalhold\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const legalHold = {\n    parameterPath: \"legalHold\",\n    mapper: {\n        serializedName: \"x-ms-legal-hold\",\n        required: true,\n        xmlName: \"x-ms-legal-hold\",\n        type: {\n            name: \"Boolean\",\n        },\n    },\n};\nexport const encryptionScope = {\n    parameterPath: [\"options\", \"encryptionScope\"],\n    mapper: {\n        serializedName: \"x-ms-encryption-scope\",\n        xmlName: \"x-ms-encryption-scope\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const comp14 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"snapshot\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const tier = {\n    parameterPath: [\"options\", \"tier\"],\n    mapper: {\n        serializedName: \"x-ms-access-tier\",\n        xmlName: \"x-ms-access-tier\",\n        type: {\n            name: \"Enum\",\n            allowedValues: [\n                \"P4\",\n                \"P6\",\n                \"P10\",\n                \"P15\",\n                \"P20\",\n                \"P30\",\n                \"P40\",\n                \"P50\",\n                \"P60\",\n                \"P70\",\n                \"P80\",\n                \"Hot\",\n                \"Cool\",\n                \"Archive\",\n                \"Cold\",\n            ],\n        },\n    },\n};\nexport const rehydratePriority = {\n    parameterPath: [\"options\", \"rehydratePriority\"],\n    mapper: {\n        serializedName: \"x-ms-rehydrate-priority\",\n        xmlName: \"x-ms-rehydrate-priority\",\n        type: {\n            name: \"Enum\",\n            allowedValues: [\"High\", \"Standard\"],\n        },\n    },\n};\nexport const sourceIfModifiedSince = {\n    parameterPath: [\n        \"options\",\n        \"sourceModifiedAccessConditions\",\n        \"sourceIfModifiedSince\",\n    ],\n    mapper: {\n        serializedName: \"x-ms-source-if-modified-since\",\n        xmlName: \"x-ms-source-if-modified-since\",\n        type: {\n            name: \"DateTimeRfc1123\",\n        },\n    },\n};\nexport const sourceIfUnmodifiedSince = {\n    parameterPath: [\n        \"options\",\n        \"sourceModifiedAccessConditions\",\n        \"sourceIfUnmodifiedSince\",\n    ],\n    mapper: {\n        serializedName: \"x-ms-source-if-unmodified-since\",\n        xmlName: \"x-ms-source-if-unmodified-since\",\n        type: {\n            name: \"DateTimeRfc1123\",\n        },\n    },\n};\nexport const sourceIfMatch = {\n    parameterPath: [\"options\", \"sourceModifiedAccessConditions\", \"sourceIfMatch\"],\n    mapper: {\n        serializedName: \"x-ms-source-if-match\",\n        xmlName: \"x-ms-source-if-match\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const sourceIfNoneMatch = {\n    parameterPath: [\n        \"options\",\n        \"sourceModifiedAccessConditions\",\n        \"sourceIfNoneMatch\",\n    ],\n    mapper: {\n        serializedName: \"x-ms-source-if-none-match\",\n        xmlName: \"x-ms-source-if-none-match\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const sourceIfTags = {\n    parameterPath: [\"options\", \"sourceModifiedAccessConditions\", \"sourceIfTags\"],\n    mapper: {\n        serializedName: \"x-ms-source-if-tags\",\n        xmlName: \"x-ms-source-if-tags\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const copySource = {\n    parameterPath: \"copySource\",\n    mapper: {\n        serializedName: \"x-ms-copy-source\",\n        required: true,\n        xmlName: \"x-ms-copy-source\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const blobTagsString = {\n    parameterPath: [\"options\", \"blobTagsString\"],\n    mapper: {\n        serializedName: \"x-ms-tags\",\n        xmlName: \"x-ms-tags\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const sealBlob = {\n    parameterPath: [\"options\", \"sealBlob\"],\n    mapper: {\n        serializedName: \"x-ms-seal-blob\",\n        xmlName: \"x-ms-seal-blob\",\n        type: {\n            name: \"Boolean\",\n        },\n    },\n};\nexport const legalHold1 = {\n    parameterPath: [\"options\", \"legalHold\"],\n    mapper: {\n        serializedName: \"x-ms-legal-hold\",\n        xmlName: \"x-ms-legal-hold\",\n        type: {\n            name: \"Boolean\",\n        },\n    },\n};\nexport const xMsRequiresSync = {\n    parameterPath: \"xMsRequiresSync\",\n    mapper: {\n        defaultValue: \"true\",\n        isConstant: true,\n        serializedName: \"x-ms-requires-sync\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const sourceContentMD5 = {\n    parameterPath: [\"options\", \"sourceContentMD5\"],\n    mapper: {\n        serializedName: \"x-ms-source-content-md5\",\n        xmlName: \"x-ms-source-content-md5\",\n        type: {\n            name: \"ByteArray\",\n        },\n    },\n};\nexport const copySourceAuthorization = {\n    parameterPath: [\"options\", \"copySourceAuthorization\"],\n    mapper: {\n        serializedName: \"x-ms-copy-source-authorization\",\n        xmlName: \"x-ms-copy-source-authorization\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const copySourceTags = {\n    parameterPath: [\"options\", \"copySourceTags\"],\n    mapper: {\n        serializedName: \"x-ms-copy-source-tag-option\",\n        xmlName: \"x-ms-copy-source-tag-option\",\n        type: {\n            name: \"Enum\",\n            allowedValues: [\"REPLACE\", \"COPY\"],\n        },\n    },\n};\nexport const comp15 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"copy\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const copyActionAbortConstant = {\n    parameterPath: \"copyActionAbortConstant\",\n    mapper: {\n        defaultValue: \"abort\",\n        isConstant: true,\n        serializedName: \"x-ms-copy-action\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const copyId = {\n    parameterPath: \"copyId\",\n    mapper: {\n        serializedName: \"copyid\",\n        required: true,\n        xmlName: \"copyid\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const comp16 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"tier\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const tier1 = {\n    parameterPath: \"tier\",\n    mapper: {\n        serializedName: \"x-ms-access-tier\",\n        required: true,\n        xmlName: \"x-ms-access-tier\",\n        type: {\n            name: \"Enum\",\n            allowedValues: [\n                \"P4\",\n                \"P6\",\n                \"P10\",\n                \"P15\",\n                \"P20\",\n                \"P30\",\n                \"P40\",\n                \"P50\",\n                \"P60\",\n                \"P70\",\n                \"P80\",\n                \"Hot\",\n                \"Cool\",\n                \"Archive\",\n                \"Cold\",\n            ],\n        },\n    },\n};\nexport const queryRequest = {\n    parameterPath: [\"options\", \"queryRequest\"],\n    mapper: QueryRequestMapper,\n};\nexport const comp17 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"query\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const comp18 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"tags\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const tags = {\n    parameterPath: [\"options\", \"tags\"],\n    mapper: BlobTagsMapper,\n};\nexport const transactionalContentMD5 = {\n    parameterPath: [\"options\", \"transactionalContentMD5\"],\n    mapper: {\n        serializedName: \"Content-MD5\",\n        xmlName: \"Content-MD5\",\n        type: {\n            name: \"ByteArray\",\n        },\n    },\n};\nexport const transactionalContentCrc64 = {\n    parameterPath: [\"options\", \"transactionalContentCrc64\"],\n    mapper: {\n        serializedName: \"x-ms-content-crc64\",\n        xmlName: \"x-ms-content-crc64\",\n        type: {\n            name: \"ByteArray\",\n        },\n    },\n};\nexport const blobType = {\n    parameterPath: \"blobType\",\n    mapper: {\n        defaultValue: \"PageBlob\",\n        isConstant: true,\n        serializedName: \"x-ms-blob-type\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const blobContentLength = {\n    parameterPath: \"blobContentLength\",\n    mapper: {\n        serializedName: \"x-ms-blob-content-length\",\n        required: true,\n        xmlName: \"x-ms-blob-content-length\",\n        type: {\n            name: \"Number\",\n        },\n    },\n};\nexport const blobSequenceNumber = {\n    parameterPath: [\"options\", \"blobSequenceNumber\"],\n    mapper: {\n        defaultValue: 0,\n        serializedName: \"x-ms-blob-sequence-number\",\n        xmlName: \"x-ms-blob-sequence-number\",\n        type: {\n            name: \"Number\",\n        },\n    },\n};\nexport const contentType1 = {\n    parameterPath: [\"options\", \"contentType\"],\n    mapper: {\n        defaultValue: \"application/octet-stream\",\n        isConstant: true,\n        serializedName: \"Content-Type\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const body1 = {\n    parameterPath: \"body\",\n    mapper: {\n        serializedName: \"body\",\n        required: true,\n        xmlName: \"body\",\n        type: {\n            name: \"Stream\",\n        },\n    },\n};\nexport const accept2 = {\n    parameterPath: \"accept\",\n    mapper: {\n        defaultValue: \"application/xml\",\n        isConstant: true,\n        serializedName: \"Accept\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const comp19 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"page\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const pageWrite = {\n    parameterPath: \"pageWrite\",\n    mapper: {\n        defaultValue: \"update\",\n        isConstant: true,\n        serializedName: \"x-ms-page-write\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const ifSequenceNumberLessThanOrEqualTo = {\n    parameterPath: [\n        \"options\",\n        \"sequenceNumberAccessConditions\",\n        \"ifSequenceNumberLessThanOrEqualTo\",\n    ],\n    mapper: {\n        serializedName: \"x-ms-if-sequence-number-le\",\n        xmlName: \"x-ms-if-sequence-number-le\",\n        type: {\n            name: \"Number\",\n        },\n    },\n};\nexport const ifSequenceNumberLessThan = {\n    parameterPath: [\n        \"options\",\n        \"sequenceNumberAccessConditions\",\n        \"ifSequenceNumberLessThan\",\n    ],\n    mapper: {\n        serializedName: \"x-ms-if-sequence-number-lt\",\n        xmlName: \"x-ms-if-sequence-number-lt\",\n        type: {\n            name: \"Number\",\n        },\n    },\n};\nexport const ifSequenceNumberEqualTo = {\n    parameterPath: [\n        \"options\",\n        \"sequenceNumberAccessConditions\",\n        \"ifSequenceNumberEqualTo\",\n    ],\n    mapper: {\n        serializedName: \"x-ms-if-sequence-number-eq\",\n        xmlName: \"x-ms-if-sequence-number-eq\",\n        type: {\n            name: \"Number\",\n        },\n    },\n};\nexport const pageWrite1 = {\n    parameterPath: \"pageWrite\",\n    mapper: {\n        defaultValue: \"clear\",\n        isConstant: true,\n        serializedName: \"x-ms-page-write\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const sourceUrl = {\n    parameterPath: \"sourceUrl\",\n    mapper: {\n        serializedName: \"x-ms-copy-source\",\n        required: true,\n        xmlName: \"x-ms-copy-source\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const sourceRange = {\n    parameterPath: \"sourceRange\",\n    mapper: {\n        serializedName: \"x-ms-source-range\",\n        required: true,\n        xmlName: \"x-ms-source-range\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const sourceContentCrc64 = {\n    parameterPath: [\"options\", \"sourceContentCrc64\"],\n    mapper: {\n        serializedName: \"x-ms-source-content-crc64\",\n        xmlName: \"x-ms-source-content-crc64\",\n        type: {\n            name: \"ByteArray\",\n        },\n    },\n};\nexport const range1 = {\n    parameterPath: \"range\",\n    mapper: {\n        serializedName: \"x-ms-range\",\n        required: true,\n        xmlName: \"x-ms-range\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const comp20 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"pagelist\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const prevsnapshot = {\n    parameterPath: [\"options\", \"prevsnapshot\"],\n    mapper: {\n        serializedName: \"prevsnapshot\",\n        xmlName: \"prevsnapshot\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const prevSnapshotUrl = {\n    parameterPath: [\"options\", \"prevSnapshotUrl\"],\n    mapper: {\n        serializedName: \"x-ms-previous-snapshot-url\",\n        xmlName: \"x-ms-previous-snapshot-url\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const sequenceNumberAction = {\n    parameterPath: \"sequenceNumberAction\",\n    mapper: {\n        serializedName: \"x-ms-sequence-number-action\",\n        required: true,\n        xmlName: \"x-ms-sequence-number-action\",\n        type: {\n            name: \"Enum\",\n            allowedValues: [\"max\", \"update\", \"increment\"],\n        },\n    },\n};\nexport const comp21 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"incrementalcopy\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const blobType1 = {\n    parameterPath: \"blobType\",\n    mapper: {\n        defaultValue: \"AppendBlob\",\n        isConstant: true,\n        serializedName: \"x-ms-blob-type\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const comp22 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"appendblock\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const maxSize = {\n    parameterPath: [\"options\", \"appendPositionAccessConditions\", \"maxSize\"],\n    mapper: {\n        serializedName: \"x-ms-blob-condition-maxsize\",\n        xmlName: \"x-ms-blob-condition-maxsize\",\n        type: {\n            name: \"Number\",\n        },\n    },\n};\nexport const appendPosition = {\n    parameterPath: [\n        \"options\",\n        \"appendPositionAccessConditions\",\n        \"appendPosition\",\n    ],\n    mapper: {\n        serializedName: \"x-ms-blob-condition-appendpos\",\n        xmlName: \"x-ms-blob-condition-appendpos\",\n        type: {\n            name: \"Number\",\n        },\n    },\n};\nexport const sourceRange1 = {\n    parameterPath: [\"options\", \"sourceRange\"],\n    mapper: {\n        serializedName: \"x-ms-source-range\",\n        xmlName: \"x-ms-source-range\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const comp23 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"seal\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const blobType2 = {\n    parameterPath: \"blobType\",\n    mapper: {\n        defaultValue: \"BlockBlob\",\n        isConstant: true,\n        serializedName: \"x-ms-blob-type\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const copySourceBlobProperties = {\n    parameterPath: [\"options\", \"copySourceBlobProperties\"],\n    mapper: {\n        serializedName: \"x-ms-copy-source-blob-properties\",\n        xmlName: \"x-ms-copy-source-blob-properties\",\n        type: {\n            name: \"Boolean\",\n        },\n    },\n};\nexport const comp24 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"block\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const blockId = {\n    parameterPath: \"blockId\",\n    mapper: {\n        serializedName: \"blockid\",\n        required: true,\n        xmlName: \"blockid\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const blocks = {\n    parameterPath: \"blocks\",\n    mapper: BlockLookupListMapper,\n};\nexport const comp25 = {\n    parameterPath: \"comp\",\n    mapper: {\n        defaultValue: \"blocklist\",\n        isConstant: true,\n        serializedName: \"comp\",\n        type: {\n            name: \"String\",\n        },\n    },\n};\nexport const listType = {\n    parameterPath: \"listType\",\n    mapper: {\n        defaultValue: \"committed\",\n        serializedName: \"blocklisttype\",\n        required: true,\n        xmlName: \"blocklisttype\",\n        type: {\n            name: \"Enum\",\n            allowedValues: [\"committed\", \"uncommitted\", \"all\"],\n        },\n    },\n};\n//# sourceMappingURL=parameters.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class containing Service operations. */\nexport class ServiceImpl {\n    /**\n     * Initialize a new instance of the class Service class.\n     * @param client Reference to the service client\n     */\n    constructor(client) {\n        this.client = client;\n    }\n    /**\n     * Sets properties for a storage account's Blob service endpoint, including properties for Storage\n     * Analytics and CORS (Cross-Origin Resource Sharing) rules\n     * @param blobServiceProperties The StorageService properties.\n     * @param options The options parameters.\n     */\n    setProperties(blobServiceProperties, options) {\n        return this.client.sendOperationRequest({ blobServiceProperties, options }, setPropertiesOperationSpec);\n    }\n    /**\n     * gets the properties of a storage account's Blob service, including properties for Storage Analytics\n     * and CORS (Cross-Origin Resource Sharing) rules.\n     * @param options The options parameters.\n     */\n    getProperties(options) {\n        return this.client.sendOperationRequest({ options }, getPropertiesOperationSpec);\n    }\n    /**\n     * Retrieves statistics related to replication for the Blob service. It is only available on the\n     * secondary location endpoint when read-access geo-redundant replication is enabled for the storage\n     * account.\n     * @param options The options parameters.\n     */\n    getStatistics(options) {\n        return this.client.sendOperationRequest({ options }, getStatisticsOperationSpec);\n    }\n    /**\n     * The List Containers Segment operation returns a list of the containers under the specified account\n     * @param options The options parameters.\n     */\n    listContainersSegment(options) {\n        return this.client.sendOperationRequest({ options }, listContainersSegmentOperationSpec);\n    }\n    /**\n     * Retrieves a user delegation key for the Blob service. This is only a valid operation when using\n     * bearer token authentication.\n     * @param keyInfo Key information\n     * @param options The options parameters.\n     */\n    getUserDelegationKey(keyInfo, options) {\n        return this.client.sendOperationRequest({ keyInfo, options }, getUserDelegationKeyOperationSpec);\n    }\n    /**\n     * Returns the sku name and account kind\n     * @param options The options parameters.\n     */\n    getAccountInfo(options) {\n        return this.client.sendOperationRequest({ options }, getAccountInfoOperationSpec);\n    }\n    /**\n     * The Batch operation allows multiple API calls to be embedded into a single HTTP request.\n     * @param contentLength The length of the request.\n     * @param multipartContentType Required. The value of this header must be multipart/mixed with a batch\n     *                             boundary. Example header value: multipart/mixed; boundary=batch_<GUID>\n     * @param body Initial data\n     * @param options The options parameters.\n     */\n    submitBatch(contentLength, multipartContentType, body, options) {\n        return this.client.sendOperationRequest({ contentLength, multipartContentType, body, options }, submitBatchOperationSpec);\n    }\n    /**\n     * The Filter Blobs operation enables callers to list blobs across all containers whose tags match a\n     * given search expression.  Filter blobs searches across all containers within a storage account but\n     * can be scoped within the expression to a single container.\n     * @param options The options parameters.\n     */\n    filterBlobs(options) {\n        return this.client.sendOperationRequest({ options }, filterBlobsOperationSpec);\n    }\n}\n// Operation Specifications\nconst xmlSerializer = coreClient.createSerializer(Mappers, /* isXml */ true);\nconst setPropertiesOperationSpec = {\n    path: \"/\",\n    httpMethod: \"PUT\",\n    responses: {\n        202: {\n            headersMapper: Mappers.ServiceSetPropertiesHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ServiceSetPropertiesExceptionHeaders,\n        },\n    },\n    requestBody: Parameters.blobServiceProperties,\n    queryParameters: [\n        Parameters.restype,\n        Parameters.comp,\n        Parameters.timeoutInSeconds,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.contentType,\n        Parameters.accept,\n        Parameters.version,\n        Parameters.requestId,\n    ],\n    isXML: true,\n    contentType: \"application/xml; charset=utf-8\",\n    mediaType: \"xml\",\n    serializer: xmlSerializer,\n};\nconst getPropertiesOperationSpec = {\n    path: \"/\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            bodyMapper: Mappers.BlobServiceProperties,\n            headersMapper: Mappers.ServiceGetPropertiesHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ServiceGetPropertiesExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.restype,\n        Parameters.comp,\n        Parameters.timeoutInSeconds,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst getStatisticsOperationSpec = {\n    path: \"/\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            bodyMapper: Mappers.BlobServiceStatistics,\n            headersMapper: Mappers.ServiceGetStatisticsHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ServiceGetStatisticsExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.restype,\n        Parameters.timeoutInSeconds,\n        Parameters.comp1,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst listContainersSegmentOperationSpec = {\n    path: \"/\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            bodyMapper: Mappers.ListContainersSegmentResponse,\n            headersMapper: Mappers.ServiceListContainersSegmentHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ServiceListContainersSegmentExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.comp2,\n        Parameters.prefix,\n        Parameters.marker,\n        Parameters.maxPageSize,\n        Parameters.include,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst getUserDelegationKeyOperationSpec = {\n    path: \"/\",\n    httpMethod: \"POST\",\n    responses: {\n        200: {\n            bodyMapper: Mappers.UserDelegationKey,\n            headersMapper: Mappers.ServiceGetUserDelegationKeyHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ServiceGetUserDelegationKeyExceptionHeaders,\n        },\n    },\n    requestBody: Parameters.keyInfo,\n    queryParameters: [\n        Parameters.restype,\n        Parameters.timeoutInSeconds,\n        Parameters.comp3,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.contentType,\n        Parameters.accept,\n        Parameters.version,\n        Parameters.requestId,\n    ],\n    isXML: true,\n    contentType: \"application/xml; charset=utf-8\",\n    mediaType: \"xml\",\n    serializer: xmlSerializer,\n};\nconst getAccountInfoOperationSpec = {\n    path: \"/\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            headersMapper: Mappers.ServiceGetAccountInfoHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ServiceGetAccountInfoExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.comp,\n        Parameters.timeoutInSeconds,\n        Parameters.restype1,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst submitBatchOperationSpec = {\n    path: \"/\",\n    httpMethod: \"POST\",\n    responses: {\n        202: {\n            bodyMapper: {\n                type: { name: \"Stream\" },\n                serializedName: \"parsedResponse\",\n            },\n            headersMapper: Mappers.ServiceSubmitBatchHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ServiceSubmitBatchExceptionHeaders,\n        },\n    },\n    requestBody: Parameters.body,\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp4],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.accept,\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.contentLength,\n        Parameters.multipartContentType,\n    ],\n    isXML: true,\n    contentType: \"application/xml; charset=utf-8\",\n    mediaType: \"xml\",\n    serializer: xmlSerializer,\n};\nconst filterBlobsOperationSpec = {\n    path: \"/\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            bodyMapper: Mappers.FilterBlobSegment,\n            headersMapper: Mappers.ServiceFilterBlobsHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ServiceFilterBlobsExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.marker,\n        Parameters.maxPageSize,\n        Parameters.comp5,\n        Parameters.where,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\n//# sourceMappingURL=service.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class containing Container operations. */\nexport class ContainerImpl {\n    /**\n     * Initialize a new instance of the class Container class.\n     * @param client Reference to the service client\n     */\n    constructor(client) {\n        this.client = client;\n    }\n    /**\n     * creates a new container under the specified account. If the container with the same name already\n     * exists, the operation fails\n     * @param options The options parameters.\n     */\n    create(options) {\n        return this.client.sendOperationRequest({ options }, createOperationSpec);\n    }\n    /**\n     * returns all user-defined metadata and system properties for the specified container. The data\n     * returned does not include the container's list of blobs\n     * @param options The options parameters.\n     */\n    getProperties(options) {\n        return this.client.sendOperationRequest({ options }, getPropertiesOperationSpec);\n    }\n    /**\n     * operation marks the specified container for deletion. The container and any blobs contained within\n     * it are later deleted during garbage collection\n     * @param options The options parameters.\n     */\n    delete(options) {\n        return this.client.sendOperationRequest({ options }, deleteOperationSpec);\n    }\n    /**\n     * operation sets one or more user-defined name-value pairs for the specified container.\n     * @param options The options parameters.\n     */\n    setMetadata(options) {\n        return this.client.sendOperationRequest({ options }, setMetadataOperationSpec);\n    }\n    /**\n     * gets the permissions for the specified container. The permissions indicate whether container data\n     * may be accessed publicly.\n     * @param options The options parameters.\n     */\n    getAccessPolicy(options) {\n        return this.client.sendOperationRequest({ options }, getAccessPolicyOperationSpec);\n    }\n    /**\n     * sets the permissions for the specified container. The permissions indicate whether blobs in a\n     * container may be accessed publicly.\n     * @param options The options parameters.\n     */\n    setAccessPolicy(options) {\n        return this.client.sendOperationRequest({ options }, setAccessPolicyOperationSpec);\n    }\n    /**\n     * Restores a previously-deleted container.\n     * @param options The options parameters.\n     */\n    restore(options) {\n        return this.client.sendOperationRequest({ options }, restoreOperationSpec);\n    }\n    /**\n     * Renames an existing container.\n     * @param sourceContainerName Required.  Specifies the name of the container to rename.\n     * @param options The options parameters.\n     */\n    rename(sourceContainerName, options) {\n        return this.client.sendOperationRequest({ sourceContainerName, options }, renameOperationSpec);\n    }\n    /**\n     * The Batch operation allows multiple API calls to be embedded into a single HTTP request.\n     * @param contentLength The length of the request.\n     * @param multipartContentType Required. The value of this header must be multipart/mixed with a batch\n     *                             boundary. Example header value: multipart/mixed; boundary=batch_<GUID>\n     * @param body Initial data\n     * @param options The options parameters.\n     */\n    submitBatch(contentLength, multipartContentType, body, options) {\n        return this.client.sendOperationRequest({ contentLength, multipartContentType, body, options }, submitBatchOperationSpec);\n    }\n    /**\n     * The Filter Blobs operation enables callers to list blobs in a container whose tags match a given\n     * search expression.  Filter blobs searches within the given container.\n     * @param options The options parameters.\n     */\n    filterBlobs(options) {\n        return this.client.sendOperationRequest({ options }, filterBlobsOperationSpec);\n    }\n    /**\n     * [Update] establishes and manages a lock on a container for delete operations. The lock duration can\n     * be 15 to 60 seconds, or can be infinite\n     * @param options The options parameters.\n     */\n    acquireLease(options) {\n        return this.client.sendOperationRequest({ options }, acquireLeaseOperationSpec);\n    }\n    /**\n     * [Update] establishes and manages a lock on a container for delete operations. The lock duration can\n     * be 15 to 60 seconds, or can be infinite\n     * @param leaseId Specifies the current lease ID on the resource.\n     * @param options The options parameters.\n     */\n    releaseLease(leaseId, options) {\n        return this.client.sendOperationRequest({ leaseId, options }, releaseLeaseOperationSpec);\n    }\n    /**\n     * [Update] establishes and manages a lock on a container for delete operations. The lock duration can\n     * be 15 to 60 seconds, or can be infinite\n     * @param leaseId Specifies the current lease ID on the resource.\n     * @param options The options parameters.\n     */\n    renewLease(leaseId, options) {\n        return this.client.sendOperationRequest({ leaseId, options }, renewLeaseOperationSpec);\n    }\n    /**\n     * [Update] establishes and manages a lock on a container for delete operations. The lock duration can\n     * be 15 to 60 seconds, or can be infinite\n     * @param options The options parameters.\n     */\n    breakLease(options) {\n        return this.client.sendOperationRequest({ options }, breakLeaseOperationSpec);\n    }\n    /**\n     * [Update] establishes and manages a lock on a container for delete operations. The lock duration can\n     * be 15 to 60 seconds, or can be infinite\n     * @param leaseId Specifies the current lease ID on the resource.\n     * @param proposedLeaseId Proposed lease ID, in a GUID string format. The Blob service returns 400\n     *                        (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor\n     *                        (String) for a list of valid GUID string formats.\n     * @param options The options parameters.\n     */\n    changeLease(leaseId, proposedLeaseId, options) {\n        return this.client.sendOperationRequest({ leaseId, proposedLeaseId, options }, changeLeaseOperationSpec);\n    }\n    /**\n     * [Update] The List Blobs operation returns a list of the blobs under the specified container\n     * @param options The options parameters.\n     */\n    listBlobFlatSegment(options) {\n        return this.client.sendOperationRequest({ options }, listBlobFlatSegmentOperationSpec);\n    }\n    /**\n     * [Update] The List Blobs operation returns a list of the blobs under the specified container\n     * @param delimiter When the request includes this parameter, the operation returns a BlobPrefix\n     *                  element in the response body that acts as a placeholder for all blobs whose names begin with the\n     *                  same substring up to the appearance of the delimiter character. The delimiter may be a single\n     *                  character or a string.\n     * @param options The options parameters.\n     */\n    listBlobHierarchySegment(delimiter, options) {\n        return this.client.sendOperationRequest({ delimiter, options }, listBlobHierarchySegmentOperationSpec);\n    }\n    /**\n     * Returns the sku name and account kind\n     * @param options The options parameters.\n     */\n    getAccountInfo(options) {\n        return this.client.sendOperationRequest({ options }, getAccountInfoOperationSpec);\n    }\n}\n// Operation Specifications\nconst xmlSerializer = coreClient.createSerializer(Mappers, /* isXml */ true);\nconst createOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.ContainerCreateHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerCreateExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.restype2],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.metadata,\n        Parameters.access,\n        Parameters.defaultEncryptionScope,\n        Parameters.preventEncryptionScopeOverride,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst getPropertiesOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            headersMapper: Mappers.ContainerGetPropertiesHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerGetPropertiesExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.restype2],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.leaseId,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst deleteOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"DELETE\",\n    responses: {\n        202: {\n            headersMapper: Mappers.ContainerDeleteHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerDeleteExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.restype2],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst setMetadataOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.ContainerSetMetadataHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerSetMetadataExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.restype2,\n        Parameters.comp6,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.metadata,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst getAccessPolicyOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            bodyMapper: {\n                type: {\n                    name: \"Sequence\",\n                    element: {\n                        type: { name: \"Composite\", className: \"SignedIdentifier\" },\n                    },\n                },\n                serializedName: \"SignedIdentifiers\",\n                xmlName: \"SignedIdentifiers\",\n                xmlIsWrapped: true,\n                xmlElementName: \"SignedIdentifier\",\n            },\n            headersMapper: Mappers.ContainerGetAccessPolicyHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerGetAccessPolicyExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.restype2,\n        Parameters.comp7,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.leaseId,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst setAccessPolicyOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.ContainerSetAccessPolicyHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerSetAccessPolicyExceptionHeaders,\n        },\n    },\n    requestBody: Parameters.containerAcl,\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.restype2,\n        Parameters.comp7,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.contentType,\n        Parameters.accept,\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.access,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n    ],\n    isXML: true,\n    contentType: \"application/xml; charset=utf-8\",\n    mediaType: \"xml\",\n    serializer: xmlSerializer,\n};\nconst restoreOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.ContainerRestoreHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerRestoreExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.restype2,\n        Parameters.comp8,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.deletedContainerName,\n        Parameters.deletedContainerVersion,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst renameOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.ContainerRenameHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerRenameExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.restype2,\n        Parameters.comp9,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.sourceContainerName,\n        Parameters.sourceLeaseId,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst submitBatchOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"POST\",\n    responses: {\n        202: {\n            bodyMapper: {\n                type: { name: \"Stream\" },\n                serializedName: \"parsedResponse\",\n            },\n            headersMapper: Mappers.ContainerSubmitBatchHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerSubmitBatchExceptionHeaders,\n        },\n    },\n    requestBody: Parameters.body,\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.comp4,\n        Parameters.restype2,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.accept,\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.contentLength,\n        Parameters.multipartContentType,\n    ],\n    isXML: true,\n    contentType: \"application/xml; charset=utf-8\",\n    mediaType: \"xml\",\n    serializer: xmlSerializer,\n};\nconst filterBlobsOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            bodyMapper: Mappers.FilterBlobSegment,\n            headersMapper: Mappers.ContainerFilterBlobsHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerFilterBlobsExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.marker,\n        Parameters.maxPageSize,\n        Parameters.comp5,\n        Parameters.where,\n        Parameters.restype2,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst acquireLeaseOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.ContainerAcquireLeaseHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerAcquireLeaseExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.restype2,\n        Parameters.comp10,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.action,\n        Parameters.duration,\n        Parameters.proposedLeaseId,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst releaseLeaseOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.ContainerReleaseLeaseHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerReleaseLeaseExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.restype2,\n        Parameters.comp10,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.action1,\n        Parameters.leaseId1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst renewLeaseOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.ContainerRenewLeaseHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerRenewLeaseExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.restype2,\n        Parameters.comp10,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.leaseId1,\n        Parameters.action2,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst breakLeaseOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"PUT\",\n    responses: {\n        202: {\n            headersMapper: Mappers.ContainerBreakLeaseHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerBreakLeaseExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.restype2,\n        Parameters.comp10,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.action3,\n        Parameters.breakPeriod,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst changeLeaseOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.ContainerChangeLeaseHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerChangeLeaseExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.restype2,\n        Parameters.comp10,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.leaseId1,\n        Parameters.action4,\n        Parameters.proposedLeaseId1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst listBlobFlatSegmentOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            bodyMapper: Mappers.ListBlobsFlatSegmentResponse,\n            headersMapper: Mappers.ContainerListBlobFlatSegmentHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerListBlobFlatSegmentExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.comp2,\n        Parameters.prefix,\n        Parameters.marker,\n        Parameters.maxPageSize,\n        Parameters.restype2,\n        Parameters.include1,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst listBlobHierarchySegmentOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            bodyMapper: Mappers.ListBlobsHierarchySegmentResponse,\n            headersMapper: Mappers.ContainerListBlobHierarchySegmentHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerListBlobHierarchySegmentExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.comp2,\n        Parameters.prefix,\n        Parameters.marker,\n        Parameters.maxPageSize,\n        Parameters.restype2,\n        Parameters.include1,\n        Parameters.delimiter,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst getAccountInfoOperationSpec = {\n    path: \"/{containerName}\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            headersMapper: Mappers.ContainerGetAccountInfoHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.ContainerGetAccountInfoExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.comp,\n        Parameters.timeoutInSeconds,\n        Parameters.restype1,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\n//# sourceMappingURL=container.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class containing Blob operations. */\nexport class BlobImpl {\n    /**\n     * Initialize a new instance of the class Blob class.\n     * @param client Reference to the service client\n     */\n    constructor(client) {\n        this.client = client;\n    }\n    /**\n     * The Download operation reads or downloads a blob from the system, including its metadata and\n     * properties. You can also call Download to read a snapshot.\n     * @param options The options parameters.\n     */\n    download(options) {\n        return this.client.sendOperationRequest({ options }, downloadOperationSpec);\n    }\n    /**\n     * The Get Properties operation returns all user-defined metadata, standard HTTP properties, and system\n     * properties for the blob. It does not return the content of the blob.\n     * @param options The options parameters.\n     */\n    getProperties(options) {\n        return this.client.sendOperationRequest({ options }, getPropertiesOperationSpec);\n    }\n    /**\n     * If the storage account's soft delete feature is disabled then, when a blob is deleted, it is\n     * permanently removed from the storage account. If the storage account's soft delete feature is\n     * enabled, then, when a blob is deleted, it is marked for deletion and becomes inaccessible\n     * immediately. However, the blob service retains the blob or snapshot for the number of days specified\n     * by the DeleteRetentionPolicy section of [Storage service properties]\n     * (Set-Blob-Service-Properties.md). After the specified number of days has passed, the blob's data is\n     * permanently removed from the storage account. Note that you continue to be charged for the\n     * soft-deleted blob's storage until it is permanently removed. Use the List Blobs API and specify the\n     * \"include=deleted\" query parameter to discover which blobs and snapshots have been soft deleted. You\n     * can then use the Undelete Blob API to restore a soft-deleted blob. All other operations on a\n     * soft-deleted blob or snapshot causes the service to return an HTTP status code of 404\n     * (ResourceNotFound).\n     * @param options The options parameters.\n     */\n    delete(options) {\n        return this.client.sendOperationRequest({ options }, deleteOperationSpec);\n    }\n    /**\n     * Undelete a blob that was previously soft deleted\n     * @param options The options parameters.\n     */\n    undelete(options) {\n        return this.client.sendOperationRequest({ options }, undeleteOperationSpec);\n    }\n    /**\n     * Sets the time a blob will expire and be deleted.\n     * @param expiryOptions Required. Indicates mode of the expiry time\n     * @param options The options parameters.\n     */\n    setExpiry(expiryOptions, options) {\n        return this.client.sendOperationRequest({ expiryOptions, options }, setExpiryOperationSpec);\n    }\n    /**\n     * The Set HTTP Headers operation sets system properties on the blob\n     * @param options The options parameters.\n     */\n    setHttpHeaders(options) {\n        return this.client.sendOperationRequest({ options }, setHttpHeadersOperationSpec);\n    }\n    /**\n     * The Set Immutability Policy operation sets the immutability policy on the blob\n     * @param options The options parameters.\n     */\n    setImmutabilityPolicy(options) {\n        return this.client.sendOperationRequest({ options }, setImmutabilityPolicyOperationSpec);\n    }\n    /**\n     * The Delete Immutability Policy operation deletes the immutability policy on the blob\n     * @param options The options parameters.\n     */\n    deleteImmutabilityPolicy(options) {\n        return this.client.sendOperationRequest({ options }, deleteImmutabilityPolicyOperationSpec);\n    }\n    /**\n     * The Set Legal Hold operation sets a legal hold on the blob.\n     * @param legalHold Specified if a legal hold should be set on the blob.\n     * @param options The options parameters.\n     */\n    setLegalHold(legalHold, options) {\n        return this.client.sendOperationRequest({ legalHold, options }, setLegalHoldOperationSpec);\n    }\n    /**\n     * The Set Blob Metadata operation sets user-defined metadata for the specified blob as one or more\n     * name-value pairs\n     * @param options The options parameters.\n     */\n    setMetadata(options) {\n        return this.client.sendOperationRequest({ options }, setMetadataOperationSpec);\n    }\n    /**\n     * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete\n     * operations\n     * @param options The options parameters.\n     */\n    acquireLease(options) {\n        return this.client.sendOperationRequest({ options }, acquireLeaseOperationSpec);\n    }\n    /**\n     * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete\n     * operations\n     * @param leaseId Specifies the current lease ID on the resource.\n     * @param options The options parameters.\n     */\n    releaseLease(leaseId, options) {\n        return this.client.sendOperationRequest({ leaseId, options }, releaseLeaseOperationSpec);\n    }\n    /**\n     * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete\n     * operations\n     * @param leaseId Specifies the current lease ID on the resource.\n     * @param options The options parameters.\n     */\n    renewLease(leaseId, options) {\n        return this.client.sendOperationRequest({ leaseId, options }, renewLeaseOperationSpec);\n    }\n    /**\n     * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete\n     * operations\n     * @param leaseId Specifies the current lease ID on the resource.\n     * @param proposedLeaseId Proposed lease ID, in a GUID string format. The Blob service returns 400\n     *                        (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor\n     *                        (String) for a list of valid GUID string formats.\n     * @param options The options parameters.\n     */\n    changeLease(leaseId, proposedLeaseId, options) {\n        return this.client.sendOperationRequest({ leaseId, proposedLeaseId, options }, changeLeaseOperationSpec);\n    }\n    /**\n     * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete\n     * operations\n     * @param options The options parameters.\n     */\n    breakLease(options) {\n        return this.client.sendOperationRequest({ options }, breakLeaseOperationSpec);\n    }\n    /**\n     * The Create Snapshot operation creates a read-only snapshot of a blob\n     * @param options The options parameters.\n     */\n    createSnapshot(options) {\n        return this.client.sendOperationRequest({ options }, createSnapshotOperationSpec);\n    }\n    /**\n     * The Start Copy From URL operation copies a blob or an internet resource to a new blob.\n     * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to\n     *                   2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would\n     *                   appear in a request URI. The source blob must either be public or must be authenticated via a shared\n     *                   access signature.\n     * @param options The options parameters.\n     */\n    startCopyFromURL(copySource, options) {\n        return this.client.sendOperationRequest({ copySource, options }, startCopyFromURLOperationSpec);\n    }\n    /**\n     * The Copy From URL operation copies a blob or an internet resource to a new blob. It will not return\n     * a response until the copy is complete.\n     * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to\n     *                   2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would\n     *                   appear in a request URI. The source blob must either be public or must be authenticated via a shared\n     *                   access signature.\n     * @param options The options parameters.\n     */\n    copyFromURL(copySource, options) {\n        return this.client.sendOperationRequest({ copySource, options }, copyFromURLOperationSpec);\n    }\n    /**\n     * The Abort Copy From URL operation aborts a pending Copy From URL operation, and leaves a destination\n     * blob with zero length and full metadata.\n     * @param copyId The copy identifier provided in the x-ms-copy-id header of the original Copy Blob\n     *               operation.\n     * @param options The options parameters.\n     */\n    abortCopyFromURL(copyId, options) {\n        return this.client.sendOperationRequest({ copyId, options }, abortCopyFromURLOperationSpec);\n    }\n    /**\n     * The Set Tier operation sets the tier on a blob. The operation is allowed on a page blob in a premium\n     * storage account and on a block blob in a blob storage account (locally redundant storage only). A\n     * premium page blob's tier determines the allowed size, IOPS, and bandwidth of the blob. A block\n     * blob's tier determines Hot/Cool/Archive storage type. This operation does not update the blob's\n     * ETag.\n     * @param tier Indicates the tier to be set on the blob.\n     * @param options The options parameters.\n     */\n    setTier(tier, options) {\n        return this.client.sendOperationRequest({ tier, options }, setTierOperationSpec);\n    }\n    /**\n     * Returns the sku name and account kind\n     * @param options The options parameters.\n     */\n    getAccountInfo(options) {\n        return this.client.sendOperationRequest({ options }, getAccountInfoOperationSpec);\n    }\n    /**\n     * The Query operation enables users to select/project on blob data by providing simple query\n     * expressions.\n     * @param options The options parameters.\n     */\n    query(options) {\n        return this.client.sendOperationRequest({ options }, queryOperationSpec);\n    }\n    /**\n     * The Get Tags operation enables users to get the tags associated with a blob.\n     * @param options The options parameters.\n     */\n    getTags(options) {\n        return this.client.sendOperationRequest({ options }, getTagsOperationSpec);\n    }\n    /**\n     * The Set Tags operation enables users to set tags on a blob.\n     * @param options The options parameters.\n     */\n    setTags(options) {\n        return this.client.sendOperationRequest({ options }, setTagsOperationSpec);\n    }\n}\n// Operation Specifications\nconst xmlSerializer = coreClient.createSerializer(Mappers, /* isXml */ true);\nconst downloadOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            bodyMapper: {\n                type: { name: \"Stream\" },\n                serializedName: \"parsedResponse\",\n            },\n            headersMapper: Mappers.BlobDownloadHeaders,\n        },\n        206: {\n            bodyMapper: {\n                type: { name: \"Stream\" },\n                serializedName: \"parsedResponse\",\n            },\n            headersMapper: Mappers.BlobDownloadHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobDownloadExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.snapshot,\n        Parameters.versionId,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.range,\n        Parameters.rangeGetContentMD5,\n        Parameters.rangeGetContentCRC64,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst getPropertiesOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"HEAD\",\n    responses: {\n        200: {\n            headersMapper: Mappers.BlobGetPropertiesHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobGetPropertiesExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.snapshot,\n        Parameters.versionId,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst deleteOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"DELETE\",\n    responses: {\n        202: {\n            headersMapper: Mappers.BlobDeleteHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobDeleteExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.snapshot,\n        Parameters.versionId,\n        Parameters.blobDeleteType,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.deleteSnapshots,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst undeleteOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.BlobUndeleteHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobUndeleteExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp8],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst setExpiryOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.BlobSetExpiryHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobSetExpiryExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp11],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.expiryOptions,\n        Parameters.expiresOn,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst setHttpHeadersOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.BlobSetHttpHeadersHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobSetHttpHeadersExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.comp, Parameters.timeoutInSeconds],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.blobCacheControl,\n        Parameters.blobContentType,\n        Parameters.blobContentMD5,\n        Parameters.blobContentEncoding,\n        Parameters.blobContentLanguage,\n        Parameters.blobContentDisposition,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst setImmutabilityPolicyOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.BlobSetImmutabilityPolicyHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobSetImmutabilityPolicyExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.snapshot,\n        Parameters.versionId,\n        Parameters.comp12,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.ifUnmodifiedSince,\n        Parameters.immutabilityPolicyExpiry,\n        Parameters.immutabilityPolicyMode,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst deleteImmutabilityPolicyOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"DELETE\",\n    responses: {\n        200: {\n            headersMapper: Mappers.BlobDeleteImmutabilityPolicyHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobDeleteImmutabilityPolicyExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.snapshot,\n        Parameters.versionId,\n        Parameters.comp12,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst setLegalHoldOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.BlobSetLegalHoldHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobSetLegalHoldExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.snapshot,\n        Parameters.versionId,\n        Parameters.comp13,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.legalHold,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst setMetadataOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.BlobSetMetadataHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobSetMetadataExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp6],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.metadata,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.encryptionScope,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst acquireLeaseOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.BlobAcquireLeaseHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobAcquireLeaseExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp10],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.action,\n        Parameters.duration,\n        Parameters.proposedLeaseId,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst releaseLeaseOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.BlobReleaseLeaseHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobReleaseLeaseExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp10],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.action1,\n        Parameters.leaseId1,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst renewLeaseOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.BlobRenewLeaseHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobRenewLeaseExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp10],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.leaseId1,\n        Parameters.action2,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst changeLeaseOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.BlobChangeLeaseHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobChangeLeaseExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp10],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.leaseId1,\n        Parameters.action4,\n        Parameters.proposedLeaseId1,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst breakLeaseOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        202: {\n            headersMapper: Mappers.BlobBreakLeaseHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobBreakLeaseExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp10],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.action3,\n        Parameters.breakPeriod,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst createSnapshotOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.BlobCreateSnapshotHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobCreateSnapshotExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp14],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.metadata,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.encryptionScope,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst startCopyFromURLOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        202: {\n            headersMapper: Mappers.BlobStartCopyFromURLHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobStartCopyFromURLExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.metadata,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.immutabilityPolicyExpiry,\n        Parameters.immutabilityPolicyMode,\n        Parameters.tier,\n        Parameters.rehydratePriority,\n        Parameters.sourceIfModifiedSince,\n        Parameters.sourceIfUnmodifiedSince,\n        Parameters.sourceIfMatch,\n        Parameters.sourceIfNoneMatch,\n        Parameters.sourceIfTags,\n        Parameters.copySource,\n        Parameters.blobTagsString,\n        Parameters.sealBlob,\n        Parameters.legalHold1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst copyFromURLOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        202: {\n            headersMapper: Mappers.BlobCopyFromURLHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobCopyFromURLExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.metadata,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.immutabilityPolicyExpiry,\n        Parameters.immutabilityPolicyMode,\n        Parameters.encryptionScope,\n        Parameters.tier,\n        Parameters.sourceIfModifiedSince,\n        Parameters.sourceIfUnmodifiedSince,\n        Parameters.sourceIfMatch,\n        Parameters.sourceIfNoneMatch,\n        Parameters.copySource,\n        Parameters.blobTagsString,\n        Parameters.legalHold1,\n        Parameters.xMsRequiresSync,\n        Parameters.sourceContentMD5,\n        Parameters.copySourceAuthorization,\n        Parameters.copySourceTags,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst abortCopyFromURLOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        204: {\n            headersMapper: Mappers.BlobAbortCopyFromURLHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobAbortCopyFromURLExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.comp15,\n        Parameters.copyId,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.leaseId,\n        Parameters.copyActionAbortConstant,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst setTierOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.BlobSetTierHeaders,\n        },\n        202: {\n            headersMapper: Mappers.BlobSetTierHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobSetTierExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.snapshot,\n        Parameters.versionId,\n        Parameters.comp16,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.leaseId,\n        Parameters.ifTags,\n        Parameters.rehydratePriority,\n        Parameters.tier1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst getAccountInfoOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            headersMapper: Mappers.BlobGetAccountInfoHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobGetAccountInfoExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.comp,\n        Parameters.timeoutInSeconds,\n        Parameters.restype1,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst queryOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"POST\",\n    responses: {\n        200: {\n            bodyMapper: {\n                type: { name: \"Stream\" },\n                serializedName: \"parsedResponse\",\n            },\n            headersMapper: Mappers.BlobQueryHeaders,\n        },\n        206: {\n            bodyMapper: {\n                type: { name: \"Stream\" },\n                serializedName: \"parsedResponse\",\n            },\n            headersMapper: Mappers.BlobQueryHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobQueryExceptionHeaders,\n        },\n    },\n    requestBody: Parameters.queryRequest,\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.snapshot,\n        Parameters.comp17,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.contentType,\n        Parameters.accept,\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n    ],\n    isXML: true,\n    contentType: \"application/xml; charset=utf-8\",\n    mediaType: \"xml\",\n    serializer: xmlSerializer,\n};\nconst getTagsOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            bodyMapper: Mappers.BlobTags,\n            headersMapper: Mappers.BlobGetTagsHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobGetTagsExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.snapshot,\n        Parameters.versionId,\n        Parameters.comp18,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.leaseId,\n        Parameters.ifTags,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst setTagsOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        204: {\n            headersMapper: Mappers.BlobSetTagsHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlobSetTagsExceptionHeaders,\n        },\n    },\n    requestBody: Parameters.tags,\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.versionId,\n        Parameters.comp18,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.contentType,\n        Parameters.accept,\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.leaseId,\n        Parameters.ifTags,\n        Parameters.transactionalContentMD5,\n        Parameters.transactionalContentCrc64,\n    ],\n    isXML: true,\n    contentType: \"application/xml; charset=utf-8\",\n    mediaType: \"xml\",\n    serializer: xmlSerializer,\n};\n//# sourceMappingURL=blob.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class containing PageBlob operations. */\nexport class PageBlobImpl {\n    /**\n     * Initialize a new instance of the class PageBlob class.\n     * @param client Reference to the service client\n     */\n    constructor(client) {\n        this.client = client;\n    }\n    /**\n     * The Create operation creates a new page blob.\n     * @param contentLength The length of the request.\n     * @param blobContentLength This header specifies the maximum size for the page blob, up to 1 TB. The\n     *                          page blob size must be aligned to a 512-byte boundary.\n     * @param options The options parameters.\n     */\n    create(contentLength, blobContentLength, options) {\n        return this.client.sendOperationRequest({ contentLength, blobContentLength, options }, createOperationSpec);\n    }\n    /**\n     * The Upload Pages operation writes a range of pages to a page blob\n     * @param contentLength The length of the request.\n     * @param body Initial data\n     * @param options The options parameters.\n     */\n    uploadPages(contentLength, body, options) {\n        return this.client.sendOperationRequest({ contentLength, body, options }, uploadPagesOperationSpec);\n    }\n    /**\n     * The Clear Pages operation clears a set of pages from a page blob\n     * @param contentLength The length of the request.\n     * @param options The options parameters.\n     */\n    clearPages(contentLength, options) {\n        return this.client.sendOperationRequest({ contentLength, options }, clearPagesOperationSpec);\n    }\n    /**\n     * The Upload Pages operation writes a range of pages to a page blob where the contents are read from a\n     * URL\n     * @param sourceUrl Specify a URL to the copy source.\n     * @param sourceRange Bytes of source data in the specified range. The length of this range should\n     *                    match the ContentLength header and x-ms-range/Range destination range header.\n     * @param contentLength The length of the request.\n     * @param range The range of bytes to which the source range would be written. The range should be 512\n     *              aligned and range-end is required.\n     * @param options The options parameters.\n     */\n    uploadPagesFromURL(sourceUrl, sourceRange, contentLength, range, options) {\n        return this.client.sendOperationRequest({ sourceUrl, sourceRange, contentLength, range, options }, uploadPagesFromURLOperationSpec);\n    }\n    /**\n     * The Get Page Ranges operation returns the list of valid page ranges for a page blob or snapshot of a\n     * page blob\n     * @param options The options parameters.\n     */\n    getPageRanges(options) {\n        return this.client.sendOperationRequest({ options }, getPageRangesOperationSpec);\n    }\n    /**\n     * The Get Page Ranges Diff operation returns the list of valid page ranges for a page blob that were\n     * changed between target blob and previous snapshot.\n     * @param options The options parameters.\n     */\n    getPageRangesDiff(options) {\n        return this.client.sendOperationRequest({ options }, getPageRangesDiffOperationSpec);\n    }\n    /**\n     * Resize the Blob\n     * @param blobContentLength This header specifies the maximum size for the page blob, up to 1 TB. The\n     *                          page blob size must be aligned to a 512-byte boundary.\n     * @param options The options parameters.\n     */\n    resize(blobContentLength, options) {\n        return this.client.sendOperationRequest({ blobContentLength, options }, resizeOperationSpec);\n    }\n    /**\n     * Update the sequence number of the blob\n     * @param sequenceNumberAction Required if the x-ms-blob-sequence-number header is set for the request.\n     *                             This property applies to page blobs only. This property indicates how the service should modify the\n     *                             blob's sequence number\n     * @param options The options parameters.\n     */\n    updateSequenceNumber(sequenceNumberAction, options) {\n        return this.client.sendOperationRequest({ sequenceNumberAction, options }, updateSequenceNumberOperationSpec);\n    }\n    /**\n     * The Copy Incremental operation copies a snapshot of the source page blob to a destination page blob.\n     * The snapshot is copied such that only the differential changes between the previously copied\n     * snapshot are transferred to the destination. The copied snapshots are complete copies of the\n     * original snapshot and can be read or copied from as usual. This API is supported since REST version\n     * 2016-05-31.\n     * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to\n     *                   2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would\n     *                   appear in a request URI. The source blob must either be public or must be authenticated via a shared\n     *                   access signature.\n     * @param options The options parameters.\n     */\n    copyIncremental(copySource, options) {\n        return this.client.sendOperationRequest({ copySource, options }, copyIncrementalOperationSpec);\n    }\n}\n// Operation Specifications\nconst xmlSerializer = coreClient.createSerializer(Mappers, /* isXml */ true);\nconst createOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.PageBlobCreateHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.PageBlobCreateExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.contentLength,\n        Parameters.metadata,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.blobCacheControl,\n        Parameters.blobContentType,\n        Parameters.blobContentMD5,\n        Parameters.blobContentEncoding,\n        Parameters.blobContentLanguage,\n        Parameters.blobContentDisposition,\n        Parameters.immutabilityPolicyExpiry,\n        Parameters.immutabilityPolicyMode,\n        Parameters.encryptionScope,\n        Parameters.tier,\n        Parameters.blobTagsString,\n        Parameters.legalHold1,\n        Parameters.blobType,\n        Parameters.blobContentLength,\n        Parameters.blobSequenceNumber,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst uploadPagesOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.PageBlobUploadPagesHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.PageBlobUploadPagesExceptionHeaders,\n        },\n    },\n    requestBody: Parameters.body1,\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp19],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.contentLength,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.range,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.encryptionScope,\n        Parameters.transactionalContentMD5,\n        Parameters.transactionalContentCrc64,\n        Parameters.contentType1,\n        Parameters.accept2,\n        Parameters.pageWrite,\n        Parameters.ifSequenceNumberLessThanOrEqualTo,\n        Parameters.ifSequenceNumberLessThan,\n        Parameters.ifSequenceNumberEqualTo,\n    ],\n    isXML: true,\n    contentType: \"application/xml; charset=utf-8\",\n    mediaType: \"binary\",\n    serializer: xmlSerializer,\n};\nconst clearPagesOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.PageBlobClearPagesHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.PageBlobClearPagesExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp19],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.contentLength,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.range,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.encryptionScope,\n        Parameters.ifSequenceNumberLessThanOrEqualTo,\n        Parameters.ifSequenceNumberLessThan,\n        Parameters.ifSequenceNumberEqualTo,\n        Parameters.pageWrite1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst uploadPagesFromURLOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.PageBlobUploadPagesFromURLHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.PageBlobUploadPagesFromURLExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp19],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.contentLength,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.encryptionScope,\n        Parameters.sourceIfModifiedSince,\n        Parameters.sourceIfUnmodifiedSince,\n        Parameters.sourceIfMatch,\n        Parameters.sourceIfNoneMatch,\n        Parameters.sourceContentMD5,\n        Parameters.copySourceAuthorization,\n        Parameters.pageWrite,\n        Parameters.ifSequenceNumberLessThanOrEqualTo,\n        Parameters.ifSequenceNumberLessThan,\n        Parameters.ifSequenceNumberEqualTo,\n        Parameters.sourceUrl,\n        Parameters.sourceRange,\n        Parameters.sourceContentCrc64,\n        Parameters.range1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst getPageRangesOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            bodyMapper: Mappers.PageList,\n            headersMapper: Mappers.PageBlobGetPageRangesHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.PageBlobGetPageRangesExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.marker,\n        Parameters.maxPageSize,\n        Parameters.snapshot,\n        Parameters.comp20,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.range,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst getPageRangesDiffOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            bodyMapper: Mappers.PageList,\n            headersMapper: Mappers.PageBlobGetPageRangesDiffHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.PageBlobGetPageRangesDiffExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.marker,\n        Parameters.maxPageSize,\n        Parameters.snapshot,\n        Parameters.comp20,\n        Parameters.prevsnapshot,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.range,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.prevSnapshotUrl,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst resizeOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.PageBlobResizeHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.PageBlobResizeExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.comp, Parameters.timeoutInSeconds],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.encryptionScope,\n        Parameters.blobContentLength,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst updateSequenceNumberOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.PageBlobUpdateSequenceNumberHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.PageBlobUpdateSequenceNumberExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.comp, Parameters.timeoutInSeconds],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.blobSequenceNumber,\n        Parameters.sequenceNumberAction,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst copyIncrementalOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        202: {\n            headersMapper: Mappers.PageBlobCopyIncrementalHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.PageBlobCopyIncrementalExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp21],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.copySource,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\n//# sourceMappingURL=pageBlob.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class containing AppendBlob operations. */\nexport class AppendBlobImpl {\n    /**\n     * Initialize a new instance of the class AppendBlob class.\n     * @param client Reference to the service client\n     */\n    constructor(client) {\n        this.client = client;\n    }\n    /**\n     * The Create Append Blob operation creates a new append blob.\n     * @param contentLength The length of the request.\n     * @param options The options parameters.\n     */\n    create(contentLength, options) {\n        return this.client.sendOperationRequest({ contentLength, options }, createOperationSpec);\n    }\n    /**\n     * The Append Block operation commits a new block of data to the end of an existing append blob. The\n     * Append Block operation is permitted only if the blob was created with x-ms-blob-type set to\n     * AppendBlob. Append Block is supported only on version 2015-02-21 version or later.\n     * @param contentLength The length of the request.\n     * @param body Initial data\n     * @param options The options parameters.\n     */\n    appendBlock(contentLength, body, options) {\n        return this.client.sendOperationRequest({ contentLength, body, options }, appendBlockOperationSpec);\n    }\n    /**\n     * The Append Block operation commits a new block of data to the end of an existing append blob where\n     * the contents are read from a source url. The Append Block operation is permitted only if the blob\n     * was created with x-ms-blob-type set to AppendBlob. Append Block is supported only on version\n     * 2015-02-21 version or later.\n     * @param sourceUrl Specify a URL to the copy source.\n     * @param contentLength The length of the request.\n     * @param options The options parameters.\n     */\n    appendBlockFromUrl(sourceUrl, contentLength, options) {\n        return this.client.sendOperationRequest({ sourceUrl, contentLength, options }, appendBlockFromUrlOperationSpec);\n    }\n    /**\n     * The Seal operation seals the Append Blob to make it read-only. Seal is supported only on version\n     * 2019-12-12 version or later.\n     * @param options The options parameters.\n     */\n    seal(options) {\n        return this.client.sendOperationRequest({ options }, sealOperationSpec);\n    }\n}\n// Operation Specifications\nconst xmlSerializer = coreClient.createSerializer(Mappers, /* isXml */ true);\nconst createOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.AppendBlobCreateHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.AppendBlobCreateExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.contentLength,\n        Parameters.metadata,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.blobCacheControl,\n        Parameters.blobContentType,\n        Parameters.blobContentMD5,\n        Parameters.blobContentEncoding,\n        Parameters.blobContentLanguage,\n        Parameters.blobContentDisposition,\n        Parameters.immutabilityPolicyExpiry,\n        Parameters.immutabilityPolicyMode,\n        Parameters.encryptionScope,\n        Parameters.blobTagsString,\n        Parameters.legalHold1,\n        Parameters.blobType1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst appendBlockOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.AppendBlobAppendBlockHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.AppendBlobAppendBlockExceptionHeaders,\n        },\n    },\n    requestBody: Parameters.body1,\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp22],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.contentLength,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.encryptionScope,\n        Parameters.transactionalContentMD5,\n        Parameters.transactionalContentCrc64,\n        Parameters.contentType1,\n        Parameters.accept2,\n        Parameters.maxSize,\n        Parameters.appendPosition,\n    ],\n    isXML: true,\n    contentType: \"application/xml; charset=utf-8\",\n    mediaType: \"binary\",\n    serializer: xmlSerializer,\n};\nconst appendBlockFromUrlOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.AppendBlobAppendBlockFromUrlHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.AppendBlobAppendBlockFromUrlExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp22],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.contentLength,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.encryptionScope,\n        Parameters.sourceIfModifiedSince,\n        Parameters.sourceIfUnmodifiedSince,\n        Parameters.sourceIfMatch,\n        Parameters.sourceIfNoneMatch,\n        Parameters.sourceContentMD5,\n        Parameters.copySourceAuthorization,\n        Parameters.transactionalContentMD5,\n        Parameters.sourceUrl,\n        Parameters.sourceContentCrc64,\n        Parameters.maxSize,\n        Parameters.appendPosition,\n        Parameters.sourceRange1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst sealOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        200: {\n            headersMapper: Mappers.AppendBlobSealHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.AppendBlobSealExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp23],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.appendPosition,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\n//# sourceMappingURL=appendBlob.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreClient from \"@azure/core-client\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class containing BlockBlob operations. */\nexport class BlockBlobImpl {\n    /**\n     * Initialize a new instance of the class BlockBlob class.\n     * @param client Reference to the service client\n     */\n    constructor(client) {\n        this.client = client;\n    }\n    /**\n     * The Upload Block Blob operation updates the content of an existing block blob. Updating an existing\n     * block blob overwrites any existing metadata on the blob. Partial updates are not supported with Put\n     * Blob; the content of the existing blob is overwritten with the content of the new blob. To perform a\n     * partial update of the content of a block blob, use the Put Block List operation.\n     * @param contentLength The length of the request.\n     * @param body Initial data\n     * @param options The options parameters.\n     */\n    upload(contentLength, body, options) {\n        return this.client.sendOperationRequest({ contentLength, body, options }, uploadOperationSpec);\n    }\n    /**\n     * The Put Blob from URL operation creates a new Block Blob where the contents of the blob are read\n     * from a given URL.  This API is supported beginning with the 2020-04-08 version. Partial updates are\n     * not supported with Put Blob from URL; the content of an existing blob is overwritten with the\n     * content of the new blob.  To perform partial updates to a block blob’s contents using a source URL,\n     * use the Put Block from URL API in conjunction with Put Block List.\n     * @param contentLength The length of the request.\n     * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to\n     *                   2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would\n     *                   appear in a request URI. The source blob must either be public or must be authenticated via a shared\n     *                   access signature.\n     * @param options The options parameters.\n     */\n    putBlobFromUrl(contentLength, copySource, options) {\n        return this.client.sendOperationRequest({ contentLength, copySource, options }, putBlobFromUrlOperationSpec);\n    }\n    /**\n     * The Stage Block operation creates a new block to be committed as part of a blob\n     * @param blockId A valid Base64 string value that identifies the block. Prior to encoding, the string\n     *                must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified\n     *                for the blockid parameter must be the same size for each block.\n     * @param contentLength The length of the request.\n     * @param body Initial data\n     * @param options The options parameters.\n     */\n    stageBlock(blockId, contentLength, body, options) {\n        return this.client.sendOperationRequest({ blockId, contentLength, body, options }, stageBlockOperationSpec);\n    }\n    /**\n     * The Stage Block operation creates a new block to be committed as part of a blob where the contents\n     * are read from a URL.\n     * @param blockId A valid Base64 string value that identifies the block. Prior to encoding, the string\n     *                must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified\n     *                for the blockid parameter must be the same size for each block.\n     * @param contentLength The length of the request.\n     * @param sourceUrl Specify a URL to the copy source.\n     * @param options The options parameters.\n     */\n    stageBlockFromURL(blockId, contentLength, sourceUrl, options) {\n        return this.client.sendOperationRequest({ blockId, contentLength, sourceUrl, options }, stageBlockFromURLOperationSpec);\n    }\n    /**\n     * The Commit Block List operation writes a blob by specifying the list of block IDs that make up the\n     * blob. In order to be written as part of a blob, a block must have been successfully written to the\n     * server in a prior Put Block operation. You can call Put Block List to update a blob by uploading\n     * only those blocks that have changed, then committing the new and existing blocks together. You can\n     * do this by specifying whether to commit a block from the committed block list or from the\n     * uncommitted block list, or to commit the most recently uploaded version of the block, whichever list\n     * it may belong to.\n     * @param blocks Blob Blocks.\n     * @param options The options parameters.\n     */\n    commitBlockList(blocks, options) {\n        return this.client.sendOperationRequest({ blocks, options }, commitBlockListOperationSpec);\n    }\n    /**\n     * The Get Block List operation retrieves the list of blocks that have been uploaded as part of a block\n     * blob\n     * @param listType Specifies whether to return the list of committed blocks, the list of uncommitted\n     *                 blocks, or both lists together.\n     * @param options The options parameters.\n     */\n    getBlockList(listType, options) {\n        return this.client.sendOperationRequest({ listType, options }, getBlockListOperationSpec);\n    }\n}\n// Operation Specifications\nconst xmlSerializer = coreClient.createSerializer(Mappers, /* isXml */ true);\nconst uploadOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.BlockBlobUploadHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlockBlobUploadExceptionHeaders,\n        },\n    },\n    requestBody: Parameters.body1,\n    queryParameters: [Parameters.timeoutInSeconds],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.contentLength,\n        Parameters.metadata,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.blobCacheControl,\n        Parameters.blobContentType,\n        Parameters.blobContentMD5,\n        Parameters.blobContentEncoding,\n        Parameters.blobContentLanguage,\n        Parameters.blobContentDisposition,\n        Parameters.immutabilityPolicyExpiry,\n        Parameters.immutabilityPolicyMode,\n        Parameters.encryptionScope,\n        Parameters.tier,\n        Parameters.blobTagsString,\n        Parameters.legalHold1,\n        Parameters.transactionalContentMD5,\n        Parameters.transactionalContentCrc64,\n        Parameters.contentType1,\n        Parameters.accept2,\n        Parameters.blobType2,\n    ],\n    isXML: true,\n    contentType: \"application/xml; charset=utf-8\",\n    mediaType: \"binary\",\n    serializer: xmlSerializer,\n};\nconst putBlobFromUrlOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.BlockBlobPutBlobFromUrlHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlockBlobPutBlobFromUrlExceptionHeaders,\n        },\n    },\n    queryParameters: [Parameters.timeoutInSeconds],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.contentLength,\n        Parameters.metadata,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.blobCacheControl,\n        Parameters.blobContentType,\n        Parameters.blobContentMD5,\n        Parameters.blobContentEncoding,\n        Parameters.blobContentLanguage,\n        Parameters.blobContentDisposition,\n        Parameters.encryptionScope,\n        Parameters.tier,\n        Parameters.sourceIfModifiedSince,\n        Parameters.sourceIfUnmodifiedSince,\n        Parameters.sourceIfMatch,\n        Parameters.sourceIfNoneMatch,\n        Parameters.sourceIfTags,\n        Parameters.copySource,\n        Parameters.blobTagsString,\n        Parameters.sourceContentMD5,\n        Parameters.copySourceAuthorization,\n        Parameters.copySourceTags,\n        Parameters.transactionalContentMD5,\n        Parameters.blobType2,\n        Parameters.copySourceBlobProperties,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst stageBlockOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.BlockBlobStageBlockHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlockBlobStageBlockExceptionHeaders,\n        },\n    },\n    requestBody: Parameters.body1,\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.comp24,\n        Parameters.blockId,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.contentLength,\n        Parameters.leaseId,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.encryptionScope,\n        Parameters.transactionalContentMD5,\n        Parameters.transactionalContentCrc64,\n        Parameters.contentType1,\n        Parameters.accept2,\n    ],\n    isXML: true,\n    contentType: \"application/xml; charset=utf-8\",\n    mediaType: \"binary\",\n    serializer: xmlSerializer,\n};\nconst stageBlockFromURLOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.BlockBlobStageBlockFromURLHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlockBlobStageBlockFromURLExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.comp24,\n        Parameters.blockId,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.contentLength,\n        Parameters.leaseId,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.encryptionScope,\n        Parameters.sourceIfModifiedSince,\n        Parameters.sourceIfUnmodifiedSince,\n        Parameters.sourceIfMatch,\n        Parameters.sourceIfNoneMatch,\n        Parameters.sourceContentMD5,\n        Parameters.copySourceAuthorization,\n        Parameters.sourceUrl,\n        Parameters.sourceContentCrc64,\n        Parameters.sourceRange1,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\nconst commitBlockListOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"PUT\",\n    responses: {\n        201: {\n            headersMapper: Mappers.BlockBlobCommitBlockListHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlockBlobCommitBlockListExceptionHeaders,\n        },\n    },\n    requestBody: Parameters.blocks,\n    queryParameters: [Parameters.timeoutInSeconds, Parameters.comp25],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.contentType,\n        Parameters.accept,\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.metadata,\n        Parameters.leaseId,\n        Parameters.ifModifiedSince,\n        Parameters.ifUnmodifiedSince,\n        Parameters.encryptionKey,\n        Parameters.encryptionKeySha256,\n        Parameters.encryptionAlgorithm,\n        Parameters.ifMatch,\n        Parameters.ifNoneMatch,\n        Parameters.ifTags,\n        Parameters.blobCacheControl,\n        Parameters.blobContentType,\n        Parameters.blobContentMD5,\n        Parameters.blobContentEncoding,\n        Parameters.blobContentLanguage,\n        Parameters.blobContentDisposition,\n        Parameters.immutabilityPolicyExpiry,\n        Parameters.immutabilityPolicyMode,\n        Parameters.encryptionScope,\n        Parameters.tier,\n        Parameters.blobTagsString,\n        Parameters.legalHold1,\n        Parameters.transactionalContentMD5,\n        Parameters.transactionalContentCrc64,\n    ],\n    isXML: true,\n    contentType: \"application/xml; charset=utf-8\",\n    mediaType: \"xml\",\n    serializer: xmlSerializer,\n};\nconst getBlockListOperationSpec = {\n    path: \"/{containerName}/{blob}\",\n    httpMethod: \"GET\",\n    responses: {\n        200: {\n            bodyMapper: Mappers.BlockList,\n            headersMapper: Mappers.BlockBlobGetBlockListHeaders,\n        },\n        default: {\n            bodyMapper: Mappers.StorageError,\n            headersMapper: Mappers.BlockBlobGetBlockListExceptionHeaders,\n        },\n    },\n    queryParameters: [\n        Parameters.timeoutInSeconds,\n        Parameters.snapshot,\n        Parameters.comp25,\n        Parameters.listType,\n    ],\n    urlParameters: [Parameters.url],\n    headerParameters: [\n        Parameters.version,\n        Parameters.requestId,\n        Parameters.accept1,\n        Parameters.leaseId,\n        Parameters.ifTags,\n    ],\n    isXML: true,\n    serializer: xmlSerializer,\n};\n//# sourceMappingURL=blockBlob.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreHttpCompat from \"@azure/core-http-compat\";\nimport { ServiceImpl, ContainerImpl, BlobImpl, PageBlobImpl, AppendBlobImpl, BlockBlobImpl, } from \"./operations\";\nexport class StorageClient extends coreHttpCompat.ExtendedServiceClient {\n    /**\n     * Initializes a new instance of the StorageClient class.\n     * @param url The URL of the service account, container, or blob that is the target of the desired\n     *            operation.\n     * @param options The parameter options\n     */\n    constructor(url, options) {\n        var _a, _b;\n        if (url === undefined) {\n            throw new Error(\"'url' cannot be null\");\n        }\n        // Initializing default values for options\n        if (!options) {\n            options = {};\n        }\n        const defaults = {\n            requestContentType: \"application/json; charset=utf-8\",\n        };\n        const packageDetails = `azsdk-js-azure-storage-blob/12.26.0`;\n        const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n            ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n            : `${packageDetails}`;\n        const optionsWithDefaults = Object.assign(Object.assign(Object.assign({}, defaults), options), { userAgentOptions: {\n                userAgentPrefix,\n            }, endpoint: (_b = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri) !== null && _b !== void 0 ? _b : \"{url}\" });\n        super(optionsWithDefaults);\n        // Parameter assignments\n        this.url = url;\n        // Assigning values to Constant parameters\n        this.version = options.version || \"2025-01-05\";\n        this.service = new ServiceImpl(this);\n        this.container = new ContainerImpl(this);\n        this.blob = new BlobImpl(this);\n        this.pageBlob = new PageBlobImpl(this);\n        this.appendBlob = new AppendBlobImpl(this);\n        this.blockBlob = new BlockBlobImpl(this);\n    }\n}\n//# sourceMappingURL=storageClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { StorageClient } from \"./generated/src\";\n/**\n * @internal\n */\nexport class StorageContextClient extends StorageClient {\n    async sendOperationRequest(operationArguments, operationSpec) {\n        const operationSpecToSend = Object.assign({}, operationSpec);\n        if (operationSpecToSend.path === \"/{containerName}\" ||\n            operationSpecToSend.path === \"/{containerName}/{blob}\") {\n            operationSpecToSend.path = \"\";\n        }\n        return super.sendOperationRequest(operationArguments, operationSpecToSend);\n    }\n}\n//# sourceMappingURL=StorageContextClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { StorageContextClient } from \"./StorageContextClient\";\nimport { getCoreClientOptions, getCredentialFromPipeline } from \"./Pipeline\";\nimport { escapeURLPath, getURLScheme, iEqual, getAccountNameFromUrl } from \"./utils/utils.common\";\n/**\n * A StorageClient represents a based URL class for {@link BlobServiceClient}, {@link ContainerClient}\n * and etc.\n */\nexport class StorageClient {\n    /**\n     * Creates an instance of StorageClient.\n     * @param url - url to resource\n     * @param pipeline - request policy pipeline.\n     */\n    constructor(url, pipeline) {\n        // URL should be encoded and only once, protocol layer shouldn't encode URL again\n        this.url = escapeURLPath(url);\n        this.accountName = getAccountNameFromUrl(url);\n        this.pipeline = pipeline;\n        this.storageClientContext = new StorageContextClient(this.url, getCoreClientOptions(pipeline));\n        this.isHttps = iEqual(getURLScheme(this.url) || \"\", \"https\");\n        this.credential = getCredentialFromPipeline(pipeline);\n        // Override protocol layer's default content-type\n        const storageClientContext = this.storageClientContext;\n        storageClientContext.requestContentType = undefined;\n    }\n}\n//# sourceMappingURL=StorageClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createTracingClient } from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"./constants\";\n/**\n * Creates a span using the global tracer.\n * @internal\n */\nexport const tracingClient = createTracingClient({\n    packageName: \"@azure/storage-blob\",\n    packageVersion: SDK_VERSION,\n    namespace: \"Microsoft.Storage\",\n});\n//# sourceMappingURL=tracing.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a blob. Setting\n * a value to true means that any SAS which uses these permissions will grant permissions for that operation. Once all\n * the values are set, this should be serialized with toString and set as the permissions field on a\n * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but\n * the order of the permissions is particular and this class guarantees correctness.\n */\nexport class BlobSASPermissions {\n    constructor() {\n        /**\n         * Specifies Read access granted.\n         */\n        this.read = false;\n        /**\n         * Specifies Add access granted.\n         */\n        this.add = false;\n        /**\n         * Specifies Create access granted.\n         */\n        this.create = false;\n        /**\n         * Specifies Write access granted.\n         */\n        this.write = false;\n        /**\n         * Specifies Delete access granted.\n         */\n        this.delete = false;\n        /**\n         * Specifies Delete version access granted.\n         */\n        this.deleteVersion = false;\n        /**\n         * Specfies Tag access granted.\n         */\n        this.tag = false;\n        /**\n         * Specifies Move access granted.\n         */\n        this.move = false;\n        /**\n         * Specifies Execute access granted.\n         */\n        this.execute = false;\n        /**\n         * Specifies SetImmutabilityPolicy access granted.\n         */\n        this.setImmutabilityPolicy = false;\n        /**\n         * Specifies that Permanent Delete is permitted.\n         */\n        this.permanentDelete = false;\n    }\n    /**\n     * Creates a {@link BlobSASPermissions} from the specified permissions string. This method will throw an\n     * Error if it encounters a character that does not correspond to a valid permission.\n     *\n     * @param permissions -\n     */\n    static parse(permissions) {\n        const blobSASPermissions = new BlobSASPermissions();\n        for (const char of permissions) {\n            switch (char) {\n                case \"r\":\n                    blobSASPermissions.read = true;\n                    break;\n                case \"a\":\n                    blobSASPermissions.add = true;\n                    break;\n                case \"c\":\n                    blobSASPermissions.create = true;\n                    break;\n                case \"w\":\n                    blobSASPermissions.write = true;\n                    break;\n                case \"d\":\n                    blobSASPermissions.delete = true;\n                    break;\n                case \"x\":\n                    blobSASPermissions.deleteVersion = true;\n                    break;\n                case \"t\":\n                    blobSASPermissions.tag = true;\n                    break;\n                case \"m\":\n                    blobSASPermissions.move = true;\n                    break;\n                case \"e\":\n                    blobSASPermissions.execute = true;\n                    break;\n                case \"i\":\n                    blobSASPermissions.setImmutabilityPolicy = true;\n                    break;\n                case \"y\":\n                    blobSASPermissions.permanentDelete = true;\n                    break;\n                default:\n                    throw new RangeError(`Invalid permission: ${char}`);\n            }\n        }\n        return blobSASPermissions;\n    }\n    /**\n     * Creates a {@link BlobSASPermissions} from a raw object which contains same keys as it\n     * and boolean values for them.\n     *\n     * @param permissionLike -\n     */\n    static from(permissionLike) {\n        const blobSASPermissions = new BlobSASPermissions();\n        if (permissionLike.read) {\n            blobSASPermissions.read = true;\n        }\n        if (permissionLike.add) {\n            blobSASPermissions.add = true;\n        }\n        if (permissionLike.create) {\n            blobSASPermissions.create = true;\n        }\n        if (permissionLike.write) {\n            blobSASPermissions.write = true;\n        }\n        if (permissionLike.delete) {\n            blobSASPermissions.delete = true;\n        }\n        if (permissionLike.deleteVersion) {\n            blobSASPermissions.deleteVersion = true;\n        }\n        if (permissionLike.tag) {\n            blobSASPermissions.tag = true;\n        }\n        if (permissionLike.move) {\n            blobSASPermissions.move = true;\n        }\n        if (permissionLike.execute) {\n            blobSASPermissions.execute = true;\n        }\n        if (permissionLike.setImmutabilityPolicy) {\n            blobSASPermissions.setImmutabilityPolicy = true;\n        }\n        if (permissionLike.permanentDelete) {\n            blobSASPermissions.permanentDelete = true;\n        }\n        return blobSASPermissions;\n    }\n    /**\n     * Converts the given permissions to a string. Using this method will guarantee the permissions are in an\n     * order accepted by the service.\n     *\n     * @returns A string which represents the BlobSASPermissions\n     */\n    toString() {\n        const permissions = [];\n        if (this.read) {\n            permissions.push(\"r\");\n        }\n        if (this.add) {\n            permissions.push(\"a\");\n        }\n        if (this.create) {\n            permissions.push(\"c\");\n        }\n        if (this.write) {\n            permissions.push(\"w\");\n        }\n        if (this.delete) {\n            permissions.push(\"d\");\n        }\n        if (this.deleteVersion) {\n            permissions.push(\"x\");\n        }\n        if (this.tag) {\n            permissions.push(\"t\");\n        }\n        if (this.move) {\n            permissions.push(\"m\");\n        }\n        if (this.execute) {\n            permissions.push(\"e\");\n        }\n        if (this.setImmutabilityPolicy) {\n            permissions.push(\"i\");\n        }\n        if (this.permanentDelete) {\n            permissions.push(\"y\");\n        }\n        return permissions.join(\"\");\n    }\n}\n//# sourceMappingURL=BlobSASPermissions.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a container.\n * Setting a value to true means that any SAS which uses these permissions will grant permissions for that operation.\n * Once all the values are set, this should be serialized with toString and set as the permissions field on a\n * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but\n * the order of the permissions is particular and this class guarantees correctness.\n */\nexport class ContainerSASPermissions {\n    constructor() {\n        /**\n         * Specifies Read access granted.\n         */\n        this.read = false;\n        /**\n         * Specifies Add access granted.\n         */\n        this.add = false;\n        /**\n         * Specifies Create access granted.\n         */\n        this.create = false;\n        /**\n         * Specifies Write access granted.\n         */\n        this.write = false;\n        /**\n         * Specifies Delete access granted.\n         */\n        this.delete = false;\n        /**\n         * Specifies Delete version access granted.\n         */\n        this.deleteVersion = false;\n        /**\n         * Specifies List access granted.\n         */\n        this.list = false;\n        /**\n         * Specfies Tag access granted.\n         */\n        this.tag = false;\n        /**\n         * Specifies Move access granted.\n         */\n        this.move = false;\n        /**\n         * Specifies Execute access granted.\n         */\n        this.execute = false;\n        /**\n         * Specifies SetImmutabilityPolicy access granted.\n         */\n        this.setImmutabilityPolicy = false;\n        /**\n         * Specifies that Permanent Delete is permitted.\n         */\n        this.permanentDelete = false;\n        /**\n         * Specifies that Filter Blobs by Tags is permitted.\n         */\n        this.filterByTags = false;\n    }\n    /**\n     * Creates an {@link ContainerSASPermissions} from the specified permissions string. This method will throw an\n     * Error if it encounters a character that does not correspond to a valid permission.\n     *\n     * @param permissions -\n     */\n    static parse(permissions) {\n        const containerSASPermissions = new ContainerSASPermissions();\n        for (const char of permissions) {\n            switch (char) {\n                case \"r\":\n                    containerSASPermissions.read = true;\n                    break;\n                case \"a\":\n                    containerSASPermissions.add = true;\n                    break;\n                case \"c\":\n                    containerSASPermissions.create = true;\n                    break;\n                case \"w\":\n                    containerSASPermissions.write = true;\n                    break;\n                case \"d\":\n                    containerSASPermissions.delete = true;\n                    break;\n                case \"l\":\n                    containerSASPermissions.list = true;\n                    break;\n                case \"t\":\n                    containerSASPermissions.tag = true;\n                    break;\n                case \"x\":\n                    containerSASPermissions.deleteVersion = true;\n                    break;\n                case \"m\":\n                    containerSASPermissions.move = true;\n                    break;\n                case \"e\":\n                    containerSASPermissions.execute = true;\n                    break;\n                case \"i\":\n                    containerSASPermissions.setImmutabilityPolicy = true;\n                    break;\n                case \"y\":\n                    containerSASPermissions.permanentDelete = true;\n                    break;\n                case \"f\":\n                    containerSASPermissions.filterByTags = true;\n                    break;\n                default:\n                    throw new RangeError(`Invalid permission ${char}`);\n            }\n        }\n        return containerSASPermissions;\n    }\n    /**\n     * Creates a {@link ContainerSASPermissions} from a raw object which contains same keys as it\n     * and boolean values for them.\n     *\n     * @param permissionLike -\n     */\n    static from(permissionLike) {\n        const containerSASPermissions = new ContainerSASPermissions();\n        if (permissionLike.read) {\n            containerSASPermissions.read = true;\n        }\n        if (permissionLike.add) {\n            containerSASPermissions.add = true;\n        }\n        if (permissionLike.create) {\n            containerSASPermissions.create = true;\n        }\n        if (permissionLike.write) {\n            containerSASPermissions.write = true;\n        }\n        if (permissionLike.delete) {\n            containerSASPermissions.delete = true;\n        }\n        if (permissionLike.list) {\n            containerSASPermissions.list = true;\n        }\n        if (permissionLike.deleteVersion) {\n            containerSASPermissions.deleteVersion = true;\n        }\n        if (permissionLike.tag) {\n            containerSASPermissions.tag = true;\n        }\n        if (permissionLike.move) {\n            containerSASPermissions.move = true;\n        }\n        if (permissionLike.execute) {\n            containerSASPermissions.execute = true;\n        }\n        if (permissionLike.setImmutabilityPolicy) {\n            containerSASPermissions.setImmutabilityPolicy = true;\n        }\n        if (permissionLike.permanentDelete) {\n            containerSASPermissions.permanentDelete = true;\n        }\n        if (permissionLike.filterByTags) {\n            containerSASPermissions.filterByTags = true;\n        }\n        return containerSASPermissions;\n    }\n    /**\n     * Converts the given permissions to a string. Using this method will guarantee the permissions are in an\n     * order accepted by the service.\n     *\n     * The order of the characters should be as specified here to ensure correctness.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas\n     *\n     */\n    toString() {\n        const permissions = [];\n        if (this.read) {\n            permissions.push(\"r\");\n        }\n        if (this.add) {\n            permissions.push(\"a\");\n        }\n        if (this.create) {\n            permissions.push(\"c\");\n        }\n        if (this.write) {\n            permissions.push(\"w\");\n        }\n        if (this.delete) {\n            permissions.push(\"d\");\n        }\n        if (this.deleteVersion) {\n            permissions.push(\"x\");\n        }\n        if (this.list) {\n            permissions.push(\"l\");\n        }\n        if (this.tag) {\n            permissions.push(\"t\");\n        }\n        if (this.move) {\n            permissions.push(\"m\");\n        }\n        if (this.execute) {\n            permissions.push(\"e\");\n        }\n        if (this.setImmutabilityPolicy) {\n            permissions.push(\"i\");\n        }\n        if (this.permanentDelete) {\n            permissions.push(\"y\");\n        }\n        if (this.filterByTags) {\n            permissions.push(\"f\");\n        }\n        return permissions.join(\"\");\n    }\n}\n//# sourceMappingURL=ContainerSASPermissions.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nexport class UserDelegationKeyCredential {\n}\n//# sourceMappingURL=UserDelegationKeyCredential.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Generate SasIPRange format string. For example:\n *\n * \"8.8.8.8\" or \"1.1.1.1-255.255.255.255\"\n *\n * @param ipRange -\n */\nexport function ipRangeToString(ipRange) {\n    return ipRange.end ? `${ipRange.start}-${ipRange.end}` : ipRange.start;\n}\n//# sourceMappingURL=SasIPRange.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { ipRangeToString } from \"./SasIPRange\";\nimport { truncatedISO8061Date } from \"../utils/utils.common\";\n/**\n * Protocols for generated SAS.\n */\nexport var SASProtocol;\n(function (SASProtocol) {\n    /**\n     * Protocol that allows HTTPS only\n     */\n    SASProtocol[\"Https\"] = \"https\";\n    /**\n     * Protocol that allows both HTTPS and HTTP\n     */\n    SASProtocol[\"HttpsAndHttp\"] = \"https,http\";\n})(SASProtocol || (SASProtocol = {}));\n/**\n * Represents the components that make up an Azure Storage SAS' query parameters. This type is not constructed directly\n * by the user; it is only generated by the {@link AccountSASSignatureValues} and {@link BlobSASSignatureValues}\n * types. Once generated, it can be encoded into a {@link String} and appended to a URL directly (though caution should\n * be taken here in case there are existing query parameters, which might affect the appropriate means of appending\n * these query parameters).\n *\n * NOTE: Instances of this class are immutable.\n */\nexport class SASQueryParameters {\n    /**\n     * Optional. IP range allowed for this SAS.\n     *\n     * @readonly\n     */\n    get ipRange() {\n        if (this.ipRangeInner) {\n            return {\n                end: this.ipRangeInner.end,\n                start: this.ipRangeInner.start,\n            };\n        }\n        return undefined;\n    }\n    constructor(version, signature, permissionsOrOptions, services, resourceTypes, protocol, startsOn, expiresOn, ipRange, identifier, resource, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType, userDelegationKey, preauthorizedAgentObjectId, correlationId, encryptionScope) {\n        this.version = version;\n        this.signature = signature;\n        if (permissionsOrOptions !== undefined && typeof permissionsOrOptions !== \"string\") {\n            // SASQueryParametersOptions\n            this.permissions = permissionsOrOptions.permissions;\n            this.services = permissionsOrOptions.services;\n            this.resourceTypes = permissionsOrOptions.resourceTypes;\n            this.protocol = permissionsOrOptions.protocol;\n            this.startsOn = permissionsOrOptions.startsOn;\n            this.expiresOn = permissionsOrOptions.expiresOn;\n            this.ipRangeInner = permissionsOrOptions.ipRange;\n            this.identifier = permissionsOrOptions.identifier;\n            this.encryptionScope = permissionsOrOptions.encryptionScope;\n            this.resource = permissionsOrOptions.resource;\n            this.cacheControl = permissionsOrOptions.cacheControl;\n            this.contentDisposition = permissionsOrOptions.contentDisposition;\n            this.contentEncoding = permissionsOrOptions.contentEncoding;\n            this.contentLanguage = permissionsOrOptions.contentLanguage;\n            this.contentType = permissionsOrOptions.contentType;\n            if (permissionsOrOptions.userDelegationKey) {\n                this.signedOid = permissionsOrOptions.userDelegationKey.signedObjectId;\n                this.signedTenantId = permissionsOrOptions.userDelegationKey.signedTenantId;\n                this.signedStartsOn = permissionsOrOptions.userDelegationKey.signedStartsOn;\n                this.signedExpiresOn = permissionsOrOptions.userDelegationKey.signedExpiresOn;\n                this.signedService = permissionsOrOptions.userDelegationKey.signedService;\n                this.signedVersion = permissionsOrOptions.userDelegationKey.signedVersion;\n                this.preauthorizedAgentObjectId = permissionsOrOptions.preauthorizedAgentObjectId;\n                this.correlationId = permissionsOrOptions.correlationId;\n            }\n        }\n        else {\n            this.services = services;\n            this.resourceTypes = resourceTypes;\n            this.expiresOn = expiresOn;\n            this.permissions = permissionsOrOptions;\n            this.protocol = protocol;\n            this.startsOn = startsOn;\n            this.ipRangeInner = ipRange;\n            this.encryptionScope = encryptionScope;\n            this.identifier = identifier;\n            this.resource = resource;\n            this.cacheControl = cacheControl;\n            this.contentDisposition = contentDisposition;\n            this.contentEncoding = contentEncoding;\n            this.contentLanguage = contentLanguage;\n            this.contentType = contentType;\n            if (userDelegationKey) {\n                this.signedOid = userDelegationKey.signedObjectId;\n                this.signedTenantId = userDelegationKey.signedTenantId;\n                this.signedStartsOn = userDelegationKey.signedStartsOn;\n                this.signedExpiresOn = userDelegationKey.signedExpiresOn;\n                this.signedService = userDelegationKey.signedService;\n                this.signedVersion = userDelegationKey.signedVersion;\n                this.preauthorizedAgentObjectId = preauthorizedAgentObjectId;\n                this.correlationId = correlationId;\n            }\n        }\n    }\n    /**\n     * Encodes all SAS query parameters into a string that can be appended to a URL.\n     *\n     */\n    toString() {\n        const params = [\n            \"sv\",\n            \"ss\",\n            \"srt\",\n            \"spr\",\n            \"st\",\n            \"se\",\n            \"sip\",\n            \"si\",\n            \"ses\",\n            \"skoid\", // Signed object ID\n            \"sktid\", // Signed tenant ID\n            \"skt\", // Signed key start time\n            \"ske\", // Signed key expiry time\n            \"sks\", // Signed key service\n            \"skv\", // Signed key version\n            \"sr\",\n            \"sp\",\n            \"sig\",\n            \"rscc\",\n            \"rscd\",\n            \"rsce\",\n            \"rscl\",\n            \"rsct\",\n            \"saoid\",\n            \"scid\",\n        ];\n        const queries = [];\n        for (const param of params) {\n            switch (param) {\n                case \"sv\":\n                    this.tryAppendQueryParameter(queries, param, this.version);\n                    break;\n                case \"ss\":\n                    this.tryAppendQueryParameter(queries, param, this.services);\n                    break;\n                case \"srt\":\n                    this.tryAppendQueryParameter(queries, param, this.resourceTypes);\n                    break;\n                case \"spr\":\n                    this.tryAppendQueryParameter(queries, param, this.protocol);\n                    break;\n                case \"st\":\n                    this.tryAppendQueryParameter(queries, param, this.startsOn ? truncatedISO8061Date(this.startsOn, false) : undefined);\n                    break;\n                case \"se\":\n                    this.tryAppendQueryParameter(queries, param, this.expiresOn ? truncatedISO8061Date(this.expiresOn, false) : undefined);\n                    break;\n                case \"sip\":\n                    this.tryAppendQueryParameter(queries, param, this.ipRange ? ipRangeToString(this.ipRange) : undefined);\n                    break;\n                case \"si\":\n                    this.tryAppendQueryParameter(queries, param, this.identifier);\n                    break;\n                case \"ses\":\n                    this.tryAppendQueryParameter(queries, param, this.encryptionScope);\n                    break;\n                case \"skoid\": // Signed object ID\n                    this.tryAppendQueryParameter(queries, param, this.signedOid);\n                    break;\n                case \"sktid\": // Signed tenant ID\n                    this.tryAppendQueryParameter(queries, param, this.signedTenantId);\n                    break;\n                case \"skt\": // Signed key start time\n                    this.tryAppendQueryParameter(queries, param, this.signedStartsOn ? truncatedISO8061Date(this.signedStartsOn, false) : undefined);\n                    break;\n                case \"ske\": // Signed key expiry time\n                    this.tryAppendQueryParameter(queries, param, this.signedExpiresOn ? truncatedISO8061Date(this.signedExpiresOn, false) : undefined);\n                    break;\n                case \"sks\": // Signed key service\n                    this.tryAppendQueryParameter(queries, param, this.signedService);\n                    break;\n                case \"skv\": // Signed key version\n                    this.tryAppendQueryParameter(queries, param, this.signedVersion);\n                    break;\n                case \"sr\":\n                    this.tryAppendQueryParameter(queries, param, this.resource);\n                    break;\n                case \"sp\":\n                    this.tryAppendQueryParameter(queries, param, this.permissions);\n                    break;\n                case \"sig\":\n                    this.tryAppendQueryParameter(queries, param, this.signature);\n                    break;\n                case \"rscc\":\n                    this.tryAppendQueryParameter(queries, param, this.cacheControl);\n                    break;\n                case \"rscd\":\n                    this.tryAppendQueryParameter(queries, param, this.contentDisposition);\n                    break;\n                case \"rsce\":\n                    this.tryAppendQueryParameter(queries, param, this.contentEncoding);\n                    break;\n                case \"rscl\":\n                    this.tryAppendQueryParameter(queries, param, this.contentLanguage);\n                    break;\n                case \"rsct\":\n                    this.tryAppendQueryParameter(queries, param, this.contentType);\n                    break;\n                case \"saoid\":\n                    this.tryAppendQueryParameter(queries, param, this.preauthorizedAgentObjectId);\n                    break;\n                case \"scid\":\n                    this.tryAppendQueryParameter(queries, param, this.correlationId);\n                    break;\n            }\n        }\n        return queries.join(\"&\");\n    }\n    /**\n     * A private helper method used to filter and append query key/value pairs into an array.\n     *\n     * @param queries -\n     * @param key -\n     * @param value -\n     */\n    tryAppendQueryParameter(queries, key, value) {\n        if (!value) {\n            return;\n        }\n        key = encodeURIComponent(key);\n        value = encodeURIComponent(value);\n        if (key.length > 0 && value.length > 0) {\n            queries.push(`${key}=${value}`);\n        }\n    }\n}\n//# sourceMappingURL=SASQueryParameters.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { BlobSASPermissions } from \"./BlobSASPermissions\";\nimport { ContainerSASPermissions } from \"./ContainerSASPermissions\";\nimport { StorageSharedKeyCredential } from \"../credentials/StorageSharedKeyCredential\";\nimport { UserDelegationKeyCredential } from \"../credentials/UserDelegationKeyCredential\";\nimport { ipRangeToString } from \"./SasIPRange\";\nimport { SASQueryParameters } from \"./SASQueryParameters\";\nimport { SERVICE_VERSION } from \"../utils/constants\";\nimport { truncatedISO8061Date } from \"../utils/utils.common\";\nexport function generateBlobSASQueryParameters(blobSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {\n    return generateBlobSASQueryParametersInternal(blobSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName).sasQueryParameters;\n}\nexport function generateBlobSASQueryParametersInternal(blobSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {\n    const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;\n    const sharedKeyCredential = sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential\n        ? sharedKeyCredentialOrUserDelegationKey\n        : undefined;\n    let userDelegationKeyCredential;\n    if (sharedKeyCredential === undefined && accountName !== undefined) {\n        userDelegationKeyCredential = new UserDelegationKeyCredential(accountName, sharedKeyCredentialOrUserDelegationKey);\n    }\n    if (sharedKeyCredential === undefined && userDelegationKeyCredential === undefined) {\n        throw TypeError(\"Invalid sharedKeyCredential, userDelegationKey or accountName.\");\n    }\n    // Version 2020-12-06 adds support for encryptionscope in SAS.\n    if (version >= \"2020-12-06\") {\n        if (sharedKeyCredential !== undefined) {\n            return generateBlobSASQueryParameters20201206(blobSASSignatureValues, sharedKeyCredential);\n        }\n        else {\n            return generateBlobSASQueryParametersUDK20201206(blobSASSignatureValues, userDelegationKeyCredential);\n        }\n    }\n    // Version 2019-12-12 adds support for the blob tags permission.\n    // Version 2018-11-09 adds support for the signed resource and signed blob snapshot time fields.\n    // https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas#constructing-the-signature-string\n    if (version >= \"2018-11-09\") {\n        if (sharedKeyCredential !== undefined) {\n            return generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential);\n        }\n        else {\n            // Version 2020-02-10 delegation SAS signature construction includes preauthorizedAgentObjectId, agentObjectId, correlationId.\n            if (version >= \"2020-02-10\") {\n                return generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userDelegationKeyCredential);\n            }\n            else {\n                return generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential);\n            }\n        }\n    }\n    if (version >= \"2015-04-05\") {\n        if (sharedKeyCredential !== undefined) {\n            return generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential);\n        }\n        else {\n            throw new RangeError(\"'version' must be >= '2018-11-09' when generating user delegation SAS using user delegation key.\");\n        }\n    }\n    throw new RangeError(\"'version' must be >= '2015-04-05'.\");\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2015-04-05 AND BEFORE 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential) {\n    blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n    if (!blobSASSignatureValues.identifier &&\n        !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {\n        throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\");\n    }\n    let resource = \"c\";\n    if (blobSASSignatureValues.blobName) {\n        resource = \"b\";\n    }\n    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n    let verifiedPermissions;\n    if (blobSASSignatureValues.permissions) {\n        if (blobSASSignatureValues.blobName) {\n            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n        }\n        else {\n            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n        }\n    }\n    // Signature is generated on the un-url-encoded values.\n    const stringToSign = [\n        verifiedPermissions ? verifiedPermissions : \"\",\n        blobSASSignatureValues.startsOn\n            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n            : \"\",\n        blobSASSignatureValues.expiresOn\n            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n            : \"\",\n        getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n        blobSASSignatureValues.identifier,\n        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n        blobSASSignatureValues.version,\n        blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n        blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n        blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n        blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n        blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n    ].join(\"\\n\");\n    const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n    return {\n        sasQueryParameters: new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType),\n        stringToSign: stringToSign,\n    };\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential) {\n    blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n    if (!blobSASSignatureValues.identifier &&\n        !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {\n        throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\");\n    }\n    let resource = \"c\";\n    let timestamp = blobSASSignatureValues.snapshotTime;\n    if (blobSASSignatureValues.blobName) {\n        resource = \"b\";\n        if (blobSASSignatureValues.snapshotTime) {\n            resource = \"bs\";\n        }\n        else if (blobSASSignatureValues.versionId) {\n            resource = \"bv\";\n            timestamp = blobSASSignatureValues.versionId;\n        }\n    }\n    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n    let verifiedPermissions;\n    if (blobSASSignatureValues.permissions) {\n        if (blobSASSignatureValues.blobName) {\n            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n        }\n        else {\n            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n        }\n    }\n    // Signature is generated on the un-url-encoded values.\n    const stringToSign = [\n        verifiedPermissions ? verifiedPermissions : \"\",\n        blobSASSignatureValues.startsOn\n            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n            : \"\",\n        blobSASSignatureValues.expiresOn\n            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n            : \"\",\n        getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n        blobSASSignatureValues.identifier,\n        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n        blobSASSignatureValues.version,\n        resource,\n        timestamp,\n        blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n        blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n        blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n        blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n        blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n    ].join(\"\\n\");\n    const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n    return {\n        sasQueryParameters: new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType),\n        stringToSign: stringToSign,\n    };\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20201206(blobSASSignatureValues, sharedKeyCredential) {\n    blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n    if (!blobSASSignatureValues.identifier &&\n        !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {\n        throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\");\n    }\n    let resource = \"c\";\n    let timestamp = blobSASSignatureValues.snapshotTime;\n    if (blobSASSignatureValues.blobName) {\n        resource = \"b\";\n        if (blobSASSignatureValues.snapshotTime) {\n            resource = \"bs\";\n        }\n        else if (blobSASSignatureValues.versionId) {\n            resource = \"bv\";\n            timestamp = blobSASSignatureValues.versionId;\n        }\n    }\n    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n    let verifiedPermissions;\n    if (blobSASSignatureValues.permissions) {\n        if (blobSASSignatureValues.blobName) {\n            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n        }\n        else {\n            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n        }\n    }\n    // Signature is generated on the un-url-encoded values.\n    const stringToSign = [\n        verifiedPermissions ? verifiedPermissions : \"\",\n        blobSASSignatureValues.startsOn\n            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n            : \"\",\n        blobSASSignatureValues.expiresOn\n            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n            : \"\",\n        getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n        blobSASSignatureValues.identifier,\n        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n        blobSASSignatureValues.version,\n        resource,\n        timestamp,\n        blobSASSignatureValues.encryptionScope,\n        blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n        blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n        blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n        blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n        blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n    ].join(\"\\n\");\n    const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n    return {\n        sasQueryParameters: new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, undefined, undefined, undefined, blobSASSignatureValues.encryptionScope),\n        stringToSign: stringToSign,\n    };\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential) {\n    blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n    // Stored access policies are not supported for a user delegation SAS.\n    if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n        throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\");\n    }\n    let resource = \"c\";\n    let timestamp = blobSASSignatureValues.snapshotTime;\n    if (blobSASSignatureValues.blobName) {\n        resource = \"b\";\n        if (blobSASSignatureValues.snapshotTime) {\n            resource = \"bs\";\n        }\n        else if (blobSASSignatureValues.versionId) {\n            resource = \"bv\";\n            timestamp = blobSASSignatureValues.versionId;\n        }\n    }\n    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n    let verifiedPermissions;\n    if (blobSASSignatureValues.permissions) {\n        if (blobSASSignatureValues.blobName) {\n            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n        }\n        else {\n            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n        }\n    }\n    // Signature is generated on the un-url-encoded values.\n    const stringToSign = [\n        verifiedPermissions ? verifiedPermissions : \"\",\n        blobSASSignatureValues.startsOn\n            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n            : \"\",\n        blobSASSignatureValues.expiresOn\n            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n            : \"\",\n        getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n        userDelegationKeyCredential.userDelegationKey.signedObjectId,\n        userDelegationKeyCredential.userDelegationKey.signedTenantId,\n        userDelegationKeyCredential.userDelegationKey.signedStartsOn\n            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n            : \"\",\n        userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n            : \"\",\n        userDelegationKeyCredential.userDelegationKey.signedService,\n        userDelegationKeyCredential.userDelegationKey.signedVersion,\n        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n        blobSASSignatureValues.version,\n        resource,\n        timestamp,\n        blobSASSignatureValues.cacheControl,\n        blobSASSignatureValues.contentDisposition,\n        blobSASSignatureValues.contentEncoding,\n        blobSASSignatureValues.contentLanguage,\n        blobSASSignatureValues.contentType,\n    ].join(\"\\n\");\n    const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n    return {\n        sasQueryParameters: new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey),\n        stringToSign: stringToSign,\n    };\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-02-10.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userDelegationKeyCredential) {\n    blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n    // Stored access policies are not supported for a user delegation SAS.\n    if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n        throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\");\n    }\n    let resource = \"c\";\n    let timestamp = blobSASSignatureValues.snapshotTime;\n    if (blobSASSignatureValues.blobName) {\n        resource = \"b\";\n        if (blobSASSignatureValues.snapshotTime) {\n            resource = \"bs\";\n        }\n        else if (blobSASSignatureValues.versionId) {\n            resource = \"bv\";\n            timestamp = blobSASSignatureValues.versionId;\n        }\n    }\n    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n    let verifiedPermissions;\n    if (blobSASSignatureValues.permissions) {\n        if (blobSASSignatureValues.blobName) {\n            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n        }\n        else {\n            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n        }\n    }\n    // Signature is generated on the un-url-encoded values.\n    const stringToSign = [\n        verifiedPermissions ? verifiedPermissions : \"\",\n        blobSASSignatureValues.startsOn\n            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n            : \"\",\n        blobSASSignatureValues.expiresOn\n            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n            : \"\",\n        getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n        userDelegationKeyCredential.userDelegationKey.signedObjectId,\n        userDelegationKeyCredential.userDelegationKey.signedTenantId,\n        userDelegationKeyCredential.userDelegationKey.signedStartsOn\n            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n            : \"\",\n        userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n            : \"\",\n        userDelegationKeyCredential.userDelegationKey.signedService,\n        userDelegationKeyCredential.userDelegationKey.signedVersion,\n        blobSASSignatureValues.preauthorizedAgentObjectId,\n        undefined, // agentObjectId\n        blobSASSignatureValues.correlationId,\n        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n        blobSASSignatureValues.version,\n        resource,\n        timestamp,\n        blobSASSignatureValues.cacheControl,\n        blobSASSignatureValues.contentDisposition,\n        blobSASSignatureValues.contentEncoding,\n        blobSASSignatureValues.contentLanguage,\n        blobSASSignatureValues.contentType,\n    ].join(\"\\n\");\n    const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n    return {\n        sasQueryParameters: new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey, blobSASSignatureValues.preauthorizedAgentObjectId, blobSASSignatureValues.correlationId),\n        stringToSign: stringToSign,\n    };\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20201206(blobSASSignatureValues, userDelegationKeyCredential) {\n    blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n    // Stored access policies are not supported for a user delegation SAS.\n    if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n        throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\");\n    }\n    let resource = \"c\";\n    let timestamp = blobSASSignatureValues.snapshotTime;\n    if (blobSASSignatureValues.blobName) {\n        resource = \"b\";\n        if (blobSASSignatureValues.snapshotTime) {\n            resource = \"bs\";\n        }\n        else if (blobSASSignatureValues.versionId) {\n            resource = \"bv\";\n            timestamp = blobSASSignatureValues.versionId;\n        }\n    }\n    // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n    let verifiedPermissions;\n    if (blobSASSignatureValues.permissions) {\n        if (blobSASSignatureValues.blobName) {\n            verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n        }\n        else {\n            verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n        }\n    }\n    // Signature is generated on the un-url-encoded values.\n    const stringToSign = [\n        verifiedPermissions ? verifiedPermissions : \"\",\n        blobSASSignatureValues.startsOn\n            ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n            : \"\",\n        blobSASSignatureValues.expiresOn\n            ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n            : \"\",\n        getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n        userDelegationKeyCredential.userDelegationKey.signedObjectId,\n        userDelegationKeyCredential.userDelegationKey.signedTenantId,\n        userDelegationKeyCredential.userDelegationKey.signedStartsOn\n            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n            : \"\",\n        userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n            ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n            : \"\",\n        userDelegationKeyCredential.userDelegationKey.signedService,\n        userDelegationKeyCredential.userDelegationKey.signedVersion,\n        blobSASSignatureValues.preauthorizedAgentObjectId,\n        undefined, // agentObjectId\n        blobSASSignatureValues.correlationId,\n        blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n        blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n        blobSASSignatureValues.version,\n        resource,\n        timestamp,\n        blobSASSignatureValues.encryptionScope,\n        blobSASSignatureValues.cacheControl,\n        blobSASSignatureValues.contentDisposition,\n        blobSASSignatureValues.contentEncoding,\n        blobSASSignatureValues.contentLanguage,\n        blobSASSignatureValues.contentType,\n    ].join(\"\\n\");\n    const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n    return {\n        sasQueryParameters: new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey, blobSASSignatureValues.preauthorizedAgentObjectId, blobSASSignatureValues.correlationId, blobSASSignatureValues.encryptionScope),\n        stringToSign: stringToSign,\n    };\n}\nfunction getCanonicalName(accountName, containerName, blobName) {\n    // Container: \"/blob/account/containerName\"\n    // Blob:      \"/blob/account/containerName/blobName\"\n    const elements = [`/blob/${accountName}/${containerName}`];\n    if (blobName) {\n        elements.push(`/${blobName}`);\n    }\n    return elements.join(\"\");\n}\nfunction SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues) {\n    const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;\n    if (blobSASSignatureValues.snapshotTime && version < \"2018-11-09\") {\n        throw RangeError(\"'version' must be >= '2018-11-09' when providing 'snapshotTime'.\");\n    }\n    if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.snapshotTime) {\n        throw RangeError(\"Must provide 'blobName' when providing 'snapshotTime'.\");\n    }\n    if (blobSASSignatureValues.versionId && version < \"2019-10-10\") {\n        throw RangeError(\"'version' must be >= '2019-10-10' when providing 'versionId'.\");\n    }\n    if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.versionId) {\n        throw RangeError(\"Must provide 'blobName' when providing 'versionId'.\");\n    }\n    if (blobSASSignatureValues.permissions &&\n        blobSASSignatureValues.permissions.setImmutabilityPolicy &&\n        version < \"2020-08-04\") {\n        throw RangeError(\"'version' must be >= '2020-08-04' when provided 'i' permission.\");\n    }\n    if (blobSASSignatureValues.permissions &&\n        blobSASSignatureValues.permissions.deleteVersion &&\n        version < \"2019-10-10\") {\n        throw RangeError(\"'version' must be >= '2019-10-10' when providing 'x' permission.\");\n    }\n    if (blobSASSignatureValues.permissions &&\n        blobSASSignatureValues.permissions.permanentDelete &&\n        version < \"2019-10-10\") {\n        throw RangeError(\"'version' must be >= '2019-10-10' when providing 'y' permission.\");\n    }\n    if (blobSASSignatureValues.permissions &&\n        blobSASSignatureValues.permissions.tag &&\n        version < \"2019-12-12\") {\n        throw RangeError(\"'version' must be >= '2019-12-12' when providing 't' permission.\");\n    }\n    if (version < \"2020-02-10\" &&\n        blobSASSignatureValues.permissions &&\n        (blobSASSignatureValues.permissions.move || blobSASSignatureValues.permissions.execute)) {\n        throw RangeError(\"'version' must be >= '2020-02-10' when providing the 'm' or 'e' permission.\");\n    }\n    if (version < \"2021-04-10\" &&\n        blobSASSignatureValues.permissions &&\n        blobSASSignatureValues.permissions.filterByTags) {\n        throw RangeError(\"'version' must be >= '2021-04-10' when providing the 'f' permission.\");\n    }\n    if (version < \"2020-02-10\" &&\n        (blobSASSignatureValues.preauthorizedAgentObjectId || blobSASSignatureValues.correlationId)) {\n        throw RangeError(\"'version' must be >= '2020-02-10' when providing 'preauthorizedAgentObjectId' or 'correlationId'.\");\n    }\n    if (blobSASSignatureValues.encryptionScope && version < \"2020-12-06\") {\n        throw RangeError(\"'version' must be >= '2020-12-06' when provided 'encryptionScope' in SAS.\");\n    }\n    blobSASSignatureValues.version = version;\n    return blobSASSignatureValues;\n}\n//# sourceMappingURL=BlobSASSignatureValues.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { randomUUID } from \"@azure/core-util\";\nimport { ETagNone } from \"./utils/constants\";\nimport { tracingClient } from \"./utils/tracing\";\nimport { assertResponse } from \"./utils/utils.common\";\n/**\n * A client that manages leases for a {@link ContainerClient} or a {@link BlobClient}.\n */\nexport class BlobLeaseClient {\n    /**\n     * Gets the lease Id.\n     *\n     * @readonly\n     */\n    get leaseId() {\n        return this._leaseId;\n    }\n    /**\n     * Gets the url.\n     *\n     * @readonly\n     */\n    get url() {\n        return this._url;\n    }\n    /**\n     * Creates an instance of BlobLeaseClient.\n     * @param client - The client to make the lease operation requests.\n     * @param leaseId - Initial proposed lease id.\n     */\n    constructor(client, leaseId) {\n        const clientContext = client.storageClientContext;\n        this._url = client.url;\n        if (client.name === undefined) {\n            this._isContainer = true;\n            this._containerOrBlobOperation = clientContext.container;\n        }\n        else {\n            this._isContainer = false;\n            this._containerOrBlobOperation = clientContext.blob;\n        }\n        if (!leaseId) {\n            leaseId = randomUUID();\n        }\n        this._leaseId = leaseId;\n    }\n    /**\n     * Establishes and manages a lock on a container for delete operations, or on a blob\n     * for write and delete operations.\n     * The lock duration can be 15 to 60 seconds, or can be infinite.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container\n     * and\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob\n     *\n     * @param duration - Must be between 15 to 60 seconds, or infinite (-1)\n     * @param options - option to configure lease management operations.\n     * @returns Response data for acquire lease operation.\n     */\n    async acquireLease(duration, options = {}) {\n        var _a, _b, _c, _d, _e;\n        if (this._isContainer &&\n            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||\n                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||\n                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {\n            throw new RangeError(\"The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.\");\n        }\n        return tracingClient.withSpan(\"BlobLeaseClient-acquireLease\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this._containerOrBlobOperation.acquireLease({\n                abortSignal: options.abortSignal,\n                duration,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                proposedLeaseId: this._leaseId,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * To change the ID of the lease.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container\n     * and\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob\n     *\n     * @param proposedLeaseId - the proposed new lease Id.\n     * @param options - option to configure lease management operations.\n     * @returns Response data for change lease operation.\n     */\n    async changeLease(proposedLeaseId, options = {}) {\n        var _a, _b, _c, _d, _e;\n        if (this._isContainer &&\n            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||\n                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||\n                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {\n            throw new RangeError(\"The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.\");\n        }\n        return tracingClient.withSpan(\"BlobLeaseClient-changeLease\", options, async (updatedOptions) => {\n            var _a;\n            const response = assertResponse(await this._containerOrBlobOperation.changeLease(this._leaseId, proposedLeaseId, {\n                abortSignal: options.abortSignal,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n            this._leaseId = proposedLeaseId;\n            return response;\n        });\n    }\n    /**\n     * To free the lease if it is no longer needed so that another client may\n     * immediately acquire a lease against the container or the blob.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container\n     * and\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob\n     *\n     * @param options - option to configure lease management operations.\n     * @returns Response data for release lease operation.\n     */\n    async releaseLease(options = {}) {\n        var _a, _b, _c, _d, _e;\n        if (this._isContainer &&\n            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||\n                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||\n                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {\n            throw new RangeError(\"The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.\");\n        }\n        return tracingClient.withSpan(\"BlobLeaseClient-releaseLease\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this._containerOrBlobOperation.releaseLease(this._leaseId, {\n                abortSignal: options.abortSignal,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * To renew the lease.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container\n     * and\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob\n     *\n     * @param options - Optional option to configure lease management operations.\n     * @returns Response data for renew lease operation.\n     */\n    async renewLease(options = {}) {\n        var _a, _b, _c, _d, _e;\n        if (this._isContainer &&\n            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||\n                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||\n                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {\n            throw new RangeError(\"The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.\");\n        }\n        return tracingClient.withSpan(\"BlobLeaseClient-renewLease\", options, async (updatedOptions) => {\n            var _a;\n            return this._containerOrBlobOperation.renewLease(this._leaseId, {\n                abortSignal: options.abortSignal,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                tracingOptions: updatedOptions.tracingOptions,\n            });\n        });\n    }\n    /**\n     * To end the lease but ensure that another client cannot acquire a new lease\n     * until the current lease period has expired.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container\n     * and\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob\n     *\n     * @param breakPeriod - Break period\n     * @param options - Optional options to configure lease management operations.\n     * @returns Response data for break lease operation.\n     */\n    async breakLease(breakPeriod, options = {}) {\n        var _a, _b, _c, _d, _e;\n        if (this._isContainer &&\n            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||\n                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||\n                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {\n            throw new RangeError(\"The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.\");\n        }\n        return tracingClient.withSpan(\"BlobLeaseClient-breakLease\", options, async (updatedOptions) => {\n            var _a;\n            const operationOptions = {\n                abortSignal: options.abortSignal,\n                breakPeriod,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                tracingOptions: updatedOptions.tracingOptions,\n            };\n            return assertResponse(await this._containerOrBlobOperation.breakLease(operationOptions));\n        });\n    }\n}\n//# sourceMappingURL=BlobLeaseClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * ONLY AVAILABLE IN BROWSER RUNTIME.\n *\n * BlobQueryResponse implements BlobDownloadResponseModel interface, and in browser runtime it will\n * parse avor data returned by blob query.\n */\nexport class BlobQueryResponse {\n    /**\n     * Indicates that the service supports\n     * requests for partial file content.\n     *\n     * @readonly\n     */\n    get acceptRanges() {\n        return this.originalResponse.acceptRanges;\n    }\n    /**\n     * Returns if it was previously specified\n     * for the file.\n     *\n     * @readonly\n     */\n    get cacheControl() {\n        return this.originalResponse.cacheControl;\n    }\n    /**\n     * Returns the value that was specified\n     * for the 'x-ms-content-disposition' header and specifies how to process the\n     * response.\n     *\n     * @readonly\n     */\n    get contentDisposition() {\n        return this.originalResponse.contentDisposition;\n    }\n    /**\n     * Returns the value that was specified\n     * for the Content-Encoding request header.\n     *\n     * @readonly\n     */\n    get contentEncoding() {\n        return this.originalResponse.contentEncoding;\n    }\n    /**\n     * Returns the value that was specified\n     * for the Content-Language request header.\n     *\n     * @readonly\n     */\n    get contentLanguage() {\n        return this.originalResponse.contentLanguage;\n    }\n    /**\n     * The current sequence number for a\n     * page blob. This header is not returned for block blobs or append blobs.\n     *\n     * @readonly\n     */\n    get blobSequenceNumber() {\n        return this.originalResponse.blobSequenceNumber;\n    }\n    /**\n     * The blob's type. Possible values include:\n     * 'BlockBlob', 'PageBlob', 'AppendBlob'.\n     *\n     * @readonly\n     */\n    get blobType() {\n        return this.originalResponse.blobType;\n    }\n    /**\n     * The number of bytes present in the\n     * response body.\n     *\n     * @readonly\n     */\n    get contentLength() {\n        return this.originalResponse.contentLength;\n    }\n    /**\n     * If the file has an MD5 hash and the\n     * request is to read the full file, this response header is returned so that\n     * the client can check for message content integrity. If the request is to\n     * read a specified range and the 'x-ms-range-get-content-md5' is set to\n     * true, then the request returns an MD5 hash for the range, as long as the\n     * range size is less than or equal to 4 MB. If neither of these sets of\n     * conditions is true, then no value is returned for the 'Content-MD5'\n     * header.\n     *\n     * @readonly\n     */\n    get contentMD5() {\n        return this.originalResponse.contentMD5;\n    }\n    /**\n     * Indicates the range of bytes returned if\n     * the client requested a subset of the file by setting the Range request\n     * header.\n     *\n     * @readonly\n     */\n    get contentRange() {\n        return this.originalResponse.contentRange;\n    }\n    /**\n     * The content type specified for the file.\n     * The default content type is 'application/octet-stream'\n     *\n     * @readonly\n     */\n    get contentType() {\n        return this.originalResponse.contentType;\n    }\n    /**\n     * Conclusion time of the last attempted\n     * Copy File operation where this file was the destination file. This value\n     * can specify the time of a completed, aborted, or failed copy attempt.\n     *\n     * @readonly\n     */\n    get copyCompletedOn() {\n        return undefined;\n    }\n    /**\n     * String identifier for the last attempted Copy\n     * File operation where this file was the destination file.\n     *\n     * @readonly\n     */\n    get copyId() {\n        return this.originalResponse.copyId;\n    }\n    /**\n     * Contains the number of bytes copied and\n     * the total bytes in the source in the last attempted Copy File operation\n     * where this file was the destination file. Can show between 0 and\n     * Content-Length bytes copied.\n     *\n     * @readonly\n     */\n    get copyProgress() {\n        return this.originalResponse.copyProgress;\n    }\n    /**\n     * URL up to 2KB in length that specifies the\n     * source file used in the last attempted Copy File operation where this file\n     * was the destination file.\n     *\n     * @readonly\n     */\n    get copySource() {\n        return this.originalResponse.copySource;\n    }\n    /**\n     * State of the copy operation\n     * identified by 'x-ms-copy-id'. Possible values include: 'pending',\n     * 'success', 'aborted', 'failed'\n     *\n     * @readonly\n     */\n    get copyStatus() {\n        return this.originalResponse.copyStatus;\n    }\n    /**\n     * Only appears when\n     * x-ms-copy-status is failed or pending. Describes cause of fatal or\n     * non-fatal copy operation failure.\n     *\n     * @readonly\n     */\n    get copyStatusDescription() {\n        return this.originalResponse.copyStatusDescription;\n    }\n    /**\n     * When a blob is leased,\n     * specifies whether the lease is of infinite or fixed duration. Possible\n     * values include: 'infinite', 'fixed'.\n     *\n     * @readonly\n     */\n    get leaseDuration() {\n        return this.originalResponse.leaseDuration;\n    }\n    /**\n     * Lease state of the blob. Possible\n     * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.\n     *\n     * @readonly\n     */\n    get leaseState() {\n        return this.originalResponse.leaseState;\n    }\n    /**\n     * The current lease status of the\n     * blob. Possible values include: 'locked', 'unlocked'.\n     *\n     * @readonly\n     */\n    get leaseStatus() {\n        return this.originalResponse.leaseStatus;\n    }\n    /**\n     * A UTC date/time value generated by the service that\n     * indicates the time at which the response was initiated.\n     *\n     * @readonly\n     */\n    get date() {\n        return this.originalResponse.date;\n    }\n    /**\n     * The number of committed blocks\n     * present in the blob. This header is returned only for append blobs.\n     *\n     * @readonly\n     */\n    get blobCommittedBlockCount() {\n        return this.originalResponse.blobCommittedBlockCount;\n    }\n    /**\n     * The ETag contains a value that you can use to\n     * perform operations conditionally, in quotes.\n     *\n     * @readonly\n     */\n    get etag() {\n        return this.originalResponse.etag;\n    }\n    /**\n     * The error code.\n     *\n     * @readonly\n     */\n    get errorCode() {\n        return this.originalResponse.errorCode;\n    }\n    /**\n     * The value of this header is set to\n     * true if the file data and application metadata are completely encrypted\n     * using the specified algorithm. Otherwise, the value is set to false (when\n     * the file is unencrypted, or if only parts of the file/application metadata\n     * are encrypted).\n     *\n     * @readonly\n     */\n    get isServerEncrypted() {\n        return this.originalResponse.isServerEncrypted;\n    }\n    /**\n     * If the blob has a MD5 hash, and if\n     * request contains range header (Range or x-ms-range), this response header\n     * is returned with the value of the whole blob's MD5 value. This value may\n     * or may not be equal to the value returned in Content-MD5 header, with the\n     * latter calculated from the requested range.\n     *\n     * @readonly\n     */\n    get blobContentMD5() {\n        return this.originalResponse.blobContentMD5;\n    }\n    /**\n     * Returns the date and time the file was last\n     * modified. Any operation that modifies the file or its properties updates\n     * the last modified time.\n     *\n     * @readonly\n     */\n    get lastModified() {\n        return this.originalResponse.lastModified;\n    }\n    /**\n     * A name-value pair\n     * to associate with a file storage object.\n     *\n     * @readonly\n     */\n    get metadata() {\n        return this.originalResponse.metadata;\n    }\n    /**\n     * This header uniquely identifies the request\n     * that was made and can be used for troubleshooting the request.\n     *\n     * @readonly\n     */\n    get requestId() {\n        return this.originalResponse.requestId;\n    }\n    /**\n     * If a client request id header is sent in the request, this header will be present in the\n     * response with the same value.\n     *\n     * @readonly\n     */\n    get clientRequestId() {\n        return this.originalResponse.clientRequestId;\n    }\n    /**\n     * Indicates the version of the File service used\n     * to execute the request.\n     *\n     * @readonly\n     */\n    get version() {\n        return this.originalResponse.version;\n    }\n    /**\n     * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned\n     * when the blob was encrypted with a customer-provided key.\n     *\n     * @readonly\n     */\n    get encryptionKeySha256() {\n        return this.originalResponse.encryptionKeySha256;\n    }\n    /**\n     * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to\n     * true, then the request returns a crc64 for the range, as long as the range size is less than\n     * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is\n     * specified in the same request, it will fail with 400(Bad Request)\n     */\n    get contentCrc64() {\n        return this.originalResponse.contentCrc64;\n    }\n    /**\n     * The response body as a browser Blob.\n     * Always undefined in node.js.\n     *\n     * @readonly\n     */\n    get blobBody() {\n        throw Error(`Quick query in browser is not supported yet.`);\n    }\n    /**\n     * The response body as a node.js Readable stream.\n     * Always undefined in the browser.\n     *\n     * @readonly\n     */\n    get readableStreamBody() {\n        return undefined;\n    }\n    /**\n     * The HTTP response.\n     */\n    get _response() {\n        return this.originalResponse._response;\n    }\n    /**\n     * Creates an instance of BlobQueryResponse.\n     *\n     * @param originalResponse -\n     * @param options -\n     */\n    constructor(originalResponse, _options = {}) {\n        this.originalResponse = originalResponse;\n    }\n}\n//# sourceMappingURL=BlobQueryResponse.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { EncryptionAlgorithmAES25 } from \"./utils/constants\";\n/**\n * Represents the access tier on a blob.\n * For detailed information about block blob level tiering see {@link https://docs.microsoft.com/azure/storage/blobs/storage-blob-storage-tiers|Hot, cool and archive storage tiers.}\n */\nexport var BlockBlobTier;\n(function (BlockBlobTier) {\n    /**\n     * Optimized for storing data that is accessed frequently.\n     */\n    BlockBlobTier[\"Hot\"] = \"Hot\";\n    /**\n     * Optimized for storing data that is infrequently accessed and stored for at least 30 days.\n     */\n    BlockBlobTier[\"Cool\"] = \"Cool\";\n    /**\n     * Optimized for storing data that is rarely accessed.\n     */\n    BlockBlobTier[\"Cold\"] = \"Cold\";\n    /**\n     * Optimized for storing data that is rarely accessed and stored for at least 180 days\n     * with flexible latency requirements (on the order of hours).\n     */\n    BlockBlobTier[\"Archive\"] = \"Archive\";\n})(BlockBlobTier || (BlockBlobTier = {}));\n/**\n * Specifies the page blob tier to set the blob to. This is only applicable to page blobs on premium storage accounts.\n * Please see {@link https://docs.microsoft.com/azure/storage/storage-premium-storage#scalability-and-performance-targets|here}\n * for detailed information on the corresponding IOPS and throughput per PageBlobTier.\n */\nexport var PremiumPageBlobTier;\n(function (PremiumPageBlobTier) {\n    /**\n     * P4 Tier.\n     */\n    PremiumPageBlobTier[\"P4\"] = \"P4\";\n    /**\n     * P6 Tier.\n     */\n    PremiumPageBlobTier[\"P6\"] = \"P6\";\n    /**\n     * P10 Tier.\n     */\n    PremiumPageBlobTier[\"P10\"] = \"P10\";\n    /**\n     * P15 Tier.\n     */\n    PremiumPageBlobTier[\"P15\"] = \"P15\";\n    /**\n     * P20 Tier.\n     */\n    PremiumPageBlobTier[\"P20\"] = \"P20\";\n    /**\n     * P30 Tier.\n     */\n    PremiumPageBlobTier[\"P30\"] = \"P30\";\n    /**\n     * P40 Tier.\n     */\n    PremiumPageBlobTier[\"P40\"] = \"P40\";\n    /**\n     * P50 Tier.\n     */\n    PremiumPageBlobTier[\"P50\"] = \"P50\";\n    /**\n     * P60 Tier.\n     */\n    PremiumPageBlobTier[\"P60\"] = \"P60\";\n    /**\n     * P70 Tier.\n     */\n    PremiumPageBlobTier[\"P70\"] = \"P70\";\n    /**\n     * P80 Tier.\n     */\n    PremiumPageBlobTier[\"P80\"] = \"P80\";\n})(PremiumPageBlobTier || (PremiumPageBlobTier = {}));\nexport function toAccessTier(tier) {\n    if (tier === undefined) {\n        return undefined;\n    }\n    return tier; // No more check if string is a valid AccessTier, and left this to underlay logic to decide(service).\n}\nexport function ensureCpkIfSpecified(cpk, isHttps) {\n    if (cpk && !isHttps) {\n        throw new RangeError(\"Customer-provided encryption key must be used over HTTPS.\");\n    }\n    if (cpk && !cpk.encryptionAlgorithm) {\n        cpk.encryptionAlgorithm = EncryptionAlgorithmAES25;\n    }\n}\n/**\n * Defines the known cloud audiences for Storage.\n */\nexport var StorageBlobAudience;\n(function (StorageBlobAudience) {\n    /**\n     * The OAuth scope to use to retrieve an AAD token for Azure Storage.\n     */\n    StorageBlobAudience[\"StorageOAuthScopes\"] = \"https://storage.azure.com/.default\";\n    /**\n     * The OAuth scope to use to retrieve an AAD token for Azure Disk.\n     */\n    StorageBlobAudience[\"DiskComputeOAuthScopes\"] = \"https://disk.compute.azure.com/.default\";\n})(StorageBlobAudience || (StorageBlobAudience = {}));\n/**\n *\n * To get OAuth audience for a storage account for blob service.\n */\nexport function getBlobServiceAccountAudience(storageAccountName) {\n    return `https://${storageAccountName}.blob.core.windows.net/.default`;\n}\n//# sourceMappingURL=models.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Function that converts PageRange and ClearRange to a common Range object.\n * PageRange and ClearRange have start and end while Range offset and count\n * this function normalizes to Range.\n * @param response - Model PageBlob Range response\n */\nexport function rangeResponseFromModel(response) {\n    const pageRange = (response._response.parsedBody.pageRange || []).map((x) => ({\n        offset: x.start,\n        count: x.end - x.start,\n    }));\n    const clearRange = (response._response.parsedBody.clearRange || []).map((x) => ({\n        offset: x.start,\n        count: x.end - x.start,\n    }));\n    return Object.assign(Object.assign({}, response), { pageRange,\n        clearRange, _response: Object.assign(Object.assign({}, response._response), { parsedBody: {\n                pageRange,\n                clearRange,\n            } }) });\n}\n//# sourceMappingURL=PageBlobRangeResponse.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createClientLogger } from \"@azure/logger\";\n/**\n * The `@azure/logger` configuration for this package.\n * @internal\n */\nexport const logger = createClientLogger(\"core-lro\");\n//# sourceMappingURL=logger.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * When a poller is manually stopped through the `stopPolling` method,\n * the poller will be rejected with an instance of the PollerStoppedError.\n */\nexport class PollerStoppedError extends Error {\n    constructor(message) {\n        super(message);\n        this.name = \"PollerStoppedError\";\n        Object.setPrototypeOf(this, PollerStoppedError.prototype);\n    }\n}\n/**\n * When the operation is cancelled, the poller will be rejected with an instance\n * of the PollerCancelledError.\n */\nexport class PollerCancelledError extends Error {\n    constructor(message) {\n        super(message);\n        this.name = \"PollerCancelledError\";\n        Object.setPrototypeOf(this, PollerCancelledError.prototype);\n    }\n}\n/**\n * A class that represents the definition of a program that polls through consecutive requests\n * until it reaches a state of completion.\n *\n * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed.\n * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes.\n * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation.\n *\n * ```ts\n * const poller = new MyPoller();\n *\n * // Polling just once:\n * await poller.poll();\n *\n * // We can try to cancel the request here, by calling:\n * //\n * //     await poller.cancelOperation();\n * //\n *\n * // Getting the final result:\n * const result = await poller.pollUntilDone();\n * ```\n *\n * The Poller is defined by two types, a type representing the state of the poller, which\n * must include a basic set of properties from `PollOperationState<TResult>`,\n * and a return type defined by `TResult`, which can be anything.\n *\n * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having\n * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type.\n *\n * ```ts\n * class Client {\n *   public async makePoller: PollerLike<MyOperationState, MyResult> {\n *     const poller = new MyPoller({});\n *     // It might be preferred to return the poller after the first request is made,\n *     // so that some information can be obtained right away.\n *     await poller.poll();\n *     return poller;\n *   }\n * }\n *\n * const poller: PollerLike<MyOperationState, MyResult> = myClient.makePoller();\n * ```\n *\n * A poller can be created through its constructor, then it can be polled until it's completed.\n * At any point in time, the state of the poller can be obtained without delay through the getOperationState method.\n * At any point in time, the intermediate forms of the result type can be requested without delay.\n * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned.\n *\n * ```ts\n * const poller = myClient.makePoller();\n * const state: MyOperationState = poller.getOperationState();\n *\n * // The intermediate result can be obtained at any time.\n * const result: MyResult | undefined = poller.getResult();\n *\n * // The final result can only be obtained after the poller finishes.\n * const result: MyResult = await poller.pollUntilDone();\n * ```\n *\n */\n// eslint-disable-next-line no-use-before-define\nexport class Poller {\n    /**\n     * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation<TState, TResult>`.\n     *\n     * When writing an implementation of a Poller, this implementation needs to deal with the initialization\n     * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's\n     * operation has already been defined, at least its basic properties. The code below shows how to approach\n     * the definition of the constructor of a new custom poller.\n     *\n     * ```ts\n     * export class MyPoller extends Poller<MyOperationState, string> {\n     *   constructor({\n     *     // Anything you might need outside of the basics\n     *   }) {\n     *     let state: MyOperationState = {\n     *       privateProperty: private,\n     *       publicProperty: public,\n     *     };\n     *\n     *     const operation = {\n     *       state,\n     *       update,\n     *       cancel,\n     *       toString\n     *     }\n     *\n     *     // Sending the operation to the parent's constructor.\n     *     super(operation);\n     *\n     *     // You can assign more local properties here.\n     *   }\n     * }\n     * ```\n     *\n     * Inside of this constructor, a new promise is created. This will be used to\n     * tell the user when the poller finishes (see `pollUntilDone()`). The promise's\n     * resolve and reject methods are also used internally to control when to resolve\n     * or reject anyone waiting for the poller to finish.\n     *\n     * The constructor of a custom implementation of a poller is where any serialized version of\n     * a previous poller's operation should be deserialized into the operation sent to the\n     * base constructor. For example:\n     *\n     * ```ts\n     * export class MyPoller extends Poller<MyOperationState, string> {\n     *   constructor(\n     *     baseOperation: string | undefined\n     *   ) {\n     *     let state: MyOperationState = {};\n     *     if (baseOperation) {\n     *       state = {\n     *         ...JSON.parse(baseOperation).state,\n     *         ...state\n     *       };\n     *     }\n     *     const operation = {\n     *       state,\n     *       // ...\n     *     }\n     *     super(operation);\n     *   }\n     * }\n     * ```\n     *\n     * @param operation - Must contain the basic properties of `PollOperation<State, TResult>`.\n     */\n    constructor(operation) {\n        /** controls whether to throw an error if the operation failed or was canceled. */\n        this.resolveOnUnsuccessful = false;\n        this.stopped = true;\n        this.pollProgressCallbacks = [];\n        this.operation = operation;\n        this.promise = new Promise((resolve, reject) => {\n            this.resolve = resolve;\n            this.reject = reject;\n        });\n        // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown.\n        // The above warning would get thrown if `poller.poll` is called, it returns an error,\n        // and pullUntilDone did not have a .catch or await try/catch on it's return value.\n        this.promise.catch(() => {\n            /* intentionally blank */\n        });\n    }\n    /**\n     * Starts a loop that will break only if the poller is done\n     * or if the poller is stopped.\n     */\n    async startPolling(pollOptions = {}) {\n        if (this.stopped) {\n            this.stopped = false;\n        }\n        while (!this.isStopped() && !this.isDone()) {\n            await this.poll(pollOptions);\n            await this.delay();\n        }\n    }\n    /**\n     * pollOnce does one polling, by calling to the update method of the underlying\n     * poll operation to make any relevant change effective.\n     *\n     * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n     *\n     * @param options - Optional properties passed to the operation's update method.\n     */\n    async pollOnce(options = {}) {\n        if (!this.isDone()) {\n            this.operation = await this.operation.update({\n                abortSignal: options.abortSignal,\n                fireProgress: this.fireProgress.bind(this),\n            });\n        }\n        this.processUpdatedState();\n    }\n    /**\n     * fireProgress calls the functions passed in via onProgress the method of the poller.\n     *\n     * It loops over all of the callbacks received from onProgress, and executes them, sending them\n     * the current operation state.\n     *\n     * @param state - The current operation state.\n     */\n    fireProgress(state) {\n        for (const callback of this.pollProgressCallbacks) {\n            callback(state);\n        }\n    }\n    /**\n     * Invokes the underlying operation's cancel method.\n     */\n    async cancelOnce(options = {}) {\n        this.operation = await this.operation.cancel(options);\n    }\n    /**\n     * Returns a promise that will resolve once a single polling request finishes.\n     * It does this by calling the update method of the Poller's operation.\n     *\n     * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n     *\n     * @param options - Optional properties passed to the operation's update method.\n     */\n    poll(options = {}) {\n        if (!this.pollOncePromise) {\n            this.pollOncePromise = this.pollOnce(options);\n            const clearPollOncePromise = () => {\n                this.pollOncePromise = undefined;\n            };\n            this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject);\n        }\n        return this.pollOncePromise;\n    }\n    processUpdatedState() {\n        if (this.operation.state.error) {\n            this.stopped = true;\n            if (!this.resolveOnUnsuccessful) {\n                this.reject(this.operation.state.error);\n                throw this.operation.state.error;\n            }\n        }\n        if (this.operation.state.isCancelled) {\n            this.stopped = true;\n            if (!this.resolveOnUnsuccessful) {\n                const error = new PollerCancelledError(\"Operation was canceled\");\n                this.reject(error);\n                throw error;\n            }\n        }\n        if (this.isDone() && this.resolve) {\n            // If the poller has finished polling, this means we now have a result.\n            // However, it can be the case that TResult is instantiated to void, so\n            // we are not expecting a result anyway. To assert that we might not\n            // have a result eventually after finishing polling, we cast the result\n            // to TResult.\n            this.resolve(this.getResult());\n        }\n    }\n    /**\n     * Returns a promise that will resolve once the underlying operation is completed.\n     */\n    async pollUntilDone(pollOptions = {}) {\n        if (this.stopped) {\n            this.startPolling(pollOptions).catch(this.reject);\n        }\n        // This is needed because the state could have been updated by\n        // `cancelOperation`, e.g. the operation is canceled or an error occurred.\n        this.processUpdatedState();\n        return this.promise;\n    }\n    /**\n     * Invokes the provided callback after each polling is completed,\n     * sending the current state of the poller's operation.\n     *\n     * It returns a method that can be used to stop receiving updates on the given callback function.\n     */\n    onProgress(callback) {\n        this.pollProgressCallbacks.push(callback);\n        return () => {\n            this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback);\n        };\n    }\n    /**\n     * Returns true if the poller has finished polling.\n     */\n    isDone() {\n        const state = this.operation.state;\n        return Boolean(state.isCompleted || state.isCancelled || state.error);\n    }\n    /**\n     * Stops the poller from continuing to poll.\n     */\n    stopPolling() {\n        if (!this.stopped) {\n            this.stopped = true;\n            if (this.reject) {\n                this.reject(new PollerStoppedError(\"This poller is already stopped\"));\n            }\n        }\n    }\n    /**\n     * Returns true if the poller is stopped.\n     */\n    isStopped() {\n        return this.stopped;\n    }\n    /**\n     * Attempts to cancel the underlying operation.\n     *\n     * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n     *\n     * If it's called again before it finishes, it will throw an error.\n     *\n     * @param options - Optional properties passed to the operation's update method.\n     */\n    cancelOperation(options = {}) {\n        if (!this.cancelPromise) {\n            this.cancelPromise = this.cancelOnce(options);\n        }\n        else if (options.abortSignal) {\n            throw new Error(\"A cancel request is currently pending\");\n        }\n        return this.cancelPromise;\n    }\n    /**\n     * Returns the state of the operation.\n     *\n     * Even though TState will be the same type inside any of the methods of any extension of the Poller class,\n     * implementations of the pollers can customize what's shared with the public by writing their own\n     * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller\n     * and a public type representing a safe to share subset of the properties of the internal state.\n     * Their definition of getOperationState can then return their public type.\n     *\n     * Example:\n     *\n     * ```ts\n     * // Let's say we have our poller's operation state defined as:\n     * interface MyOperationState extends PollOperationState<ResultType> {\n     *   privateProperty?: string;\n     *   publicProperty?: string;\n     * }\n     *\n     * // To allow us to have a true separation of public and private state, we have to define another interface:\n     * interface PublicState extends PollOperationState<ResultType> {\n     *   publicProperty?: string;\n     * }\n     *\n     * // Then, we define our Poller as follows:\n     * export class MyPoller extends Poller<MyOperationState, ResultType> {\n     *   // ... More content is needed here ...\n     *\n     *   public getOperationState(): PublicState {\n     *     const state: PublicState = this.operation.state;\n     *     return {\n     *       // Properties from PollOperationState<TResult>\n     *       isStarted: state.isStarted,\n     *       isCompleted: state.isCompleted,\n     *       isCancelled: state.isCancelled,\n     *       error: state.error,\n     *       result: state.result,\n     *\n     *       // The only other property needed by PublicState.\n     *       publicProperty: state.publicProperty\n     *     }\n     *   }\n     * }\n     * ```\n     *\n     * You can see this in the tests of this repository, go to the file:\n     * `../test/utils/testPoller.ts`\n     * and look for the getOperationState implementation.\n     */\n    getOperationState() {\n        return this.operation.state;\n    }\n    /**\n     * Returns the result value of the operation,\n     * regardless of the state of the poller.\n     * It can return undefined or an incomplete form of the final TResult value\n     * depending on the implementation.\n     */\n    getResult() {\n        const state = this.operation.state;\n        return state.result;\n    }\n    /**\n     * Returns a serialized version of the poller's operation\n     * by invoking the operation's toString method.\n     */\n    toString() {\n        return this.operation.toString();\n    }\n}\n//# sourceMappingURL=poller.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { delay } from \"@azure/core-util\";\nimport { Poller } from \"@azure/core-lro\";\n/**\n * This is the poller returned by {@link BlobClient.beginCopyFromURL}.\n * This can not be instantiated directly outside of this package.\n *\n * @hidden\n */\nexport class BlobBeginCopyFromUrlPoller extends Poller {\n    constructor(options) {\n        const { blobClient, copySource, intervalInMs = 15000, onProgress, resumeFrom, startCopyFromURLOptions, } = options;\n        let state;\n        if (resumeFrom) {\n            state = JSON.parse(resumeFrom).state;\n        }\n        const operation = makeBlobBeginCopyFromURLPollOperation(Object.assign(Object.assign({}, state), { blobClient,\n            copySource,\n            startCopyFromURLOptions }));\n        super(operation);\n        if (typeof onProgress === \"function\") {\n            this.onProgress(onProgress);\n        }\n        this.intervalInMs = intervalInMs;\n    }\n    delay() {\n        return delay(this.intervalInMs);\n    }\n}\n/**\n * Note: Intentionally using function expression over arrow function expression\n * so that the function can be invoked with a different context.\n * This affects what `this` refers to.\n * @hidden\n */\nconst cancel = async function cancel(options = {}) {\n    const state = this.state;\n    const { copyId } = state;\n    if (state.isCompleted) {\n        return makeBlobBeginCopyFromURLPollOperation(state);\n    }\n    if (!copyId) {\n        state.isCancelled = true;\n        return makeBlobBeginCopyFromURLPollOperation(state);\n    }\n    // if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call\n    await state.blobClient.abortCopyFromURL(copyId, {\n        abortSignal: options.abortSignal,\n    });\n    state.isCancelled = true;\n    return makeBlobBeginCopyFromURLPollOperation(state);\n};\n/**\n * Note: Intentionally using function expression over arrow function expression\n * so that the function can be invoked with a different context.\n * This affects what `this` refers to.\n * @hidden\n */\nconst update = async function update(options = {}) {\n    const state = this.state;\n    const { blobClient, copySource, startCopyFromURLOptions } = state;\n    if (!state.isStarted) {\n        state.isStarted = true;\n        const result = await blobClient.startCopyFromURL(copySource, startCopyFromURLOptions);\n        // copyId is needed to abort\n        state.copyId = result.copyId;\n        if (result.copyStatus === \"success\") {\n            state.result = result;\n            state.isCompleted = true;\n        }\n    }\n    else if (!state.isCompleted) {\n        try {\n            const result = await state.blobClient.getProperties({ abortSignal: options.abortSignal });\n            const { copyStatus, copyProgress } = result;\n            const prevCopyProgress = state.copyProgress;\n            if (copyProgress) {\n                state.copyProgress = copyProgress;\n            }\n            if (copyStatus === \"pending\" &&\n                copyProgress !== prevCopyProgress &&\n                typeof options.fireProgress === \"function\") {\n                // trigger in setTimeout, or swallow error?\n                options.fireProgress(state);\n            }\n            else if (copyStatus === \"success\") {\n                state.result = result;\n                state.isCompleted = true;\n            }\n            else if (copyStatus === \"failed\") {\n                state.error = new Error(`Blob copy failed with reason: \"${result.copyStatusDescription || \"unknown\"}\"`);\n                state.isCompleted = true;\n            }\n        }\n        catch (err) {\n            state.error = err;\n            state.isCompleted = true;\n        }\n    }\n    return makeBlobBeginCopyFromURLPollOperation(state);\n};\n/**\n * Note: Intentionally using function expression over arrow function expression\n * so that the function can be invoked with a different context.\n * This affects what `this` refers to.\n * @hidden\n */\nconst toString = function toString() {\n    return JSON.stringify({ state: this.state }, (key, value) => {\n        // remove blobClient from serialized state since a client can't be hydrated from this info.\n        if (key === \"blobClient\") {\n            return undefined;\n        }\n        return value;\n    });\n};\n/**\n * Creates a poll operation given the provided state.\n * @hidden\n */\nfunction makeBlobBeginCopyFromURLPollOperation(state) {\n    return {\n        state: Object.assign({}, state),\n        cancel,\n        toString,\n        update,\n    };\n}\n//# sourceMappingURL=BlobStartCopyFromUrlPoller.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Generate a range string. For example:\n *\n * \"bytes=255-\" or \"bytes=0-511\"\n *\n * @param iRange -\n */\nexport function rangeToString(iRange) {\n    if (iRange.offset < 0) {\n        throw new RangeError(`Range.offset cannot be smaller than 0.`);\n    }\n    if (iRange.count && iRange.count <= 0) {\n        throw new RangeError(`Range.count must be larger than 0. Leave it undefined if you want a range from offset to the end.`);\n    }\n    return iRange.count\n        ? `bytes=${iRange.offset}-${iRange.offset + iRange.count - 1}`\n        : `bytes=${iRange.offset}-`;\n}\n//# sourceMappingURL=Range.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n// In browser, during webpack or browserify bundling, this module will be replaced by 'events'\n// https://github.com/Gozala/events\nimport { EventEmitter } from \"events\";\n/**\n * States for Batch.\n */\nvar BatchStates;\n(function (BatchStates) {\n    BatchStates[BatchStates[\"Good\"] = 0] = \"Good\";\n    BatchStates[BatchStates[\"Error\"] = 1] = \"Error\";\n})(BatchStates || (BatchStates = {}));\n/**\n * Batch provides basic parallel execution with concurrency limits.\n * Will stop execute left operations when one of the executed operation throws an error.\n * But Batch cannot cancel ongoing operations, you need to cancel them by yourself.\n */\nexport class Batch {\n    /**\n     * Creates an instance of Batch.\n     * @param concurrency -\n     */\n    constructor(concurrency = 5) {\n        /**\n         * Number of active operations under execution.\n         */\n        this.actives = 0;\n        /**\n         * Number of completed operations under execution.\n         */\n        this.completed = 0;\n        /**\n         * Offset of next operation to be executed.\n         */\n        this.offset = 0;\n        /**\n         * Operation array to be executed.\n         */\n        this.operations = [];\n        /**\n         * States of Batch. When an error happens, state will turn into error.\n         * Batch will stop execute left operations.\n         */\n        this.state = BatchStates.Good;\n        if (concurrency < 1) {\n            throw new RangeError(\"concurrency must be larger than 0\");\n        }\n        this.concurrency = concurrency;\n        this.emitter = new EventEmitter();\n    }\n    /**\n     * Add a operation into queue.\n     *\n     * @param operation -\n     */\n    addOperation(operation) {\n        this.operations.push(async () => {\n            try {\n                this.actives++;\n                await operation();\n                this.actives--;\n                this.completed++;\n                this.parallelExecute();\n            }\n            catch (error) {\n                this.emitter.emit(\"error\", error);\n            }\n        });\n    }\n    /**\n     * Start execute operations in the queue.\n     *\n     */\n    async do() {\n        if (this.operations.length === 0) {\n            return Promise.resolve();\n        }\n        this.parallelExecute();\n        return new Promise((resolve, reject) => {\n            this.emitter.on(\"finish\", resolve);\n            this.emitter.on(\"error\", (error) => {\n                this.state = BatchStates.Error;\n                reject(error);\n            });\n        });\n    }\n    /**\n     * Get next operation to be executed. Return null when reaching ends.\n     *\n     */\n    nextOperation() {\n        if (this.offset < this.operations.length) {\n            return this.operations[this.offset++];\n        }\n        return null;\n    }\n    /**\n     * Start execute operations. One one the most important difference between\n     * this method with do() is that do() wraps as an sync method.\n     *\n     */\n    parallelExecute() {\n        if (this.state === BatchStates.Error) {\n            return;\n        }\n        if (this.completed >= this.operations.length) {\n            this.emitter.emit(\"finish\");\n            return;\n        }\n        while (this.actives < this.concurrency) {\n            const operation = this.nextOperation();\n            if (operation) {\n                operation();\n            }\n            else {\n                return;\n            }\n        }\n    }\n}\n//# sourceMappingURL=Batch.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n// This file is used as a shim of \"BufferScheduler\" for some browser bundlers\n// when trying to bundle \"BufferScheduler\"\n// \"BufferScheduler\" class is only available in Node.js runtime\nexport class BufferScheduler {\n}\n//# sourceMappingURL=BufferScheduler.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from \"tslib\";\nimport { getDefaultProxySettings } from \"@azure/core-rest-pipeline\";\nimport { isTokenCredential } from \"@azure/core-auth\";\nimport { isNode } from \"@azure/core-util\";\nimport { randomUUID } from \"@azure/core-util\";\nimport { BlobDownloadResponse } from \"./BlobDownloadResponse\";\nimport { BlobQueryResponse } from \"./BlobQueryResponse\";\nimport { AnonymousCredential } from \"./credentials/AnonymousCredential\";\nimport { StorageSharedKeyCredential } from \"./credentials/StorageSharedKeyCredential\";\nimport { ensureCpkIfSpecified, toAccessTier } from \"./models\";\nimport { rangeResponseFromModel } from \"./PageBlobRangeResponse\";\nimport { newPipeline, isPipelineLike } from \"./Pipeline\";\nimport { BlobBeginCopyFromUrlPoller } from \"./pollers/BlobStartCopyFromUrlPoller\";\nimport { rangeToString } from \"./Range\";\nimport { StorageClient } from \"./StorageClient\";\nimport { Batch } from \"./utils/Batch\";\nimport { BufferScheduler } from \"../../storage-common/src\";\nimport { BlobDoesNotUseCustomerSpecifiedEncryption, BlobUsesCustomerSpecifiedEncryptionMsg, BLOCK_BLOB_MAX_BLOCKS, BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES, BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES, DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES, DEFAULT_BLOCK_BUFFER_SIZE_BYTES, DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS, ETagAny, URLConstants, } from \"./utils/constants\";\nimport { tracingClient } from \"./utils/tracing\";\nimport { appendToURLPath, appendToURLQuery, assertResponse, extractConnectionStringParts, ExtractPageRangeInfoItems, generateBlockID, getURLParameter, httpAuthorizationToString, isIpEndpointStyle, parseObjectReplicationRecord, setURLParameter, toBlobTags, toBlobTagsString, toQuerySerialization, toTags, } from \"./utils/utils.common\";\nimport { fsCreateReadStream, fsStat, readStreamToLocalFile, streamToBuffer, } from \"./utils/utils.node\";\nimport { generateBlobSASQueryParameters, generateBlobSASQueryParametersInternal, } from \"./sas/BlobSASSignatureValues\";\nimport { BlobLeaseClient } from \"./BlobLeaseClient\";\n/**\n * A BlobClient represents a URL to an Azure Storage blob; the blob may be a block blob,\n * append blob, or page blob.\n */\nexport class BlobClient extends StorageClient {\n    /**\n     * The name of the blob.\n     */\n    get name() {\n        return this._name;\n    }\n    /**\n     * The name of the storage container the blob is associated with.\n     */\n    get containerName() {\n        return this._containerName;\n    }\n    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, \n    // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n    options) {\n        options = options || {};\n        let pipeline;\n        let url;\n        if (isPipelineLike(credentialOrPipelineOrContainerName)) {\n            // (url: string, pipeline: Pipeline)\n            url = urlOrConnectionString;\n            pipeline = credentialOrPipelineOrContainerName;\n        }\n        else if ((isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||\n            credentialOrPipelineOrContainerName instanceof AnonymousCredential ||\n            isTokenCredential(credentialOrPipelineOrContainerName)) {\n            // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n            url = urlOrConnectionString;\n            options = blobNameOrOptions;\n            pipeline = newPipeline(credentialOrPipelineOrContainerName, options);\n        }\n        else if (!credentialOrPipelineOrContainerName &&\n            typeof credentialOrPipelineOrContainerName !== \"string\") {\n            // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n            // The second parameter is undefined. Use anonymous credential.\n            url = urlOrConnectionString;\n            if (blobNameOrOptions && typeof blobNameOrOptions !== \"string\") {\n                options = blobNameOrOptions;\n            }\n            pipeline = newPipeline(new AnonymousCredential(), options);\n        }\n        else if (credentialOrPipelineOrContainerName &&\n            typeof credentialOrPipelineOrContainerName === \"string\" &&\n            blobNameOrOptions &&\n            typeof blobNameOrOptions === \"string\") {\n            // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)\n            const containerName = credentialOrPipelineOrContainerName;\n            const blobName = blobNameOrOptions;\n            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);\n            if (extractedCreds.kind === \"AccountConnString\") {\n                if (isNode) {\n                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);\n                    url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));\n                    if (!options.proxyOptions) {\n                        options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);\n                    }\n                    pipeline = newPipeline(sharedKeyCredential, options);\n                }\n                else {\n                    throw new Error(\"Account connection string is only supported in Node.js environment\");\n                }\n            }\n            else if (extractedCreds.kind === \"SASConnString\") {\n                url =\n                    appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName)) +\n                        \"?\" +\n                        extractedCreds.accountSas;\n                pipeline = newPipeline(new AnonymousCredential(), options);\n            }\n            else {\n                throw new Error(\"Connection string must be either an Account connection string or a SAS connection string\");\n            }\n        }\n        else {\n            throw new Error(\"Expecting non-empty strings for containerName and blobName parameters\");\n        }\n        super(url, pipeline);\n        ({ blobName: this._name, containerName: this._containerName } =\n            this.getBlobAndContainerNamesFromUrl());\n        this.blobContext = this.storageClientContext.blob;\n        this._snapshot = getURLParameter(this.url, URLConstants.Parameters.SNAPSHOT);\n        this._versionId = getURLParameter(this.url, URLConstants.Parameters.VERSIONID);\n    }\n    /**\n     * Creates a new BlobClient object identical to the source but with the specified snapshot timestamp.\n     * Provide \"\" will remove the snapshot and return a Client to the base blob.\n     *\n     * @param snapshot - The snapshot timestamp.\n     * @returns A new BlobClient object identical to the source but with the specified snapshot timestamp\n     */\n    withSnapshot(snapshot) {\n        return new BlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);\n    }\n    /**\n     * Creates a new BlobClient object pointing to a version of this blob.\n     * Provide \"\" will remove the versionId and return a Client to the base blob.\n     *\n     * @param versionId - The versionId.\n     * @returns A new BlobClient object pointing to the version of this blob.\n     */\n    withVersion(versionId) {\n        return new BlobClient(setURLParameter(this.url, URLConstants.Parameters.VERSIONID, versionId.length === 0 ? undefined : versionId), this.pipeline);\n    }\n    /**\n     * Creates a AppendBlobClient object.\n     *\n     */\n    getAppendBlobClient() {\n        return new AppendBlobClient(this.url, this.pipeline);\n    }\n    /**\n     * Creates a BlockBlobClient object.\n     *\n     */\n    getBlockBlobClient() {\n        return new BlockBlobClient(this.url, this.pipeline);\n    }\n    /**\n     * Creates a PageBlobClient object.\n     *\n     */\n    getPageBlobClient() {\n        return new PageBlobClient(this.url, this.pipeline);\n    }\n    /**\n     * Reads or downloads a blob from the system, including its metadata and properties.\n     * You can also call Get Blob to read a snapshot.\n     *\n     * * In Node.js, data returns in a Readable stream readableStreamBody\n     * * In browsers, data returns in a promise blobBody\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob\n     *\n     * @param offset - From which position of the blob to download, greater than or equal to 0\n     * @param count - How much data to be downloaded, greater than 0. Will download to the end when undefined\n     * @param options - Optional options to Blob Download operation.\n     *\n     *\n     * Example usage (Node.js):\n     *\n     * ```js\n     * // Download and convert a blob to a string\n     * const downloadBlockBlobResponse = await blobClient.download();\n     * const downloaded = await streamToBuffer(downloadBlockBlobResponse.readableStreamBody);\n     * console.log(\"Downloaded blob content:\", downloaded.toString());\n     *\n     * async function streamToBuffer(readableStream) {\n     * return new Promise((resolve, reject) => {\n     * const chunks = [];\n     * readableStream.on(\"data\", (data) => {\n     * chunks.push(data instanceof Buffer ? data : Buffer.from(data));\n     * });\n     * readableStream.on(\"end\", () => {\n     * resolve(Buffer.concat(chunks));\n     * });\n     * readableStream.on(\"error\", reject);\n     * });\n     * }\n     * ```\n     *\n     * Example usage (browser):\n     *\n     * ```js\n     * // Download and convert a blob to a string\n     * const downloadBlockBlobResponse = await blobClient.download();\n     * const downloaded = await blobToString(await downloadBlockBlobResponse.blobBody);\n     * console.log(\n     *   \"Downloaded blob content\",\n     *   downloaded\n     * );\n     *\n     * async function blobToString(blob: Blob): Promise<string> {\n     *   const fileReader = new FileReader();\n     *   return new Promise<string>((resolve, reject) => {\n     *     fileReader.onloadend = (ev: any) => {\n     *       resolve(ev.target!.result);\n     *     };\n     *     fileReader.onerror = reject;\n     *     fileReader.readAsText(blob);\n     *   });\n     * }\n     * ```\n     */\n    async download(offset = 0, count, options = {}) {\n        options.conditions = options.conditions || {};\n        options.conditions = options.conditions || {};\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        return tracingClient.withSpan(\"BlobClient-download\", options, async (updatedOptions) => {\n            var _a;\n            const res = assertResponse(await this.blobContext.download({\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                requestOptions: {\n                    onDownloadProgress: isNode ? undefined : options.onProgress, // for Node.js, progress is reported by RetriableReadableStream\n                },\n                range: offset === 0 && !count ? undefined : rangeToString({ offset, count }),\n                rangeGetContentMD5: options.rangeGetContentMD5,\n                rangeGetContentCRC64: options.rangeGetContentCrc64,\n                snapshot: options.snapshot,\n                cpkInfo: options.customerProvidedKey,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n            const wrappedRes = Object.assign(Object.assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) });\n            // Return browser response immediately\n            if (!isNode) {\n                return wrappedRes;\n            }\n            // We support retrying when download stream unexpected ends in Node.js runtime\n            // Following code shouldn't be bundled into browser build, however some\n            // bundlers may try to bundle following code and \"FileReadResponse.ts\".\n            // In this case, \"FileDownloadResponse.browser.ts\" will be used as a shim of \"FileDownloadResponse.ts\"\n            // The config is in package.json \"browser\" field\n            if (options.maxRetryRequests === undefined || options.maxRetryRequests < 0) {\n                // TODO: Default value or make it a required parameter?\n                options.maxRetryRequests = DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS;\n            }\n            if (res.contentLength === undefined) {\n                throw new RangeError(`File download response doesn't contain valid content length header`);\n            }\n            if (!res.etag) {\n                throw new RangeError(`File download response doesn't contain valid etag header`);\n            }\n            return new BlobDownloadResponse(wrappedRes, async (start) => {\n                var _a;\n                const updatedDownloadOptions = {\n                    leaseAccessConditions: options.conditions,\n                    modifiedAccessConditions: {\n                        ifMatch: options.conditions.ifMatch || res.etag,\n                        ifModifiedSince: options.conditions.ifModifiedSince,\n                        ifNoneMatch: options.conditions.ifNoneMatch,\n                        ifUnmodifiedSince: options.conditions.ifUnmodifiedSince,\n                        ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions,\n                    },\n                    range: rangeToString({\n                        count: offset + res.contentLength - start,\n                        offset: start,\n                    }),\n                    rangeGetContentMD5: options.rangeGetContentMD5,\n                    rangeGetContentCRC64: options.rangeGetContentCrc64,\n                    snapshot: options.snapshot,\n                    cpkInfo: options.customerProvidedKey,\n                };\n                // Debug purpose only\n                // console.log(\n                //   `Read from internal stream, range: ${\n                //     updatedOptions.range\n                //   }, options: ${JSON.stringify(updatedOptions)}`\n                // );\n                return (await this.blobContext.download(Object.assign({ abortSignal: options.abortSignal }, updatedDownloadOptions))).readableStreamBody;\n            }, offset, res.contentLength, {\n                maxRetryRequests: options.maxRetryRequests,\n                onProgress: options.onProgress,\n            });\n        });\n    }\n    /**\n     * Returns true if the Azure blob resource represented by this client exists; false otherwise.\n     *\n     * NOTE: use this function with care since an existing blob might be deleted by other clients or\n     * applications. Vice versa new blobs might be added by other clients or applications after this\n     * function completes.\n     *\n     * @param options - options to Exists operation.\n     */\n    async exists(options = {}) {\n        return tracingClient.withSpan(\"BlobClient-exists\", options, async (updatedOptions) => {\n            try {\n                ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n                await this.getProperties({\n                    abortSignal: options.abortSignal,\n                    customerProvidedKey: options.customerProvidedKey,\n                    conditions: options.conditions,\n                    tracingOptions: updatedOptions.tracingOptions,\n                });\n                return true;\n            }\n            catch (e) {\n                if (e.statusCode === 404) {\n                    // Expected exception when checking blob existence\n                    return false;\n                }\n                else if (e.statusCode === 409 &&\n                    (e.details.errorCode === BlobUsesCustomerSpecifiedEncryptionMsg ||\n                        e.details.errorCode === BlobDoesNotUseCustomerSpecifiedEncryption)) {\n                    // Expected exception when checking blob existence\n                    return true;\n                }\n                throw e;\n            }\n        });\n    }\n    /**\n     * Returns all user-defined metadata, standard HTTP properties, and system properties\n     * for the blob. It does not return the content of the blob.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-properties\n     *\n     * WARNING: The `metadata` object returned in the response will have its keys in lowercase, even if\n     * they originally contained uppercase characters. This differs from the metadata keys returned by\n     * the methods of {@link ContainerClient} that list blobs using the `includeMetadata` option, which\n     * will retain their original casing.\n     *\n     * @param options - Optional options to Get Properties operation.\n     */\n    async getProperties(options = {}) {\n        options.conditions = options.conditions || {};\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        return tracingClient.withSpan(\"BlobClient-getProperties\", options, async (updatedOptions) => {\n            var _a;\n            const res = assertResponse(await this.blobContext.getProperties({\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                cpkInfo: options.customerProvidedKey,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n            return Object.assign(Object.assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) });\n        });\n    }\n    /**\n     * Marks the specified blob or snapshot for deletion. The blob is later deleted\n     * during garbage collection. Note that in order to delete a blob, you must delete\n     * all of its snapshots. You can delete both at the same time with the Delete\n     * Blob operation.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob\n     *\n     * @param options - Optional options to Blob Delete operation.\n     */\n    async delete(options = {}) {\n        options.conditions = options.conditions || {};\n        return tracingClient.withSpan(\"BlobClient-delete\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this.blobContext.delete({\n                abortSignal: options.abortSignal,\n                deleteSnapshots: options.deleteSnapshots,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Marks the specified blob or snapshot for deletion if it exists. The blob is later deleted\n     * during garbage collection. Note that in order to delete a blob, you must delete\n     * all of its snapshots. You can delete both at the same time with the Delete\n     * Blob operation.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob\n     *\n     * @param options - Optional options to Blob Delete operation.\n     */\n    async deleteIfExists(options = {}) {\n        return tracingClient.withSpan(\"BlobClient-deleteIfExists\", options, async (updatedOptions) => {\n            var _a, _b;\n            try {\n                const res = assertResponse(await this.delete(updatedOptions));\n                return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response });\n            }\n            catch (e) {\n                if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === \"BlobNotFound\") {\n                    return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });\n                }\n                throw e;\n            }\n        });\n    }\n    /**\n     * Restores the contents and metadata of soft deleted blob and any associated\n     * soft deleted snapshots. Undelete Blob is supported only on version 2017-07-29\n     * or later.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/undelete-blob\n     *\n     * @param options - Optional options to Blob Undelete operation.\n     */\n    async undelete(options = {}) {\n        return tracingClient.withSpan(\"BlobClient-undelete\", options, async (updatedOptions) => {\n            return assertResponse(await this.blobContext.undelete({\n                abortSignal: options.abortSignal,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Sets system properties on the blob.\n     *\n     * If no value provided, or no value provided for the specified blob HTTP headers,\n     * these blob HTTP headers without a value will be cleared.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-properties\n     *\n     * @param blobHTTPHeaders - If no value provided, or no value provided for\n     *                                                   the specified blob HTTP headers, these blob HTTP\n     *                                                   headers without a value will be cleared.\n     *                                                   A common header to set is `blobContentType`\n     *                                                   enabling the browser to provide functionality\n     *                                                   based on file type.\n     * @param options - Optional options to Blob Set HTTP Headers operation.\n     */\n    async setHTTPHeaders(blobHTTPHeaders, options = {}) {\n        options.conditions = options.conditions || {};\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        return tracingClient.withSpan(\"BlobClient-setHTTPHeaders\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this.blobContext.setHttpHeaders({\n                abortSignal: options.abortSignal,\n                blobHttpHeaders: blobHTTPHeaders,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                // cpkInfo: options.customerProvidedKey, // CPK is not included in Swagger, should change this back when this issue is fixed in Swagger.\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Sets user-defined metadata for the specified blob as one or more name-value pairs.\n     *\n     * If no option provided, or no metadata defined in the parameter, the blob\n     * metadata will be removed.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-metadata\n     *\n     * @param metadata - Replace existing metadata with this value.\n     *                               If no value provided the existing metadata will be removed.\n     * @param options - Optional options to Set Metadata operation.\n     */\n    async setMetadata(metadata, options = {}) {\n        options.conditions = options.conditions || {};\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        return tracingClient.withSpan(\"BlobClient-setMetadata\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this.blobContext.setMetadata({\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                metadata,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                cpkInfo: options.customerProvidedKey,\n                encryptionScope: options.encryptionScope,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Sets tags on the underlying blob.\n     * A blob can have up to 10 tags. Tag keys must be between 1 and 128 characters.  Tag values must be between 0 and 256 characters.\n     * Valid tag key and value characters include lower and upper case letters, digits (0-9),\n     * space (' '), plus ('+'), minus ('-'), period ('.'), foward slash ('/'), colon (':'), equals ('='), and underscore ('_').\n     *\n     * @param tags -\n     * @param options -\n     */\n    async setTags(tags, options = {}) {\n        return tracingClient.withSpan(\"BlobClient-setTags\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this.blobContext.setTags({\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                tracingOptions: updatedOptions.tracingOptions,\n                tags: toBlobTags(tags),\n            }));\n        });\n    }\n    /**\n     * Gets the tags associated with the underlying blob.\n     *\n     * @param options -\n     */\n    async getTags(options = {}) {\n        return tracingClient.withSpan(\"BlobClient-getTags\", options, async (updatedOptions) => {\n            var _a;\n            const response = assertResponse(await this.blobContext.getTags({\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, tags: toTags({ blobTagSet: response.blobTagSet }) || {} });\n            return wrappedResponse;\n        });\n    }\n    /**\n     * Get a {@link BlobLeaseClient} that manages leases on the blob.\n     *\n     * @param proposeLeaseId - Initial proposed lease Id.\n     * @returns A new BlobLeaseClient object for managing leases on the blob.\n     */\n    getBlobLeaseClient(proposeLeaseId) {\n        return new BlobLeaseClient(this, proposeLeaseId);\n    }\n    /**\n     * Creates a read-only snapshot of a blob.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/snapshot-blob\n     *\n     * @param options - Optional options to the Blob Create Snapshot operation.\n     */\n    async createSnapshot(options = {}) {\n        options.conditions = options.conditions || {};\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        return tracingClient.withSpan(\"BlobClient-createSnapshot\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this.blobContext.createSnapshot({\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                metadata: options.metadata,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                cpkInfo: options.customerProvidedKey,\n                encryptionScope: options.encryptionScope,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Asynchronously copies a blob to a destination within the storage account.\n     * This method returns a long running operation poller that allows you to wait\n     * indefinitely until the copy is completed.\n     * You can also cancel a copy before it is completed by calling `cancelOperation` on the poller.\n     * Note that the onProgress callback will not be invoked if the operation completes in the first\n     * request, and attempting to cancel a completed copy will result in an error being thrown.\n     *\n     * In version 2012-02-12 and later, the source for a Copy Blob operation can be\n     * a committed blob in any Azure storage account.\n     * Beginning with version 2015-02-21, the source for a Copy Blob operation can be\n     * an Azure file in any Azure storage account.\n     * Only storage accounts created on or after June 7th, 2012 allow the Copy Blob\n     * operation to copy from another storage account.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob\n     *\n     * Example using automatic polling:\n     *\n     * ```js\n     * const copyPoller = await blobClient.beginCopyFromURL('url');\n     * const result = await copyPoller.pollUntilDone();\n     * ```\n     *\n     * Example using manual polling:\n     *\n     * ```js\n     * const copyPoller = await blobClient.beginCopyFromURL('url');\n     * while (!poller.isDone()) {\n     *    await poller.poll();\n     * }\n     * const result = copyPoller.getResult();\n     * ```\n     *\n     * Example using progress updates:\n     *\n     * ```js\n     * const copyPoller = await blobClient.beginCopyFromURL('url', {\n     *   onProgress(state) {\n     *     console.log(`Progress: ${state.copyProgress}`);\n     *   }\n     * });\n     * const result = await copyPoller.pollUntilDone();\n     * ```\n     *\n     * Example using a changing polling interval (default 15 seconds):\n     *\n     * ```js\n     * const copyPoller = await blobClient.beginCopyFromURL('url', {\n     *   intervalInMs: 1000 // poll blob every 1 second for copy progress\n     * });\n     * const result = await copyPoller.pollUntilDone();\n     * ```\n     *\n     * Example using copy cancellation:\n     *\n     * ```js\n     * const copyPoller = await blobClient.beginCopyFromURL('url');\n     * // cancel operation after starting it.\n     * try {\n     *   await copyPoller.cancelOperation();\n     *   // calls to get the result now throw PollerCancelledError\n     *   await copyPoller.getResult();\n     * } catch (err) {\n     *   if (err.name === 'PollerCancelledError') {\n     *     console.log('The copy was cancelled.');\n     *   }\n     * }\n     * ```\n     *\n     * @param copySource - url to the source Azure Blob/File.\n     * @param options - Optional options to the Blob Start Copy From URL operation.\n     */\n    async beginCopyFromURL(copySource, options = {}) {\n        const client = {\n            abortCopyFromURL: (...args) => this.abortCopyFromURL(...args),\n            getProperties: (...args) => this.getProperties(...args),\n            startCopyFromURL: (...args) => this.startCopyFromURL(...args),\n        };\n        const poller = new BlobBeginCopyFromUrlPoller({\n            blobClient: client,\n            copySource,\n            intervalInMs: options.intervalInMs,\n            onProgress: options.onProgress,\n            resumeFrom: options.resumeFrom,\n            startCopyFromURLOptions: options,\n        });\n        // Trigger the startCopyFromURL call by calling poll.\n        // Any errors from this method should be surfaced to the user.\n        await poller.poll();\n        return poller;\n    }\n    /**\n     * Aborts a pending asynchronous Copy Blob operation, and leaves a destination blob with zero\n     * length and full metadata. Version 2012-02-12 and newer.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/abort-copy-blob\n     *\n     * @param copyId - Id of the Copy From URL operation.\n     * @param options - Optional options to the Blob Abort Copy From URL operation.\n     */\n    async abortCopyFromURL(copyId, options = {}) {\n        return tracingClient.withSpan(\"BlobClient-abortCopyFromURL\", options, async (updatedOptions) => {\n            return assertResponse(await this.blobContext.abortCopyFromURL(copyId, {\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * The synchronous Copy From URL operation copies a blob or an internet resource to a new blob. It will not\n     * return a response until the copy is complete.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob-from-url\n     *\n     * @param copySource - The source URL to copy from, Shared Access Signature(SAS) maybe needed for authentication\n     * @param options -\n     */\n    async syncCopyFromURL(copySource, options = {}) {\n        options.conditions = options.conditions || {};\n        options.sourceConditions = options.sourceConditions || {};\n        return tracingClient.withSpan(\"BlobClient-syncCopyFromURL\", options, async (updatedOptions) => {\n            var _a, _b, _c, _d, _e, _f, _g;\n            return assertResponse(await this.blobContext.copyFromURL(copySource, {\n                abortSignal: options.abortSignal,\n                metadata: options.metadata,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                sourceModifiedAccessConditions: {\n                    sourceIfMatch: (_b = options.sourceConditions) === null || _b === void 0 ? void 0 : _b.ifMatch,\n                    sourceIfModifiedSince: (_c = options.sourceConditions) === null || _c === void 0 ? void 0 : _c.ifModifiedSince,\n                    sourceIfNoneMatch: (_d = options.sourceConditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch,\n                    sourceIfUnmodifiedSince: (_e = options.sourceConditions) === null || _e === void 0 ? void 0 : _e.ifUnmodifiedSince,\n                },\n                sourceContentMD5: options.sourceContentMD5,\n                copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization),\n                tier: toAccessTier(options.tier),\n                blobTagsString: toBlobTagsString(options.tags),\n                immutabilityPolicyExpiry: (_f = options.immutabilityPolicy) === null || _f === void 0 ? void 0 : _f.expiriesOn,\n                immutabilityPolicyMode: (_g = options.immutabilityPolicy) === null || _g === void 0 ? void 0 : _g.policyMode,\n                legalHold: options.legalHold,\n                encryptionScope: options.encryptionScope,\n                copySourceTags: options.copySourceTags,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Sets the tier on a blob. The operation is allowed on a page blob in a premium\n     * storage account and on a block blob in a blob storage account (locally redundant\n     * storage only). A premium page blob's tier determines the allowed size, IOPS,\n     * and bandwidth of the blob. A block blob's tier determines Hot/Cool/Archive\n     * storage type. This operation does not update the blob's ETag.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-tier\n     *\n     * @param tier - The tier to be set on the blob. Valid values are Hot, Cool, or Archive.\n     * @param options - Optional options to the Blob Set Tier operation.\n     */\n    async setAccessTier(tier, options = {}) {\n        return tracingClient.withSpan(\"BlobClient-setAccessTier\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this.blobContext.setTier(toAccessTier(tier), {\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                rehydratePriority: options.rehydratePriority,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    async downloadToBuffer(param1, param2, param3, param4 = {}) {\n        var _a;\n        let buffer;\n        let offset = 0;\n        let count = 0;\n        let options = param4;\n        if (param1 instanceof Buffer) {\n            buffer = param1;\n            offset = param2 || 0;\n            count = typeof param3 === \"number\" ? param3 : 0;\n        }\n        else {\n            offset = typeof param1 === \"number\" ? param1 : 0;\n            count = typeof param2 === \"number\" ? param2 : 0;\n            options = param3 || {};\n        }\n        let blockSize = (_a = options.blockSize) !== null && _a !== void 0 ? _a : 0;\n        if (blockSize < 0) {\n            throw new RangeError(\"blockSize option must be >= 0\");\n        }\n        if (blockSize === 0) {\n            blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;\n        }\n        if (offset < 0) {\n            throw new RangeError(\"offset option must be >= 0\");\n        }\n        if (count && count <= 0) {\n            throw new RangeError(\"count option must be greater than 0\");\n        }\n        if (!options.conditions) {\n            options.conditions = {};\n        }\n        return tracingClient.withSpan(\"BlobClient-downloadToBuffer\", options, async (updatedOptions) => {\n            // Customer doesn't specify length, get it\n            if (!count) {\n                const response = await this.getProperties(Object.assign(Object.assign({}, options), { tracingOptions: updatedOptions.tracingOptions }));\n                count = response.contentLength - offset;\n                if (count < 0) {\n                    throw new RangeError(`offset ${offset} shouldn't be larger than blob size ${response.contentLength}`);\n                }\n            }\n            // Allocate the buffer of size = count if the buffer is not provided\n            if (!buffer) {\n                try {\n                    buffer = Buffer.alloc(count);\n                }\n                catch (error) {\n                    throw new Error(`Unable to allocate the buffer of size: ${count}(in bytes). Please try passing your own buffer to the \"downloadToBuffer\" method or try using other methods like \"download\" or \"downloadToFile\".\\t ${error.message}`);\n                }\n            }\n            if (buffer.length < count) {\n                throw new RangeError(`The buffer's size should be equal to or larger than the request count of bytes: ${count}`);\n            }\n            let transferProgress = 0;\n            const batch = new Batch(options.concurrency);\n            for (let off = offset; off < offset + count; off = off + blockSize) {\n                batch.addOperation(async () => {\n                    // Exclusive chunk end position\n                    let chunkEnd = offset + count;\n                    if (off + blockSize < chunkEnd) {\n                        chunkEnd = off + blockSize;\n                    }\n                    const response = await this.download(off, chunkEnd - off, {\n                        abortSignal: options.abortSignal,\n                        conditions: options.conditions,\n                        maxRetryRequests: options.maxRetryRequestsPerBlock,\n                        customerProvidedKey: options.customerProvidedKey,\n                        tracingOptions: updatedOptions.tracingOptions,\n                    });\n                    const stream = response.readableStreamBody;\n                    await streamToBuffer(stream, buffer, off - offset, chunkEnd - offset);\n                    // Update progress after block is downloaded, in case of block trying\n                    // Could provide finer grained progress updating inside HTTP requests,\n                    // only if convenience layer download try is enabled\n                    transferProgress += chunkEnd - off;\n                    if (options.onProgress) {\n                        options.onProgress({ loadedBytes: transferProgress });\n                    }\n                });\n            }\n            await batch.do();\n            return buffer;\n        });\n    }\n    /**\n     * ONLY AVAILABLE IN NODE.JS RUNTIME.\n     *\n     * Downloads an Azure Blob to a local file.\n     * Fails if the the given file path already exits.\n     * Offset and count are optional, pass 0 and undefined respectively to download the entire blob.\n     *\n     * @param filePath -\n     * @param offset - From which position of the block blob to download.\n     * @param count - How much data to be downloaded. Will download to the end when passing undefined.\n     * @param options - Options to Blob download options.\n     * @returns The response data for blob download operation,\n     *                                                 but with readableStreamBody set to undefined since its\n     *                                                 content is already read and written into a local file\n     *                                                 at the specified path.\n     */\n    async downloadToFile(filePath, offset = 0, count, options = {}) {\n        return tracingClient.withSpan(\"BlobClient-downloadToFile\", options, async (updatedOptions) => {\n            const response = await this.download(offset, count, Object.assign(Object.assign({}, options), { tracingOptions: updatedOptions.tracingOptions }));\n            if (response.readableStreamBody) {\n                await readStreamToLocalFile(response.readableStreamBody, filePath);\n            }\n            // The stream is no longer accessible so setting it to undefined.\n            response.blobDownloadStream = undefined;\n            return response;\n        });\n    }\n    getBlobAndContainerNamesFromUrl() {\n        let containerName;\n        let blobName;\n        try {\n            //  URL may look like the following\n            // \"https://myaccount.blob.core.windows.net/mycontainer/blob?sasString\";\n            // \"https://myaccount.blob.core.windows.net/mycontainer/blob\";\n            // \"https://myaccount.blob.core.windows.net/mycontainer/blob/a.txt?sasString\";\n            // \"https://myaccount.blob.core.windows.net/mycontainer/blob/a.txt\";\n            // IPv4/IPv6 address hosts, Endpoints - `http://127.0.0.1:10000/devstoreaccount1/containername/blob`\n            // http://localhost:10001/devstoreaccount1/containername/blob\n            const parsedUrl = new URL(this.url);\n            if (parsedUrl.host.split(\".\")[1] === \"blob\") {\n                // \"https://myaccount.blob.core.windows.net/containername/blob\".\n                // .getPath() -> /containername/blob\n                const pathComponents = parsedUrl.pathname.match(\"/([^/]*)(/(.*))?\");\n                containerName = pathComponents[1];\n                blobName = pathComponents[3];\n            }\n            else if (isIpEndpointStyle(parsedUrl)) {\n                // IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/containername/blob\n                // Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/containername/blob\n                // .getPath() -> /devstoreaccount1/containername/blob\n                const pathComponents = parsedUrl.pathname.match(\"/([^/]*)/([^/]*)(/(.*))?\");\n                containerName = pathComponents[2];\n                blobName = pathComponents[4];\n            }\n            else {\n                // \"https://customdomain.com/containername/blob\".\n                // .getPath() -> /containername/blob\n                const pathComponents = parsedUrl.pathname.match(\"/([^/]*)(/(.*))?\");\n                containerName = pathComponents[1];\n                blobName = pathComponents[3];\n            }\n            // decode the encoded blobName, containerName - to get all the special characters that might be present in them\n            containerName = decodeURIComponent(containerName);\n            blobName = decodeURIComponent(blobName);\n            // Azure Storage Server will replace \"\\\" with \"/\" in the blob names\n            //   doing the same in the SDK side so that the user doesn't have to replace \"\\\" instances in the blobName\n            blobName = blobName.replace(/\\\\/g, \"/\");\n            if (!containerName) {\n                throw new Error(\"Provided containerName is invalid.\");\n            }\n            return { blobName, containerName };\n        }\n        catch (error) {\n            throw new Error(\"Unable to extract blobName and containerName with provided information.\");\n        }\n    }\n    /**\n     * Asynchronously copies a blob to a destination within the storage account.\n     * In version 2012-02-12 and later, the source for a Copy Blob operation can be\n     * a committed blob in any Azure storage account.\n     * Beginning with version 2015-02-21, the source for a Copy Blob operation can be\n     * an Azure file in any Azure storage account.\n     * Only storage accounts created on or after June 7th, 2012 allow the Copy Blob\n     * operation to copy from another storage account.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob\n     *\n     * @param copySource - url to the source Azure Blob/File.\n     * @param options - Optional options to the Blob Start Copy From URL operation.\n     */\n    async startCopyFromURL(copySource, options = {}) {\n        return tracingClient.withSpan(\"BlobClient-startCopyFromURL\", options, async (updatedOptions) => {\n            var _a, _b, _c;\n            options.conditions = options.conditions || {};\n            options.sourceConditions = options.sourceConditions || {};\n            return assertResponse(await this.blobContext.startCopyFromURL(copySource, {\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                metadata: options.metadata,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                sourceModifiedAccessConditions: {\n                    sourceIfMatch: options.sourceConditions.ifMatch,\n                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,\n                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,\n                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince,\n                    sourceIfTags: options.sourceConditions.tagConditions,\n                },\n                immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn,\n                immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode,\n                legalHold: options.legalHold,\n                rehydratePriority: options.rehydratePriority,\n                tier: toAccessTier(options.tier),\n                blobTagsString: toBlobTagsString(options.tags),\n                sealBlob: options.sealBlob,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Only available for BlobClient constructed with a shared key credential.\n     *\n     * Generates a Blob Service Shared Access Signature (SAS) URI based on the client properties\n     * and parameters passed in. The SAS is signed by the shared key credential of the client.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas\n     *\n     * @param options - Optional parameters.\n     * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.\n     */\n    generateSasUrl(options) {\n        return new Promise((resolve) => {\n            if (!(this.credential instanceof StorageSharedKeyCredential)) {\n                throw new RangeError(\"Can only generate the SAS when the client is initialized with a shared key credential\");\n            }\n            const sas = generateBlobSASQueryParameters(Object.assign({ containerName: this._containerName, blobName: this._name, snapshotTime: this._snapshot, versionId: this._versionId }, options), this.credential).toString();\n            resolve(appendToURLQuery(this.url, sas));\n        });\n    }\n    /**\n     * Only available for BlobClient constructed with a shared key credential.\n     *\n     * Generates string to sign for a Blob Service Shared Access Signature (SAS) URI based on\n     * the client properties and parameters passed in. The SAS is signed by the shared key credential of the client.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas\n     *\n     * @param options - Optional parameters.\n     * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.\n     */\n    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n    generateSasStringToSign(options) {\n        if (!(this.credential instanceof StorageSharedKeyCredential)) {\n            throw new RangeError(\"Can only generate the SAS when the client is initialized with a shared key credential\");\n        }\n        return generateBlobSASQueryParametersInternal(Object.assign({ containerName: this._containerName, blobName: this._name, snapshotTime: this._snapshot, versionId: this._versionId }, options), this.credential).stringToSign;\n    }\n    /**\n     *\n     * Generates a Blob Service Shared Access Signature (SAS) URI based on\n     * the client properties and parameters passed in. The SAS is signed by the input user delegation key.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas\n     *\n     * @param options - Optional parameters.\n     * @param userDelegationKey -  Return value of `blobServiceClient.getUserDelegationKey()`\n     * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.\n     */\n    generateUserDelegationSasUrl(options, userDelegationKey) {\n        return new Promise((resolve) => {\n            const sas = generateBlobSASQueryParameters(Object.assign({ containerName: this._containerName, blobName: this._name, snapshotTime: this._snapshot, versionId: this._versionId }, options), userDelegationKey, this.accountName).toString();\n            resolve(appendToURLQuery(this.url, sas));\n        });\n    }\n    /**\n     * Only available for BlobClient constructed with a shared key credential.\n     *\n     * Generates string to sign for a Blob Service Shared Access Signature (SAS) URI based on\n     * the client properties and parameters passed in. The SAS is signed by the input user delegation key.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas\n     *\n     * @param options - Optional parameters.\n     * @param userDelegationKey -  Return value of `blobServiceClient.getUserDelegationKey()`\n     * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.\n     */\n    generateUserDelegationSasStringToSign(options, userDelegationKey) {\n        return generateBlobSASQueryParametersInternal(Object.assign({ containerName: this._containerName, blobName: this._name, snapshotTime: this._snapshot, versionId: this._versionId }, options), userDelegationKey, this.accountName).stringToSign;\n    }\n    /**\n     * Delete the immutablility policy on the blob.\n     *\n     * @param options - Optional options to delete immutability policy on the blob.\n     */\n    async deleteImmutabilityPolicy(options = {}) {\n        return tracingClient.withSpan(\"BlobClient-deleteImmutabilityPolicy\", options, async (updatedOptions) => {\n            return assertResponse(await this.blobContext.deleteImmutabilityPolicy({\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Set immutability policy on the blob.\n     *\n     * @param options - Optional options to set immutability policy on the blob.\n     */\n    async setImmutabilityPolicy(immutabilityPolicy, options = {}) {\n        return tracingClient.withSpan(\"BlobClient-setImmutabilityPolicy\", options, async (updatedOptions) => {\n            return assertResponse(await this.blobContext.setImmutabilityPolicy({\n                immutabilityPolicyExpiry: immutabilityPolicy.expiriesOn,\n                immutabilityPolicyMode: immutabilityPolicy.policyMode,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Set legal hold on the blob.\n     *\n     * @param options - Optional options to set legal hold on the blob.\n     */\n    async setLegalHold(legalHoldEnabled, options = {}) {\n        return tracingClient.withSpan(\"BlobClient-setLegalHold\", options, async (updatedOptions) => {\n            return assertResponse(await this.blobContext.setLegalHold(legalHoldEnabled, {\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * The Get Account Information operation returns the sku name and account kind\n     * for the specified account.\n     * The Get Account Information operation is available on service versions beginning\n     * with version 2018-03-28.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-account-information\n     *\n     * @param options - Options to the Service Get Account Info operation.\n     * @returns Response data for the Service Get Account Info operation.\n     */\n    async getAccountInfo(options = {}) {\n        return tracingClient.withSpan(\"BlobClient-getAccountInfo\", options, async (updatedOptions) => {\n            return assertResponse(await this.blobContext.getAccountInfo({\n                abortSignal: options.abortSignal,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n}\n/**\n * AppendBlobClient defines a set of operations applicable to append blobs.\n */\nexport class AppendBlobClient extends BlobClient {\n    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, \n    // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n    options) {\n        // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.\n        //   super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);\n        let pipeline;\n        let url;\n        options = options || {};\n        if (isPipelineLike(credentialOrPipelineOrContainerName)) {\n            // (url: string, pipeline: Pipeline)\n            url = urlOrConnectionString;\n            pipeline = credentialOrPipelineOrContainerName;\n        }\n        else if ((isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||\n            credentialOrPipelineOrContainerName instanceof AnonymousCredential ||\n            isTokenCredential(credentialOrPipelineOrContainerName)) {\n            // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)      url = urlOrConnectionString;\n            url = urlOrConnectionString;\n            options = blobNameOrOptions;\n            pipeline = newPipeline(credentialOrPipelineOrContainerName, options);\n        }\n        else if (!credentialOrPipelineOrContainerName &&\n            typeof credentialOrPipelineOrContainerName !== \"string\") {\n            // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n            url = urlOrConnectionString;\n            // The second parameter is undefined. Use anonymous credential.\n            pipeline = newPipeline(new AnonymousCredential(), options);\n        }\n        else if (credentialOrPipelineOrContainerName &&\n            typeof credentialOrPipelineOrContainerName === \"string\" &&\n            blobNameOrOptions &&\n            typeof blobNameOrOptions === \"string\") {\n            // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)\n            const containerName = credentialOrPipelineOrContainerName;\n            const blobName = blobNameOrOptions;\n            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);\n            if (extractedCreds.kind === \"AccountConnString\") {\n                if (isNode) {\n                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);\n                    url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));\n                    if (!options.proxyOptions) {\n                        options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);\n                    }\n                    pipeline = newPipeline(sharedKeyCredential, options);\n                }\n                else {\n                    throw new Error(\"Account connection string is only supported in Node.js environment\");\n                }\n            }\n            else if (extractedCreds.kind === \"SASConnString\") {\n                url =\n                    appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName)) +\n                        \"?\" +\n                        extractedCreds.accountSas;\n                pipeline = newPipeline(new AnonymousCredential(), options);\n            }\n            else {\n                throw new Error(\"Connection string must be either an Account connection string or a SAS connection string\");\n            }\n        }\n        else {\n            throw new Error(\"Expecting non-empty strings for containerName and blobName parameters\");\n        }\n        super(url, pipeline);\n        this.appendBlobContext = this.storageClientContext.appendBlob;\n    }\n    /**\n     * Creates a new AppendBlobClient object identical to the source but with the\n     * specified snapshot timestamp.\n     * Provide \"\" will remove the snapshot and return a Client to the base blob.\n     *\n     * @param snapshot - The snapshot timestamp.\n     * @returns A new AppendBlobClient object identical to the source but with the specified snapshot timestamp.\n     */\n    withSnapshot(snapshot) {\n        return new AppendBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);\n    }\n    /**\n     * Creates a 0-length append blob. Call AppendBlock to append data to an append blob.\n     * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n     *\n     * @param options - Options to the Append Block Create operation.\n     *\n     *\n     * Example usage:\n     *\n     * ```js\n     * const appendBlobClient = containerClient.getAppendBlobClient(\"<blob name>\");\n     * await appendBlobClient.create();\n     * ```\n     */\n    async create(options = {}) {\n        options.conditions = options.conditions || {};\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        return tracingClient.withSpan(\"AppendBlobClient-create\", options, async (updatedOptions) => {\n            var _a, _b, _c;\n            return assertResponse(await this.appendBlobContext.create(0, {\n                abortSignal: options.abortSignal,\n                blobHttpHeaders: options.blobHTTPHeaders,\n                leaseAccessConditions: options.conditions,\n                metadata: options.metadata,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                cpkInfo: options.customerProvidedKey,\n                encryptionScope: options.encryptionScope,\n                immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn,\n                immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode,\n                legalHold: options.legalHold,\n                blobTagsString: toBlobTagsString(options.tags),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Creates a 0-length append blob. Call AppendBlock to append data to an append blob.\n     * If the blob with the same name already exists, the content of the existing blob will remain unchanged.\n     * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n     *\n     * @param options -\n     */\n    async createIfNotExists(options = {}) {\n        const conditions = { ifNoneMatch: ETagAny };\n        return tracingClient.withSpan(\"AppendBlobClient-createIfNotExists\", options, async (updatedOptions) => {\n            var _a, _b;\n            try {\n                const res = assertResponse(await this.create(Object.assign(Object.assign({}, updatedOptions), { conditions })));\n                return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response });\n            }\n            catch (e) {\n                if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === \"BlobAlreadyExists\") {\n                    return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });\n                }\n                throw e;\n            }\n        });\n    }\n    /**\n     * Seals the append blob, making it read only.\n     *\n     * @param options -\n     */\n    async seal(options = {}) {\n        options.conditions = options.conditions || {};\n        return tracingClient.withSpan(\"AppendBlobClient-seal\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this.appendBlobContext.seal({\n                abortSignal: options.abortSignal,\n                appendPositionAccessConditions: options.conditions,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Commits a new block of data to the end of the existing append blob.\n     * @see https://docs.microsoft.com/rest/api/storageservices/append-block\n     *\n     * @param body - Data to be appended.\n     * @param contentLength - Length of the body in bytes.\n     * @param options - Options to the Append Block operation.\n     *\n     *\n     * Example usage:\n     *\n     * ```js\n     * const content = \"Hello World!\";\n     *\n     * // Create a new append blob and append data to the blob.\n     * const newAppendBlobClient = containerClient.getAppendBlobClient(\"<blob name>\");\n     * await newAppendBlobClient.create();\n     * await newAppendBlobClient.appendBlock(content, content.length);\n     *\n     * // Append data to an existing append blob.\n     * const existingAppendBlobClient = containerClient.getAppendBlobClient(\"<blob name>\");\n     * await existingAppendBlobClient.appendBlock(content, content.length);\n     * ```\n     */\n    async appendBlock(body, contentLength, options = {}) {\n        options.conditions = options.conditions || {};\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        return tracingClient.withSpan(\"AppendBlobClient-appendBlock\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this.appendBlobContext.appendBlock(contentLength, body, {\n                abortSignal: options.abortSignal,\n                appendPositionAccessConditions: options.conditions,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                requestOptions: {\n                    onUploadProgress: options.onProgress,\n                },\n                transactionalContentMD5: options.transactionalContentMD5,\n                transactionalContentCrc64: options.transactionalContentCrc64,\n                cpkInfo: options.customerProvidedKey,\n                encryptionScope: options.encryptionScope,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * The Append Block operation commits a new block of data to the end of an existing append blob\n     * where the contents are read from a source url.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/append-block-from-url\n     *\n     * @param sourceURL -\n     *                 The url to the blob that will be the source of the copy. A source blob in the same storage account can\n     *                 be authenticated via Shared Key. However, if the source is a blob in another account, the source blob\n     *                 must either be public or must be authenticated via a shared access signature. If the source blob is\n     *                 public, no authentication is required to perform the operation.\n     * @param sourceOffset - Offset in source to be appended\n     * @param count - Number of bytes to be appended as a block\n     * @param options -\n     */\n    async appendBlockFromURL(sourceURL, sourceOffset, count, options = {}) {\n        options.conditions = options.conditions || {};\n        options.sourceConditions = options.sourceConditions || {};\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        return tracingClient.withSpan(\"AppendBlobClient-appendBlockFromURL\", options, async (updatedOptions) => {\n            var _a, _b, _c, _d, _e;\n            return assertResponse(await this.appendBlobContext.appendBlockFromUrl(sourceURL, 0, {\n                abortSignal: options.abortSignal,\n                sourceRange: rangeToString({ offset: sourceOffset, count }),\n                sourceContentMD5: options.sourceContentMD5,\n                sourceContentCrc64: options.sourceContentCrc64,\n                leaseAccessConditions: options.conditions,\n                appendPositionAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                sourceModifiedAccessConditions: {\n                    sourceIfMatch: (_b = options.sourceConditions) === null || _b === void 0 ? void 0 : _b.ifMatch,\n                    sourceIfModifiedSince: (_c = options.sourceConditions) === null || _c === void 0 ? void 0 : _c.ifModifiedSince,\n                    sourceIfNoneMatch: (_d = options.sourceConditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch,\n                    sourceIfUnmodifiedSince: (_e = options.sourceConditions) === null || _e === void 0 ? void 0 : _e.ifUnmodifiedSince,\n                },\n                copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization),\n                cpkInfo: options.customerProvidedKey,\n                encryptionScope: options.encryptionScope,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n}\n/**\n * BlockBlobClient defines a set of operations applicable to block blobs.\n */\nexport class BlockBlobClient extends BlobClient {\n    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, \n    // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n    options) {\n        // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.\n        //   super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);\n        let pipeline;\n        let url;\n        options = options || {};\n        if (isPipelineLike(credentialOrPipelineOrContainerName)) {\n            // (url: string, pipeline: Pipeline)\n            url = urlOrConnectionString;\n            pipeline = credentialOrPipelineOrContainerName;\n        }\n        else if ((isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||\n            credentialOrPipelineOrContainerName instanceof AnonymousCredential ||\n            isTokenCredential(credentialOrPipelineOrContainerName)) {\n            // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n            url = urlOrConnectionString;\n            options = blobNameOrOptions;\n            pipeline = newPipeline(credentialOrPipelineOrContainerName, options);\n        }\n        else if (!credentialOrPipelineOrContainerName &&\n            typeof credentialOrPipelineOrContainerName !== \"string\") {\n            // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n            // The second parameter is undefined. Use anonymous credential.\n            url = urlOrConnectionString;\n            if (blobNameOrOptions && typeof blobNameOrOptions !== \"string\") {\n                options = blobNameOrOptions;\n            }\n            pipeline = newPipeline(new AnonymousCredential(), options);\n        }\n        else if (credentialOrPipelineOrContainerName &&\n            typeof credentialOrPipelineOrContainerName === \"string\" &&\n            blobNameOrOptions &&\n            typeof blobNameOrOptions === \"string\") {\n            // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)\n            const containerName = credentialOrPipelineOrContainerName;\n            const blobName = blobNameOrOptions;\n            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);\n            if (extractedCreds.kind === \"AccountConnString\") {\n                if (isNode) {\n                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);\n                    url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));\n                    if (!options.proxyOptions) {\n                        options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);\n                    }\n                    pipeline = newPipeline(sharedKeyCredential, options);\n                }\n                else {\n                    throw new Error(\"Account connection string is only supported in Node.js environment\");\n                }\n            }\n            else if (extractedCreds.kind === \"SASConnString\") {\n                url =\n                    appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName)) +\n                        \"?\" +\n                        extractedCreds.accountSas;\n                pipeline = newPipeline(new AnonymousCredential(), options);\n            }\n            else {\n                throw new Error(\"Connection string must be either an Account connection string or a SAS connection string\");\n            }\n        }\n        else {\n            throw new Error(\"Expecting non-empty strings for containerName and blobName parameters\");\n        }\n        super(url, pipeline);\n        this.blockBlobContext = this.storageClientContext.blockBlob;\n        this._blobContext = this.storageClientContext.blob;\n    }\n    /**\n     * Creates a new BlockBlobClient object identical to the source but with the\n     * specified snapshot timestamp.\n     * Provide \"\" will remove the snapshot and return a URL to the base blob.\n     *\n     * @param snapshot - The snapshot timestamp.\n     * @returns A new BlockBlobClient object identical to the source but with the specified snapshot timestamp.\n     */\n    withSnapshot(snapshot) {\n        return new BlockBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);\n    }\n    /**\n     * ONLY AVAILABLE IN NODE.JS RUNTIME.\n     *\n     * Quick query for a JSON or CSV formatted blob.\n     *\n     * Example usage (Node.js):\n     *\n     * ```js\n     * // Query and convert a blob to a string\n     * const queryBlockBlobResponse = await blockBlobClient.query(\"select * from BlobStorage\");\n     * const downloaded = (await streamToBuffer(queryBlockBlobResponse.readableStreamBody)).toString();\n     * console.log(\"Query blob content:\", downloaded);\n     *\n     * async function streamToBuffer(readableStream) {\n     *   return new Promise((resolve, reject) => {\n     *     const chunks = [];\n     *     readableStream.on(\"data\", (data) => {\n     *       chunks.push(data instanceof Buffer ? data : Buffer.from(data));\n     *     });\n     *     readableStream.on(\"end\", () => {\n     *       resolve(Buffer.concat(chunks));\n     *     });\n     *     readableStream.on(\"error\", reject);\n     *   });\n     * }\n     * ```\n     *\n     * @param query -\n     * @param options -\n     */\n    async query(query, options = {}) {\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        if (!isNode) {\n            throw new Error(\"This operation currently is only supported in Node.js.\");\n        }\n        return tracingClient.withSpan(\"BlockBlobClient-query\", options, async (updatedOptions) => {\n            var _a;\n            const response = assertResponse(await this._blobContext.query({\n                abortSignal: options.abortSignal,\n                queryRequest: {\n                    queryType: \"SQL\",\n                    expression: query,\n                    inputSerialization: toQuerySerialization(options.inputTextConfiguration),\n                    outputSerialization: toQuerySerialization(options.outputTextConfiguration),\n                },\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                cpkInfo: options.customerProvidedKey,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n            return new BlobQueryResponse(response, {\n                abortSignal: options.abortSignal,\n                onProgress: options.onProgress,\n                onError: options.onError,\n            });\n        });\n    }\n    /**\n     * Creates a new block blob, or updates the content of an existing block blob.\n     * Updating an existing block blob overwrites any existing metadata on the blob.\n     * Partial updates are not supported; the content of the existing blob is\n     * overwritten with the new content. To perform a partial update of a block blob's,\n     * use {@link stageBlock} and {@link commitBlockList}.\n     *\n     * This is a non-parallel uploading method, please use {@link uploadFile},\n     * {@link uploadStream} or {@link uploadBrowserData} for better performance\n     * with concurrency uploading.\n     *\n     * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n     *\n     * @param body - Blob, string, ArrayBuffer, ArrayBufferView or a function\n     *                               which returns a new Readable stream whose offset is from data source beginning.\n     * @param contentLength - Length of body in bytes. Use Buffer.byteLength() to calculate body length for a\n     *                               string including non non-Base64/Hex-encoded characters.\n     * @param options - Options to the Block Blob Upload operation.\n     * @returns Response data for the Block Blob Upload operation.\n     *\n     * Example usage:\n     *\n     * ```js\n     * const content = \"Hello world!\";\n     * const uploadBlobResponse = await blockBlobClient.upload(content, content.length);\n     * ```\n     */\n    async upload(body, contentLength, options = {}) {\n        options.conditions = options.conditions || {};\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        return tracingClient.withSpan(\"BlockBlobClient-upload\", options, async (updatedOptions) => {\n            var _a, _b, _c;\n            return assertResponse(await this.blockBlobContext.upload(contentLength, body, {\n                abortSignal: options.abortSignal,\n                blobHttpHeaders: options.blobHTTPHeaders,\n                leaseAccessConditions: options.conditions,\n                metadata: options.metadata,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                requestOptions: {\n                    onUploadProgress: options.onProgress,\n                },\n                cpkInfo: options.customerProvidedKey,\n                encryptionScope: options.encryptionScope,\n                immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn,\n                immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode,\n                legalHold: options.legalHold,\n                tier: toAccessTier(options.tier),\n                blobTagsString: toBlobTagsString(options.tags),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Creates a new Block Blob where the contents of the blob are read from a given URL.\n     * This API is supported beginning with the 2020-04-08 version. Partial updates\n     * are not supported with Put Blob from URL; the content of an existing blob is overwritten with\n     * the content of the new blob.  To perform partial updates to a block blob’s contents using a\n     * source URL, use {@link stageBlockFromURL} and {@link commitBlockList}.\n     *\n     * @param sourceURL - Specifies the URL of the blob. The value\n     *                           may be a URL of up to 2 KB in length that specifies a blob.\n     *                           The value should be URL-encoded as it would appear\n     *                           in a request URI. The source blob must either be public\n     *                           or must be authenticated via a shared access signature.\n     *                           If the source blob is public, no authentication is required\n     *                           to perform the operation. Here are some examples of source object URLs:\n     *                           - https://myaccount.blob.core.windows.net/mycontainer/myblob\n     *                           - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>\n     * @param options - Optional parameters.\n     */\n    async syncUploadFromURL(sourceURL, options = {}) {\n        options.conditions = options.conditions || {};\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        return tracingClient.withSpan(\"BlockBlobClient-syncUploadFromURL\", options, async (updatedOptions) => {\n            var _a, _b, _c, _d, _e, _f;\n            return assertResponse(await this.blockBlobContext.putBlobFromUrl(0, sourceURL, Object.assign(Object.assign({}, options), { blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {\n                    sourceIfMatch: (_b = options.sourceConditions) === null || _b === void 0 ? void 0 : _b.ifMatch,\n                    sourceIfModifiedSince: (_c = options.sourceConditions) === null || _c === void 0 ? void 0 : _c.ifModifiedSince,\n                    sourceIfNoneMatch: (_d = options.sourceConditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch,\n                    sourceIfUnmodifiedSince: (_e = options.sourceConditions) === null || _e === void 0 ? void 0 : _e.ifUnmodifiedSince,\n                    sourceIfTags: (_f = options.sourceConditions) === null || _f === void 0 ? void 0 : _f.tagConditions,\n                }, cpkInfo: options.customerProvidedKey, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization), tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags), copySourceTags: options.copySourceTags, tracingOptions: updatedOptions.tracingOptions })));\n        });\n    }\n    /**\n     * Uploads the specified block to the block blob's \"staging area\" to be later\n     * committed by a call to commitBlockList.\n     * @see https://docs.microsoft.com/rest/api/storageservices/put-block\n     *\n     * @param blockId - A 64-byte value that is base64-encoded\n     * @param body - Data to upload to the staging area.\n     * @param contentLength - Number of bytes to upload.\n     * @param options - Options to the Block Blob Stage Block operation.\n     * @returns Response data for the Block Blob Stage Block operation.\n     */\n    async stageBlock(blockId, body, contentLength, options = {}) {\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        return tracingClient.withSpan(\"BlockBlobClient-stageBlock\", options, async (updatedOptions) => {\n            return assertResponse(await this.blockBlobContext.stageBlock(blockId, contentLength, body, {\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                requestOptions: {\n                    onUploadProgress: options.onProgress,\n                },\n                transactionalContentMD5: options.transactionalContentMD5,\n                transactionalContentCrc64: options.transactionalContentCrc64,\n                cpkInfo: options.customerProvidedKey,\n                encryptionScope: options.encryptionScope,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * The Stage Block From URL operation creates a new block to be committed as part\n     * of a blob where the contents are read from a URL.\n     * This API is available starting in version 2018-03-28.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/put-block-from-url\n     *\n     * @param blockId - A 64-byte value that is base64-encoded\n     * @param sourceURL - Specifies the URL of the blob. The value\n     *                           may be a URL of up to 2 KB in length that specifies a blob.\n     *                           The value should be URL-encoded as it would appear\n     *                           in a request URI. The source blob must either be public\n     *                           or must be authenticated via a shared access signature.\n     *                           If the source blob is public, no authentication is required\n     *                           to perform the operation. Here are some examples of source object URLs:\n     *                           - https://myaccount.blob.core.windows.net/mycontainer/myblob\n     *                           - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>\n     * @param offset - From which position of the blob to download, greater than or equal to 0\n     * @param count - How much data to be downloaded, greater than 0. Will download to the end when undefined\n     * @param options - Options to the Block Blob Stage Block From URL operation.\n     * @returns Response data for the Block Blob Stage Block From URL operation.\n     */\n    async stageBlockFromURL(blockId, sourceURL, offset = 0, count, options = {}) {\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        return tracingClient.withSpan(\"BlockBlobClient-stageBlockFromURL\", options, async (updatedOptions) => {\n            return assertResponse(await this.blockBlobContext.stageBlockFromURL(blockId, 0, sourceURL, {\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                sourceContentMD5: options.sourceContentMD5,\n                sourceContentCrc64: options.sourceContentCrc64,\n                sourceRange: offset === 0 && !count ? undefined : rangeToString({ offset, count }),\n                cpkInfo: options.customerProvidedKey,\n                encryptionScope: options.encryptionScope,\n                copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Writes a blob by specifying the list of block IDs that make up the blob.\n     * In order to be written as part of a blob, a block must have been successfully written\n     * to the server in a prior {@link stageBlock} operation. You can call {@link commitBlockList} to\n     * update a blob by uploading only those blocks that have changed, then committing the new and existing\n     * blocks together. Any blocks not specified in the block list and permanently deleted.\n     * @see https://docs.microsoft.com/rest/api/storageservices/put-block-list\n     *\n     * @param blocks -  Array of 64-byte value that is base64-encoded\n     * @param options - Options to the Block Blob Commit Block List operation.\n     * @returns Response data for the Block Blob Commit Block List operation.\n     */\n    async commitBlockList(blocks, options = {}) {\n        options.conditions = options.conditions || {};\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        return tracingClient.withSpan(\"BlockBlobClient-commitBlockList\", options, async (updatedOptions) => {\n            var _a, _b, _c;\n            return assertResponse(await this.blockBlobContext.commitBlockList({ latest: blocks }, {\n                abortSignal: options.abortSignal,\n                blobHttpHeaders: options.blobHTTPHeaders,\n                leaseAccessConditions: options.conditions,\n                metadata: options.metadata,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                cpkInfo: options.customerProvidedKey,\n                encryptionScope: options.encryptionScope,\n                immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn,\n                immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode,\n                legalHold: options.legalHold,\n                tier: toAccessTier(options.tier),\n                blobTagsString: toBlobTagsString(options.tags),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Returns the list of blocks that have been uploaded as part of a block blob\n     * using the specified block list filter.\n     * @see https://docs.microsoft.com/rest/api/storageservices/get-block-list\n     *\n     * @param listType - Specifies whether to return the list of committed blocks,\n     *                                        the list of uncommitted blocks, or both lists together.\n     * @param options - Options to the Block Blob Get Block List operation.\n     * @returns Response data for the Block Blob Get Block List operation.\n     */\n    async getBlockList(listType, options = {}) {\n        return tracingClient.withSpan(\"BlockBlobClient-getBlockList\", options, async (updatedOptions) => {\n            var _a;\n            const res = assertResponse(await this.blockBlobContext.getBlockList(listType, {\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n            if (!res.committedBlocks) {\n                res.committedBlocks = [];\n            }\n            if (!res.uncommittedBlocks) {\n                res.uncommittedBlocks = [];\n            }\n            return res;\n        });\n    }\n    // High level functions\n    /**\n     * Uploads a Buffer(Node.js)/Blob(browsers)/ArrayBuffer/ArrayBufferView object to a BlockBlob.\n     *\n     * When data length is no more than the specifiled {@link BlockBlobParallelUploadOptions.maxSingleShotSize} (default is\n     * {@link BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}), this method will use 1 {@link upload} call to finish the upload.\n     * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call {@link commitBlockList}\n     * to commit the block list.\n     *\n     * A common {@link BlockBlobParallelUploadOptions.blobHTTPHeaders} option to set is\n     * `blobContentType`, enabling the browser to provide\n     * functionality based on file type.\n     *\n     * @param data - Buffer(Node.js), Blob, ArrayBuffer or ArrayBufferView\n     * @param options -\n     */\n    async uploadData(data, options = {}) {\n        return tracingClient.withSpan(\"BlockBlobClient-uploadData\", options, async (updatedOptions) => {\n            if (isNode) {\n                let buffer;\n                if (data instanceof Buffer) {\n                    buffer = data;\n                }\n                else if (data instanceof ArrayBuffer) {\n                    buffer = Buffer.from(data);\n                }\n                else {\n                    data = data;\n                    buffer = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n                }\n                return this.uploadSeekableInternal((offset, size) => buffer.slice(offset, offset + size), buffer.byteLength, updatedOptions);\n            }\n            else {\n                const browserBlob = new Blob([data]);\n                return this.uploadSeekableInternal((offset, size) => browserBlob.slice(offset, offset + size), browserBlob.size, updatedOptions);\n            }\n        });\n    }\n    /**\n     * ONLY AVAILABLE IN BROWSERS.\n     *\n     * Uploads a browser Blob/File/ArrayBuffer/ArrayBufferView object to block blob.\n     *\n     * When buffer length lesser than or equal to 256MB, this method will use 1 upload call to finish the upload.\n     * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call\n     * {@link commitBlockList} to commit the block list.\n     *\n     * A common {@link BlockBlobParallelUploadOptions.blobHTTPHeaders} option to set is\n     * `blobContentType`, enabling the browser to provide\n     * functionality based on file type.\n     *\n     * @deprecated Use {@link uploadData} instead.\n     *\n     * @param browserData - Blob, File, ArrayBuffer or ArrayBufferView\n     * @param options - Options to upload browser data.\n     * @returns Response data for the Blob Upload operation.\n     */\n    async uploadBrowserData(browserData, options = {}) {\n        return tracingClient.withSpan(\"BlockBlobClient-uploadBrowserData\", options, async (updatedOptions) => {\n            const browserBlob = new Blob([browserData]);\n            return this.uploadSeekableInternal((offset, size) => browserBlob.slice(offset, offset + size), browserBlob.size, updatedOptions);\n        });\n    }\n    /**\n     *\n     * Uploads data to block blob. Requires a bodyFactory as the data source,\n     * which need to return a {@link HttpRequestBody} object with the offset and size provided.\n     *\n     * When data length is no more than the specified {@link BlockBlobParallelUploadOptions.maxSingleShotSize} (default is\n     * {@link BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}), this method will use 1 {@link upload} call to finish the upload.\n     * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call {@link commitBlockList}\n     * to commit the block list.\n     *\n     * @param bodyFactory -\n     * @param size - size of the data to upload.\n     * @param options - Options to Upload to Block Blob operation.\n     * @returns Response data for the Blob Upload operation.\n     */\n    async uploadSeekableInternal(bodyFactory, size, options = {}) {\n        var _a, _b;\n        let blockSize = (_a = options.blockSize) !== null && _a !== void 0 ? _a : 0;\n        if (blockSize < 0 || blockSize > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES) {\n            throw new RangeError(`blockSize option must be >= 0 and <= ${BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES}`);\n        }\n        const maxSingleShotSize = (_b = options.maxSingleShotSize) !== null && _b !== void 0 ? _b : BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES;\n        if (maxSingleShotSize < 0 || maxSingleShotSize > BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES) {\n            throw new RangeError(`maxSingleShotSize option must be >= 0 and <= ${BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}`);\n        }\n        if (blockSize === 0) {\n            if (size > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES * BLOCK_BLOB_MAX_BLOCKS) {\n                throw new RangeError(`${size} is too larger to upload to a block blob.`);\n            }\n            if (size > maxSingleShotSize) {\n                blockSize = Math.ceil(size / BLOCK_BLOB_MAX_BLOCKS);\n                if (blockSize < DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES) {\n                    blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;\n                }\n            }\n        }\n        if (!options.blobHTTPHeaders) {\n            options.blobHTTPHeaders = {};\n        }\n        if (!options.conditions) {\n            options.conditions = {};\n        }\n        return tracingClient.withSpan(\"BlockBlobClient-uploadSeekableInternal\", options, async (updatedOptions) => {\n            if (size <= maxSingleShotSize) {\n                return assertResponse(await this.upload(bodyFactory(0, size), size, updatedOptions));\n            }\n            const numBlocks = Math.floor((size - 1) / blockSize) + 1;\n            if (numBlocks > BLOCK_BLOB_MAX_BLOCKS) {\n                throw new RangeError(`The buffer's size is too big or the BlockSize is too small;` +\n                    `the number of blocks must be <= ${BLOCK_BLOB_MAX_BLOCKS}`);\n            }\n            const blockList = [];\n            const blockIDPrefix = randomUUID();\n            let transferProgress = 0;\n            const batch = new Batch(options.concurrency);\n            for (let i = 0; i < numBlocks; i++) {\n                batch.addOperation(async () => {\n                    const blockID = generateBlockID(blockIDPrefix, i);\n                    const start = blockSize * i;\n                    const end = i === numBlocks - 1 ? size : start + blockSize;\n                    const contentLength = end - start;\n                    blockList.push(blockID);\n                    await this.stageBlock(blockID, bodyFactory(start, contentLength), contentLength, {\n                        abortSignal: options.abortSignal,\n                        conditions: options.conditions,\n                        encryptionScope: options.encryptionScope,\n                        tracingOptions: updatedOptions.tracingOptions,\n                    });\n                    // Update progress after block is successfully uploaded to server, in case of block trying\n                    // TODO: Hook with convenience layer progress event in finer level\n                    transferProgress += contentLength;\n                    if (options.onProgress) {\n                        options.onProgress({\n                            loadedBytes: transferProgress,\n                        });\n                    }\n                });\n            }\n            await batch.do();\n            return this.commitBlockList(blockList, updatedOptions);\n        });\n    }\n    /**\n     * ONLY AVAILABLE IN NODE.JS RUNTIME.\n     *\n     * Uploads a local file in blocks to a block blob.\n     *\n     * When file size lesser than or equal to 256MB, this method will use 1 upload call to finish the upload.\n     * Otherwise, this method will call stageBlock to upload blocks, and finally call commitBlockList\n     * to commit the block list.\n     *\n     * @param filePath - Full path of local file\n     * @param options - Options to Upload to Block Blob operation.\n     * @returns Response data for the Blob Upload operation.\n     */\n    async uploadFile(filePath, options = {}) {\n        return tracingClient.withSpan(\"BlockBlobClient-uploadFile\", options, async (updatedOptions) => {\n            const size = (await fsStat(filePath)).size;\n            return this.uploadSeekableInternal((offset, count) => {\n                return () => fsCreateReadStream(filePath, {\n                    autoClose: true,\n                    end: count ? offset + count - 1 : Infinity,\n                    start: offset,\n                });\n            }, size, Object.assign(Object.assign({}, options), { tracingOptions: updatedOptions.tracingOptions }));\n        });\n    }\n    /**\n     * ONLY AVAILABLE IN NODE.JS RUNTIME.\n     *\n     * Uploads a Node.js Readable stream into block blob.\n     *\n     * PERFORMANCE IMPROVEMENT TIPS:\n     * * Input stream highWaterMark is better to set a same value with bufferSize\n     *    parameter, which will avoid Buffer.concat() operations.\n     *\n     * @param stream - Node.js Readable stream\n     * @param bufferSize - Size of every buffer allocated, also the block size in the uploaded block blob. Default value is 8MB\n     * @param maxConcurrency -  Max concurrency indicates the max number of buffers that can be allocated,\n     *                                 positive correlation with max uploading concurrency. Default value is 5\n     * @param options - Options to Upload Stream to Block Blob operation.\n     * @returns Response data for the Blob Upload operation.\n     */\n    async uploadStream(stream, bufferSize = DEFAULT_BLOCK_BUFFER_SIZE_BYTES, maxConcurrency = 5, options = {}) {\n        if (!options.blobHTTPHeaders) {\n            options.blobHTTPHeaders = {};\n        }\n        if (!options.conditions) {\n            options.conditions = {};\n        }\n        return tracingClient.withSpan(\"BlockBlobClient-uploadStream\", options, async (updatedOptions) => {\n            let blockNum = 0;\n            const blockIDPrefix = randomUUID();\n            let transferProgress = 0;\n            const blockList = [];\n            const scheduler = new BufferScheduler(stream, bufferSize, maxConcurrency, async (body, length) => {\n                const blockID = generateBlockID(blockIDPrefix, blockNum);\n                blockList.push(blockID);\n                blockNum++;\n                await this.stageBlock(blockID, body, length, {\n                    customerProvidedKey: options.customerProvidedKey,\n                    conditions: options.conditions,\n                    encryptionScope: options.encryptionScope,\n                    tracingOptions: updatedOptions.tracingOptions,\n                });\n                // Update progress after block is successfully uploaded to server, in case of block trying\n                transferProgress += length;\n                if (options.onProgress) {\n                    options.onProgress({ loadedBytes: transferProgress });\n                }\n            }, \n            // concurrency should set a smaller value than maxConcurrency, which is helpful to\n            // reduce the possibility when a outgoing handler waits for stream data, in\n            // this situation, outgoing handlers are blocked.\n            // Outgoing queue shouldn't be empty.\n            Math.ceil((maxConcurrency / 4) * 3));\n            await scheduler.do();\n            return assertResponse(await this.commitBlockList(blockList, Object.assign(Object.assign({}, options), { tracingOptions: updatedOptions.tracingOptions })));\n        });\n    }\n}\n/**\n * PageBlobClient defines a set of operations applicable to page blobs.\n */\nexport class PageBlobClient extends BlobClient {\n    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, \n    // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n    options) {\n        // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.\n        //   super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);\n        let pipeline;\n        let url;\n        options = options || {};\n        if (isPipelineLike(credentialOrPipelineOrContainerName)) {\n            // (url: string, pipeline: Pipeline)\n            url = urlOrConnectionString;\n            pipeline = credentialOrPipelineOrContainerName;\n        }\n        else if ((isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||\n            credentialOrPipelineOrContainerName instanceof AnonymousCredential ||\n            isTokenCredential(credentialOrPipelineOrContainerName)) {\n            // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n            url = urlOrConnectionString;\n            options = blobNameOrOptions;\n            pipeline = newPipeline(credentialOrPipelineOrContainerName, options);\n        }\n        else if (!credentialOrPipelineOrContainerName &&\n            typeof credentialOrPipelineOrContainerName !== \"string\") {\n            // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n            // The second parameter is undefined. Use anonymous credential.\n            url = urlOrConnectionString;\n            pipeline = newPipeline(new AnonymousCredential(), options);\n        }\n        else if (credentialOrPipelineOrContainerName &&\n            typeof credentialOrPipelineOrContainerName === \"string\" &&\n            blobNameOrOptions &&\n            typeof blobNameOrOptions === \"string\") {\n            // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)\n            const containerName = credentialOrPipelineOrContainerName;\n            const blobName = blobNameOrOptions;\n            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);\n            if (extractedCreds.kind === \"AccountConnString\") {\n                if (isNode) {\n                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);\n                    url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));\n                    if (!options.proxyOptions) {\n                        options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);\n                    }\n                    pipeline = newPipeline(sharedKeyCredential, options);\n                }\n                else {\n                    throw new Error(\"Account connection string is only supported in Node.js environment\");\n                }\n            }\n            else if (extractedCreds.kind === \"SASConnString\") {\n                url =\n                    appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName)) +\n                        \"?\" +\n                        extractedCreds.accountSas;\n                pipeline = newPipeline(new AnonymousCredential(), options);\n            }\n            else {\n                throw new Error(\"Connection string must be either an Account connection string or a SAS connection string\");\n            }\n        }\n        else {\n            throw new Error(\"Expecting non-empty strings for containerName and blobName parameters\");\n        }\n        super(url, pipeline);\n        this.pageBlobContext = this.storageClientContext.pageBlob;\n    }\n    /**\n     * Creates a new PageBlobClient object identical to the source but with the\n     * specified snapshot timestamp.\n     * Provide \"\" will remove the snapshot and return a Client to the base blob.\n     *\n     * @param snapshot - The snapshot timestamp.\n     * @returns A new PageBlobClient object identical to the source but with the specified snapshot timestamp.\n     */\n    withSnapshot(snapshot) {\n        return new PageBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);\n    }\n    /**\n     * Creates a page blob of the specified length. Call uploadPages to upload data\n     * data to a page blob.\n     * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n     *\n     * @param size - size of the page blob.\n     * @param options - Options to the Page Blob Create operation.\n     * @returns Response data for the Page Blob Create operation.\n     */\n    async create(size, options = {}) {\n        options.conditions = options.conditions || {};\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        return tracingClient.withSpan(\"PageBlobClient-create\", options, async (updatedOptions) => {\n            var _a, _b, _c;\n            return assertResponse(await this.pageBlobContext.create(0, size, {\n                abortSignal: options.abortSignal,\n                blobHttpHeaders: options.blobHTTPHeaders,\n                blobSequenceNumber: options.blobSequenceNumber,\n                leaseAccessConditions: options.conditions,\n                metadata: options.metadata,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                cpkInfo: options.customerProvidedKey,\n                encryptionScope: options.encryptionScope,\n                immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn,\n                immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode,\n                legalHold: options.legalHold,\n                tier: toAccessTier(options.tier),\n                blobTagsString: toBlobTagsString(options.tags),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Creates a page blob of the specified length. Call uploadPages to upload data\n     * data to a page blob. If the blob with the same name already exists, the content\n     * of the existing blob will remain unchanged.\n     * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n     *\n     * @param size - size of the page blob.\n     * @param options -\n     */\n    async createIfNotExists(size, options = {}) {\n        return tracingClient.withSpan(\"PageBlobClient-createIfNotExists\", options, async (updatedOptions) => {\n            var _a, _b;\n            try {\n                const conditions = { ifNoneMatch: ETagAny };\n                const res = assertResponse(await this.create(size, Object.assign(Object.assign({}, options), { conditions, tracingOptions: updatedOptions.tracingOptions })));\n                return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response });\n            }\n            catch (e) {\n                if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === \"BlobAlreadyExists\") {\n                    return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });\n                }\n                throw e;\n            }\n        });\n    }\n    /**\n     * Writes 1 or more pages to the page blob. The start and end offsets must be a multiple of 512.\n     * @see https://docs.microsoft.com/rest/api/storageservices/put-page\n     *\n     * @param body - Data to upload\n     * @param offset - Offset of destination page blob\n     * @param count - Content length of the body, also number of bytes to be uploaded\n     * @param options - Options to the Page Blob Upload Pages operation.\n     * @returns Response data for the Page Blob Upload Pages operation.\n     */\n    async uploadPages(body, offset, count, options = {}) {\n        options.conditions = options.conditions || {};\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        return tracingClient.withSpan(\"PageBlobClient-uploadPages\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this.pageBlobContext.uploadPages(count, body, {\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                requestOptions: {\n                    onUploadProgress: options.onProgress,\n                },\n                range: rangeToString({ offset, count }),\n                sequenceNumberAccessConditions: options.conditions,\n                transactionalContentMD5: options.transactionalContentMD5,\n                transactionalContentCrc64: options.transactionalContentCrc64,\n                cpkInfo: options.customerProvidedKey,\n                encryptionScope: options.encryptionScope,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * The Upload Pages operation writes a range of pages to a page blob where the\n     * contents are read from a URL.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/put-page-from-url\n     *\n     * @param sourceURL - Specify a URL to the copy source, Shared Access Signature(SAS) maybe needed for authentication\n     * @param sourceOffset - The source offset to copy from. Pass 0 to copy from the beginning of source page blob\n     * @param destOffset - Offset of destination page blob\n     * @param count - Number of bytes to be uploaded from source page blob\n     * @param options -\n     */\n    async uploadPagesFromURL(sourceURL, sourceOffset, destOffset, count, options = {}) {\n        options.conditions = options.conditions || {};\n        options.sourceConditions = options.sourceConditions || {};\n        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n        return tracingClient.withSpan(\"PageBlobClient-uploadPagesFromURL\", options, async (updatedOptions) => {\n            var _a, _b, _c, _d, _e;\n            return assertResponse(await this.pageBlobContext.uploadPagesFromURL(sourceURL, rangeToString({ offset: sourceOffset, count }), 0, rangeToString({ offset: destOffset, count }), {\n                abortSignal: options.abortSignal,\n                sourceContentMD5: options.sourceContentMD5,\n                sourceContentCrc64: options.sourceContentCrc64,\n                leaseAccessConditions: options.conditions,\n                sequenceNumberAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                sourceModifiedAccessConditions: {\n                    sourceIfMatch: (_b = options.sourceConditions) === null || _b === void 0 ? void 0 : _b.ifMatch,\n                    sourceIfModifiedSince: (_c = options.sourceConditions) === null || _c === void 0 ? void 0 : _c.ifModifiedSince,\n                    sourceIfNoneMatch: (_d = options.sourceConditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch,\n                    sourceIfUnmodifiedSince: (_e = options.sourceConditions) === null || _e === void 0 ? void 0 : _e.ifUnmodifiedSince,\n                },\n                cpkInfo: options.customerProvidedKey,\n                encryptionScope: options.encryptionScope,\n                copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Frees the specified pages from the page blob.\n     * @see https://docs.microsoft.com/rest/api/storageservices/put-page\n     *\n     * @param offset - Starting byte position of the pages to clear.\n     * @param count - Number of bytes to clear.\n     * @param options - Options to the Page Blob Clear Pages operation.\n     * @returns Response data for the Page Blob Clear Pages operation.\n     */\n    async clearPages(offset = 0, count, options = {}) {\n        options.conditions = options.conditions || {};\n        return tracingClient.withSpan(\"PageBlobClient-clearPages\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this.pageBlobContext.clearPages(0, {\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                range: rangeToString({ offset, count }),\n                sequenceNumberAccessConditions: options.conditions,\n                cpkInfo: options.customerProvidedKey,\n                encryptionScope: options.encryptionScope,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Returns the list of valid page ranges for a page blob or snapshot of a page blob.\n     * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n     *\n     * @param offset - Starting byte position of the page ranges.\n     * @param count - Number of bytes to get.\n     * @param options - Options to the Page Blob Get Ranges operation.\n     * @returns Response data for the Page Blob Get Ranges operation.\n     */\n    async getPageRanges(offset = 0, count, options = {}) {\n        options.conditions = options.conditions || {};\n        return tracingClient.withSpan(\"PageBlobClient-getPageRanges\", options, async (updatedOptions) => {\n            var _a;\n            const response = assertResponse(await this.pageBlobContext.getPageRanges({\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                range: rangeToString({ offset, count }),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n            return rangeResponseFromModel(response);\n        });\n    }\n    /**\n     * getPageRangesSegment returns a single segment of page ranges starting from the\n     * specified Marker. Use an empty Marker to start enumeration from the beginning.\n     * After getting a segment, process it, and then call getPageRangesSegment again\n     * (passing the the previously-returned Marker) to get the next segment.\n     * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n     *\n     * @param offset - Starting byte position of the page ranges.\n     * @param count - Number of bytes to get.\n     * @param marker - A string value that identifies the portion of the list to be returned with the next list operation.\n     * @param options - Options to PageBlob Get Page Ranges Segment operation.\n     */\n    async listPageRangesSegment(offset = 0, count, marker, options = {}) {\n        return tracingClient.withSpan(\"PageBlobClient-getPageRangesSegment\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this.pageBlobContext.getPageRanges({\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                range: rangeToString({ offset, count }),\n                marker: marker,\n                maxPageSize: options.maxPageSize,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Returns an AsyncIterableIterator for {@link PageBlobGetPageRangesResponseModel}\n     *\n     * @param offset - Starting byte position of the page ranges.\n     * @param count - Number of bytes to get.\n     * @param marker - A string value that identifies the portion of\n     *                          the get of page ranges to be returned with the next getting operation. The\n     *                          operation returns the ContinuationToken value within the response body if the\n     *                          getting operation did not return all page ranges remaining within the current page.\n     *                          The ContinuationToken value can be used as the value for\n     *                          the marker parameter in a subsequent call to request the next page of get\n     *                          items. The marker value is opaque to the client.\n     * @param options - Options to List Page Ranges operation.\n     */\n    listPageRangeItemSegments() {\n        return __asyncGenerator(this, arguments, function* listPageRangeItemSegments_1(offset = 0, count, marker, options = {}) {\n            let getPageRangeItemSegmentsResponse;\n            if (!!marker || marker === undefined) {\n                do {\n                    getPageRangeItemSegmentsResponse = yield __await(this.listPageRangesSegment(offset, count, marker, options));\n                    marker = getPageRangeItemSegmentsResponse.continuationToken;\n                    yield yield __await(yield __await(getPageRangeItemSegmentsResponse));\n                } while (marker);\n            }\n        });\n    }\n    /**\n     * Returns an AsyncIterableIterator of {@link PageRangeInfo} objects\n     *\n     * @param offset - Starting byte position of the page ranges.\n     * @param count - Number of bytes to get.\n     * @param options - Options to List Page Ranges operation.\n     */\n    listPageRangeItems() {\n        return __asyncGenerator(this, arguments, function* listPageRangeItems_1(offset = 0, count, options = {}) {\n            var _a, e_1, _b, _c;\n            let marker;\n            try {\n                for (var _d = true, _e = __asyncValues(this.listPageRangeItemSegments(offset, count, marker, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {\n                    _c = _f.value;\n                    _d = false;\n                    const getPageRangesSegment = _c;\n                    yield __await(yield* __asyncDelegator(__asyncValues(ExtractPageRangeInfoItems(getPageRangesSegment))));\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n        });\n    }\n    /**\n     * Returns an async iterable iterator to list of page ranges for a page blob.\n     * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n     *\n     *  .byPage() returns an async iterable iterator to list of page ranges for a page blob.\n     *\n     * Example using `for await` syntax:\n     *\n     * ```js\n     * // Get the pageBlobClient before you run these snippets,\n     * // Can be obtained from `blobServiceClient.getContainerClient(\"<your-container-name>\").getPageBlobClient(\"<your-blob-name>\");`\n     * let i = 1;\n     * for await (const pageRange of pageBlobClient.listPageRanges()) {\n     *   console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n     * }\n     * ```\n     *\n     * Example using `iter.next()`:\n     *\n     * ```js\n     * let i = 1;\n     * let iter = pageBlobClient.listPageRanges();\n     * let pageRangeItem = await iter.next();\n     * while (!pageRangeItem.done) {\n     *   console.log(`Page range ${i++}: ${pageRangeItem.value.start} - ${pageRangeItem.value.end}, IsClear: ${pageRangeItem.value.isClear}`);\n     *   pageRangeItem = await iter.next();\n     * }\n     * ```\n     *\n     * Example using `byPage()`:\n     *\n     * ```js\n     * // passing optional maxPageSize in the page settings\n     * let i = 1;\n     * for await (const response of pageBlobClient.listPageRanges().byPage({ maxPageSize: 20 })) {\n     *   for (const pageRange of response) {\n     *     console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n     *   }\n     * }\n     * ```\n     *\n     * Example using paging with a marker:\n     *\n     * ```js\n     * let i = 1;\n     * let iterator = pageBlobClient.listPageRanges().byPage({ maxPageSize: 2 });\n     * let response = (await iterator.next()).value;\n     *\n     * // Prints 2 page ranges\n     * for (const pageRange of response) {\n     *   console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n     * }\n     *\n     * // Gets next marker\n     * let marker = response.continuationToken;\n     *\n     * // Passing next marker as continuationToken\n     *\n     * iterator = pageBlobClient.listPageRanges().byPage({ continuationToken: marker, maxPageSize: 10 });\n     * response = (await iterator.next()).value;\n     *\n     * // Prints 10 page ranges\n     * for (const blob of response) {\n     *   console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n     * }\n     * ```\n     * @param offset - Starting byte position of the page ranges.\n     * @param count - Number of bytes to get.\n     * @param options - Options to the Page Blob Get Ranges operation.\n     * @returns An asyncIterableIterator that supports paging.\n     */\n    listPageRanges(offset = 0, count, options = {}) {\n        options.conditions = options.conditions || {};\n        // AsyncIterableIterator to iterate over blobs\n        const iter = this.listPageRangeItems(offset, count, options);\n        return {\n            /**\n             * The next method, part of the iteration protocol\n             */\n            next() {\n                return iter.next();\n            },\n            /**\n             * The connection to the async iterator, part of the iteration protocol\n             */\n            [Symbol.asyncIterator]() {\n                return this;\n            },\n            /**\n             * Return an AsyncIterableIterator that works a page at a time\n             */\n            byPage: (settings = {}) => {\n                return this.listPageRangeItemSegments(offset, count, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, options));\n            },\n        };\n    }\n    /**\n     * Gets the collection of page ranges that differ between a specified snapshot and this page blob.\n     * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n     *\n     * @param offset - Starting byte position of the page blob\n     * @param count - Number of bytes to get ranges diff.\n     * @param prevSnapshot - Timestamp of snapshot to retrieve the difference.\n     * @param options - Options to the Page Blob Get Page Ranges Diff operation.\n     * @returns Response data for the Page Blob Get Page Range Diff operation.\n     */\n    async getPageRangesDiff(offset, count, prevSnapshot, options = {}) {\n        options.conditions = options.conditions || {};\n        return tracingClient.withSpan(\"PageBlobClient-getPageRangesDiff\", options, async (updatedOptions) => {\n            var _a;\n            const result = assertResponse(await this.pageBlobContext.getPageRangesDiff({\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                prevsnapshot: prevSnapshot,\n                range: rangeToString({ offset, count }),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n            return rangeResponseFromModel(result);\n        });\n    }\n    /**\n     * getPageRangesDiffSegment returns a single segment of page ranges starting from the\n     * specified Marker for difference between previous snapshot and the target page blob.\n     * Use an empty Marker to start enumeration from the beginning.\n     * After getting a segment, process it, and then call getPageRangesDiffSegment again\n     * (passing the the previously-returned Marker) to get the next segment.\n     * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n     *\n     * @param offset - Starting byte position of the page ranges.\n     * @param count - Number of bytes to get.\n     * @param prevSnapshotOrUrl - Timestamp of snapshot to retrieve the difference or URL of snapshot to retrieve the difference.\n     * @param marker - A string value that identifies the portion of the get to be returned with the next get operation.\n     * @param options - Options to the Page Blob Get Page Ranges Diff operation.\n     */\n    async listPageRangesDiffSegment(offset, count, prevSnapshotOrUrl, marker, options = {}) {\n        return tracingClient.withSpan(\"PageBlobClient-getPageRangesDiffSegment\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this.pageBlobContext.getPageRangesDiff({\n                abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal,\n                leaseAccessConditions: options === null || options === void 0 ? void 0 : options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.conditions), { ifTags: (_a = options === null || options === void 0 ? void 0 : options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                prevsnapshot: prevSnapshotOrUrl,\n                range: rangeToString({\n                    offset: offset,\n                    count: count,\n                }),\n                marker: marker,\n                maxPageSize: options === null || options === void 0 ? void 0 : options.maxPageSize,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Returns an AsyncIterableIterator for {@link PageBlobGetPageRangesDiffResponseModel}\n     *\n     *\n     * @param offset - Starting byte position of the page ranges.\n     * @param count - Number of bytes to get.\n     * @param prevSnapshotOrUrl - Timestamp of snapshot to retrieve the difference or URL of snapshot to retrieve the difference.\n     * @param marker - A string value that identifies the portion of\n     *                          the get of page ranges to be returned with the next getting operation. The\n     *                          operation returns the ContinuationToken value within the response body if the\n     *                          getting operation did not return all page ranges remaining within the current page.\n     *                          The ContinuationToken value can be used as the value for\n     *                          the marker parameter in a subsequent call to request the next page of get\n     *                          items. The marker value is opaque to the client.\n     * @param options - Options to the Page Blob Get Page Ranges Diff operation.\n     */\n    listPageRangeDiffItemSegments(offset, count, prevSnapshotOrUrl, marker, options) {\n        return __asyncGenerator(this, arguments, function* listPageRangeDiffItemSegments_1() {\n            let getPageRangeItemSegmentsResponse;\n            if (!!marker || marker === undefined) {\n                do {\n                    getPageRangeItemSegmentsResponse = yield __await(this.listPageRangesDiffSegment(offset, count, prevSnapshotOrUrl, marker, options));\n                    marker = getPageRangeItemSegmentsResponse.continuationToken;\n                    yield yield __await(yield __await(getPageRangeItemSegmentsResponse));\n                } while (marker);\n            }\n        });\n    }\n    /**\n     * Returns an AsyncIterableIterator of {@link PageRangeInfo} objects\n     *\n     * @param offset - Starting byte position of the page ranges.\n     * @param count - Number of bytes to get.\n     * @param prevSnapshotOrUrl - Timestamp of snapshot to retrieve the difference or URL of snapshot to retrieve the difference.\n     * @param options - Options to the Page Blob Get Page Ranges Diff operation.\n     */\n    listPageRangeDiffItems(offset, count, prevSnapshotOrUrl, options) {\n        return __asyncGenerator(this, arguments, function* listPageRangeDiffItems_1() {\n            var _a, e_2, _b, _c;\n            let marker;\n            try {\n                for (var _d = true, _e = __asyncValues(this.listPageRangeDiffItemSegments(offset, count, prevSnapshotOrUrl, marker, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {\n                    _c = _f.value;\n                    _d = false;\n                    const getPageRangesSegment = _c;\n                    yield __await(yield* __asyncDelegator(__asyncValues(ExtractPageRangeInfoItems(getPageRangesSegment))));\n                }\n            }\n            catch (e_2_1) { e_2 = { error: e_2_1 }; }\n            finally {\n                try {\n                    if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));\n                }\n                finally { if (e_2) throw e_2.error; }\n            }\n        });\n    }\n    /**\n     * Returns an async iterable iterator to list of page ranges that differ between a specified snapshot and this page blob.\n     * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n     *\n     *  .byPage() returns an async iterable iterator to list of page ranges that differ between a specified snapshot and this page blob.\n     *\n     * Example using `for await` syntax:\n     *\n     * ```js\n     * // Get the pageBlobClient before you run these snippets,\n     * // Can be obtained from `blobServiceClient.getContainerClient(\"<your-container-name>\").getPageBlobClient(\"<your-blob-name>\");`\n     * let i = 1;\n     * for await (const pageRange of pageBlobClient.listPageRangesDiff()) {\n     *   console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n     * }\n     * ```\n     *\n     * Example using `iter.next()`:\n     *\n     * ```js\n     * let i = 1;\n     * let iter = pageBlobClient.listPageRangesDiff();\n     * let pageRangeItem = await iter.next();\n     * while (!pageRangeItem.done) {\n     *   console.log(`Page range ${i++}: ${pageRangeItem.value.start} - ${pageRangeItem.value.end}, IsClear: ${pageRangeItem.value.isClear}`);\n     *   pageRangeItem = await iter.next();\n     * }\n     * ```\n     *\n     * Example using `byPage()`:\n     *\n     * ```js\n     * // passing optional maxPageSize in the page settings\n     * let i = 1;\n     * for await (const response of pageBlobClient.listPageRangesDiff().byPage({ maxPageSize: 20 })) {\n     *   for (const pageRange of response) {\n     *     console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n     *   }\n     * }\n     * ```\n     *\n     * Example using paging with a marker:\n     *\n     * ```js\n     * let i = 1;\n     * let iterator = pageBlobClient.listPageRangesDiff().byPage({ maxPageSize: 2 });\n     * let response = (await iterator.next()).value;\n     *\n     * // Prints 2 page ranges\n     * for (const pageRange of response) {\n     *   console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n     * }\n     *\n     * // Gets next marker\n     * let marker = response.continuationToken;\n     *\n     * // Passing next marker as continuationToken\n     *\n     * iterator = pageBlobClient.listPageRangesDiff().byPage({ continuationToken: marker, maxPageSize: 10 });\n     * response = (await iterator.next()).value;\n     *\n     * // Prints 10 page ranges\n     * for (const blob of response) {\n     *   console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n     * }\n     * ```\n     * @param offset - Starting byte position of the page ranges.\n     * @param count - Number of bytes to get.\n     * @param prevSnapshot - Timestamp of snapshot to retrieve the difference.\n     * @param options - Options to the Page Blob Get Ranges operation.\n     * @returns An asyncIterableIterator that supports paging.\n     */\n    listPageRangesDiff(offset, count, prevSnapshot, options = {}) {\n        options.conditions = options.conditions || {};\n        // AsyncIterableIterator to iterate over blobs\n        const iter = this.listPageRangeDiffItems(offset, count, prevSnapshot, Object.assign({}, options));\n        return {\n            /**\n             * The next method, part of the iteration protocol\n             */\n            next() {\n                return iter.next();\n            },\n            /**\n             * The connection to the async iterator, part of the iteration protocol\n             */\n            [Symbol.asyncIterator]() {\n                return this;\n            },\n            /**\n             * Return an AsyncIterableIterator that works a page at a time\n             */\n            byPage: (settings = {}) => {\n                return this.listPageRangeDiffItemSegments(offset, count, prevSnapshot, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, options));\n            },\n        };\n    }\n    /**\n     * Gets the collection of page ranges that differ between a specified snapshot and this page blob for managed disks.\n     * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n     *\n     * @param offset - Starting byte position of the page blob\n     * @param count - Number of bytes to get ranges diff.\n     * @param prevSnapshotUrl - URL of snapshot to retrieve the difference.\n     * @param options - Options to the Page Blob Get Page Ranges Diff operation.\n     * @returns Response data for the Page Blob Get Page Range Diff operation.\n     */\n    async getPageRangesDiffForManagedDisks(offset, count, prevSnapshotUrl, options = {}) {\n        options.conditions = options.conditions || {};\n        return tracingClient.withSpan(\"PageBlobClient-GetPageRangesDiffForManagedDisks\", options, async (updatedOptions) => {\n            var _a;\n            const response = assertResponse(await this.pageBlobContext.getPageRangesDiff({\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                prevSnapshotUrl,\n                range: rangeToString({ offset, count }),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n            return rangeResponseFromModel(response);\n        });\n    }\n    /**\n     * Resizes the page blob to the specified size (which must be a multiple of 512).\n     * @see https://docs.microsoft.com/rest/api/storageservices/set-blob-properties\n     *\n     * @param size - Target size\n     * @param options - Options to the Page Blob Resize operation.\n     * @returns Response data for the Page Blob Resize operation.\n     */\n    async resize(size, options = {}) {\n        options.conditions = options.conditions || {};\n        return tracingClient.withSpan(\"PageBlobClient-resize\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this.pageBlobContext.resize(size, {\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                encryptionScope: options.encryptionScope,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Sets a page blob's sequence number.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-properties\n     *\n     * @param sequenceNumberAction - Indicates how the service should modify the blob's sequence number.\n     * @param sequenceNumber - Required if sequenceNumberAction is max or update\n     * @param options - Options to the Page Blob Update Sequence Number operation.\n     * @returns Response data for the Page Blob Update Sequence Number operation.\n     */\n    async updateSequenceNumber(sequenceNumberAction, sequenceNumber, options = {}) {\n        options.conditions = options.conditions || {};\n        return tracingClient.withSpan(\"PageBlobClient-updateSequenceNumber\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this.pageBlobContext.updateSequenceNumber(sequenceNumberAction, {\n                abortSignal: options.abortSignal,\n                blobSequenceNumber: sequenceNumber,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Begins an operation to start an incremental copy from one page blob's snapshot to this page blob.\n     * The snapshot is copied such that only the differential changes between the previously\n     * copied snapshot are transferred to the destination.\n     * The copied snapshots are complete copies of the original snapshot and can be read or copied from as usual.\n     * @see https://docs.microsoft.com/rest/api/storageservices/incremental-copy-blob\n     * @see https://docs.microsoft.com/en-us/azure/virtual-machines/windows/incremental-snapshots\n     *\n     * @param copySource - Specifies the name of the source page blob snapshot. For example,\n     *                            https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>\n     * @param options - Options to the Page Blob Copy Incremental operation.\n     * @returns Response data for the Page Blob Copy Incremental operation.\n     */\n    async startCopyIncremental(copySource, options = {}) {\n        return tracingClient.withSpan(\"PageBlobClient-startCopyIncremental\", options, async (updatedOptions) => {\n            var _a;\n            return assertResponse(await this.pageBlobContext.copyIncremental(copySource, {\n                abortSignal: options.abortSignal,\n                modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }),\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n}\n//# sourceMappingURL=Clients.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n// This file is used as a shim of \"BlobDownloadResponse\" for some browser bundlers\n// when trying to bundle \"BlobDownloadResponse\"\n// \"BlobDownloadResponse\" class is only available in Node.js runtime\nexport const BlobDownloadResponse = 1;\n//# sourceMappingURL=BlobDownloadResponse.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { blobToString } from \"./utils/utils.browser\";\nexport async function getBodyAsText(batchResponse) {\n    const blob = (await batchResponse.blobBody);\n    return blobToString(blob);\n}\nexport function utf8ByteLength(str) {\n    return new Blob([str]).size;\n}\n//# sourceMappingURL=BatchUtils.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Convert a Browser Blob object into ArrayBuffer.\n *\n * @param blob -\n */\nexport async function blobToArrayBuffer(blob) {\n    const fileReader = new FileReader();\n    return new Promise((resolve, reject) => {\n        fileReader.onloadend = (ev) => {\n            resolve(ev.target.result);\n        };\n        fileReader.onerror = reject;\n        fileReader.readAsArrayBuffer(blob);\n    });\n}\n/**\n * Convert a Browser Blob object into string.\n *\n * @param blob -\n */\nexport async function blobToString(blob) {\n    const fileReader = new FileReader();\n    return new Promise((resolve, reject) => {\n        fileReader.onloadend = (ev) => {\n            resolve(ev.target.result);\n        };\n        fileReader.onerror = reject;\n        fileReader.readAsText(blob);\n    });\n}\nexport function streamToBuffer() {\n    /* empty */\n}\nexport function streamToBuffer2() {\n    /* empty */\n}\nexport function readStreamToLocalFile() {\n    /* empty */\n}\nexport const fsStat = function stat() {\n    /* empty */\n};\nexport const fsCreateReadStream = function createReadStream() {\n    /* empty */\n};\n//# sourceMappingURL=utils.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createHttpHeaders } from \"@azure/core-rest-pipeline\";\nimport { toHttpHeadersLike } from \"@azure/core-http-compat\";\nimport { HTTP_VERSION_1_1, HTTP_LINE_ENDING, HeaderConstants, HTTPURLConnection, } from \"./utils/constants\";\nimport { getBodyAsText } from \"./BatchUtils\";\nimport { logger } from \"./log\";\nconst HTTP_HEADER_DELIMITER = \": \";\nconst SPACE_DELIMITER = \" \";\nconst NOT_FOUND = -1;\n/**\n * Util class for parsing batch response.\n */\nexport class BatchResponseParser {\n    constructor(batchResponse, subRequests) {\n        if (!batchResponse || !batchResponse.contentType) {\n            // In special case(reported), server may return invalid content-type which could not be parsed.\n            throw new RangeError(\"batchResponse is malformed or doesn't contain valid content-type.\");\n        }\n        if (!subRequests || subRequests.size === 0) {\n            // This should be prevent during coding.\n            throw new RangeError(\"Invalid state: subRequests is not provided or size is 0.\");\n        }\n        this.batchResponse = batchResponse;\n        this.subRequests = subRequests;\n        this.responseBatchBoundary = this.batchResponse.contentType.split(\"=\")[1];\n        this.perResponsePrefix = `--${this.responseBatchBoundary}${HTTP_LINE_ENDING}`;\n        this.batchResponseEnding = `--${this.responseBatchBoundary}--`;\n    }\n    // For example of response, please refer to https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#response\n    async parseBatchResponse() {\n        // When logic reach here, suppose batch request has already succeeded with 202, so we can further parse\n        // sub request's response.\n        if (this.batchResponse._response.status !== HTTPURLConnection.HTTP_ACCEPTED) {\n            throw new Error(`Invalid state: batch request failed with status: '${this.batchResponse._response.status}'.`);\n        }\n        const responseBodyAsText = await getBodyAsText(this.batchResponse);\n        const subResponses = responseBodyAsText\n            .split(this.batchResponseEnding)[0] // string after ending is useless\n            .split(this.perResponsePrefix)\n            .slice(1); // string before first response boundary is useless\n        const subResponseCount = subResponses.length;\n        // Defensive coding in case of potential error parsing.\n        // Note: subResponseCount == 1 is special case where sub request is invalid.\n        // We try to prevent such cases through early validation, e.g. validate sub request count >= 1.\n        // While in unexpected sub request invalid case, we allow sub response to be parsed and return to user.\n        if (subResponseCount !== this.subRequests.size && subResponseCount !== 1) {\n            throw new Error(\"Invalid state: sub responses' count is not equal to sub requests' count.\");\n        }\n        const deserializedSubResponses = new Array(subResponseCount);\n        let subResponsesSucceededCount = 0;\n        let subResponsesFailedCount = 0;\n        // Parse sub subResponses.\n        for (let index = 0; index < subResponseCount; index++) {\n            const subResponse = subResponses[index];\n            const deserializedSubResponse = {};\n            deserializedSubResponse.headers = toHttpHeadersLike(createHttpHeaders());\n            const responseLines = subResponse.split(`${HTTP_LINE_ENDING}`);\n            let subRespHeaderStartFound = false;\n            let subRespHeaderEndFound = false;\n            let subRespFailed = false;\n            let contentId = NOT_FOUND;\n            for (const responseLine of responseLines) {\n                if (!subRespHeaderStartFound) {\n                    // Convention line to indicate content ID\n                    if (responseLine.startsWith(HeaderConstants.CONTENT_ID)) {\n                        contentId = parseInt(responseLine.split(HTTP_HEADER_DELIMITER)[1]);\n                    }\n                    // Http version line with status code indicates the start of sub request's response.\n                    // Example: HTTP/1.1 202 Accepted\n                    if (responseLine.startsWith(HTTP_VERSION_1_1)) {\n                        subRespHeaderStartFound = true;\n                        const tokens = responseLine.split(SPACE_DELIMITER);\n                        deserializedSubResponse.status = parseInt(tokens[1]);\n                        deserializedSubResponse.statusMessage = tokens.slice(2).join(SPACE_DELIMITER);\n                    }\n                    continue; // Skip convention headers not specifically for sub request i.e. Content-Type: application/http and Content-ID: *\n                }\n                if (responseLine.trim() === \"\") {\n                    // Sub response's header start line already found, and the first empty line indicates header end line found.\n                    if (!subRespHeaderEndFound) {\n                        subRespHeaderEndFound = true;\n                    }\n                    continue; // Skip empty line\n                }\n                // Note: when code reach here, it indicates subRespHeaderStartFound == true\n                if (!subRespHeaderEndFound) {\n                    if (responseLine.indexOf(HTTP_HEADER_DELIMITER) === -1) {\n                        // Defensive coding to prevent from missing valuable lines.\n                        throw new Error(`Invalid state: find non-empty line '${responseLine}' without HTTP header delimiter '${HTTP_HEADER_DELIMITER}'.`);\n                    }\n                    // Parse headers of sub response.\n                    const tokens = responseLine.split(HTTP_HEADER_DELIMITER);\n                    deserializedSubResponse.headers.set(tokens[0], tokens[1]);\n                    if (tokens[0] === HeaderConstants.X_MS_ERROR_CODE) {\n                        deserializedSubResponse.errorCode = tokens[1];\n                        subRespFailed = true;\n                    }\n                }\n                else {\n                    // Assemble body of sub response.\n                    if (!deserializedSubResponse.bodyAsText) {\n                        deserializedSubResponse.bodyAsText = \"\";\n                    }\n                    deserializedSubResponse.bodyAsText += responseLine;\n                }\n            } // Inner for end\n            // The response will contain the Content-ID header for each corresponding subrequest response to use for tracking.\n            // The Content-IDs are set to a valid index in the subrequests we sent. In the status code 202 path, we could expect it\n            // to be 1-1 mapping from the [0, subRequests.size) to the Content-IDs returned. If not, we simply don't return that\n            // unexpected subResponse in the parsed reponse and we can always look it up in the raw response for debugging purpose.\n            if (contentId !== NOT_FOUND &&\n                Number.isInteger(contentId) &&\n                contentId >= 0 &&\n                contentId < this.subRequests.size &&\n                deserializedSubResponses[contentId] === undefined) {\n                deserializedSubResponse._request = this.subRequests.get(contentId);\n                deserializedSubResponses[contentId] = deserializedSubResponse;\n            }\n            else {\n                logger.error(`subResponses[${index}] is dropped as the Content-ID is not found or invalid, Content-ID: ${contentId}`);\n            }\n            if (subRespFailed) {\n                subResponsesFailedCount++;\n            }\n            else {\n                subResponsesSucceededCount++;\n            }\n        }\n        return {\n            subResponses: deserializedSubResponses,\n            subResponsesSucceededCount: subResponsesSucceededCount,\n            subResponsesFailedCount: subResponsesFailedCount,\n        };\n    }\n}\n//# sourceMappingURL=BatchResponseParser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nvar MutexLockStatus;\n(function (MutexLockStatus) {\n    MutexLockStatus[MutexLockStatus[\"LOCKED\"] = 0] = \"LOCKED\";\n    MutexLockStatus[MutexLockStatus[\"UNLOCKED\"] = 1] = \"UNLOCKED\";\n})(MutexLockStatus || (MutexLockStatus = {}));\n/**\n * An async mutex lock.\n */\nexport class Mutex {\n    /**\n     * Lock for a specific key. If the lock has been acquired by another customer, then\n     * will wait until getting the lock.\n     *\n     * @param key - lock key\n     */\n    static async lock(key) {\n        return new Promise((resolve) => {\n            if (this.keys[key] === undefined || this.keys[key] === MutexLockStatus.UNLOCKED) {\n                this.keys[key] = MutexLockStatus.LOCKED;\n                resolve();\n            }\n            else {\n                this.onUnlockEvent(key, () => {\n                    this.keys[key] = MutexLockStatus.LOCKED;\n                    resolve();\n                });\n            }\n        });\n    }\n    /**\n     * Unlock a key.\n     *\n     * @param key -\n     */\n    static async unlock(key) {\n        return new Promise((resolve) => {\n            if (this.keys[key] === MutexLockStatus.LOCKED) {\n                this.emitUnlockEvent(key);\n            }\n            delete this.keys[key];\n            resolve();\n        });\n    }\n    static onUnlockEvent(key, handler) {\n        if (this.listeners[key] === undefined) {\n            this.listeners[key] = [handler];\n        }\n        else {\n            this.listeners[key].push(handler);\n        }\n    }\n    static emitUnlockEvent(key) {\n        if (this.listeners[key] !== undefined && this.listeners[key].length > 0) {\n            const handler = this.listeners[key].shift();\n            setImmediate(() => {\n                handler.call(this);\n            });\n        }\n    }\n}\nMutex.keys = {};\nMutex.listeners = {};\n//# sourceMappingURL=Mutex.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { randomUUID } from \"@azure/core-util\";\nimport { isTokenCredential } from \"@azure/core-auth\";\nimport { bearerTokenAuthenticationPolicy, createEmptyPipeline, createHttpHeaders, } from \"@azure/core-rest-pipeline\";\nimport { isNode } from \"@azure/core-util\";\nimport { AnonymousCredential } from \"./credentials/AnonymousCredential\";\nimport { BlobClient } from \"./Clients\";\nimport { Mutex } from \"./utils/Mutex\";\nimport { Pipeline } from \"./Pipeline\";\nimport { getURLPath, getURLPathAndQuery, iEqual } from \"./utils/utils.common\";\nimport { stringifyXML } from \"@azure/core-xml\";\nimport { HeaderConstants, BATCH_MAX_REQUEST, HTTP_VERSION_1_1, HTTP_LINE_ENDING, StorageOAuthScopes, } from \"./utils/constants\";\nimport { StorageSharedKeyCredential } from \"./credentials/StorageSharedKeyCredential\";\nimport { tracingClient } from \"./utils/tracing\";\nimport { authorizeRequestOnTenantChallenge, serializationPolicy } from \"@azure/core-client\";\nimport { storageSharedKeyCredentialPolicy } from \"./policies/StorageSharedKeyCredentialPolicyV2\";\n/**\n * A BlobBatch represents an aggregated set of operations on blobs.\n * Currently, only `delete` and `setAccessTier` are supported.\n */\nexport class BlobBatch {\n    constructor() {\n        this.batch = \"batch\";\n        this.batchRequest = new InnerBatchRequest();\n    }\n    /**\n     * Get the value of Content-Type for a batch request.\n     * The value must be multipart/mixed with a batch boundary.\n     * Example: multipart/mixed; boundary=batch_a81786c8-e301-4e42-a729-a32ca24ae252\n     */\n    getMultiPartContentType() {\n        return this.batchRequest.getMultipartContentType();\n    }\n    /**\n     * Get assembled HTTP request body for sub requests.\n     */\n    getHttpRequestBody() {\n        return this.batchRequest.getHttpRequestBody();\n    }\n    /**\n     * Get sub requests that are added into the batch request.\n     */\n    getSubRequests() {\n        return this.batchRequest.getSubRequests();\n    }\n    async addSubRequestInternal(subRequest, assembleSubRequestFunc) {\n        await Mutex.lock(this.batch);\n        try {\n            this.batchRequest.preAddSubRequest(subRequest);\n            await assembleSubRequestFunc();\n            this.batchRequest.postAddSubRequest(subRequest);\n        }\n        finally {\n            await Mutex.unlock(this.batch);\n        }\n    }\n    setBatchType(batchType) {\n        if (!this.batchType) {\n            this.batchType = batchType;\n        }\n        if (this.batchType !== batchType) {\n            throw new RangeError(`BlobBatch only supports one operation type per batch and it already is being used for ${this.batchType} operations.`);\n        }\n    }\n    async deleteBlob(urlOrBlobClient, credentialOrOptions, options) {\n        let url;\n        let credential;\n        if (typeof urlOrBlobClient === \"string\" &&\n            ((isNode && credentialOrOptions instanceof StorageSharedKeyCredential) ||\n                credentialOrOptions instanceof AnonymousCredential ||\n                isTokenCredential(credentialOrOptions))) {\n            // First overload\n            url = urlOrBlobClient;\n            credential = credentialOrOptions;\n        }\n        else if (urlOrBlobClient instanceof BlobClient) {\n            // Second overload\n            url = urlOrBlobClient.url;\n            credential = urlOrBlobClient.credential;\n            options = credentialOrOptions;\n        }\n        else {\n            throw new RangeError(\"Invalid arguments. Either url and credential, or BlobClient need be provided.\");\n        }\n        if (!options) {\n            options = {};\n        }\n        return tracingClient.withSpan(\"BatchDeleteRequest-addSubRequest\", options, async (updatedOptions) => {\n            this.setBatchType(\"delete\");\n            await this.addSubRequestInternal({\n                url: url,\n                credential: credential,\n            }, async () => {\n                await new BlobClient(url, this.batchRequest.createPipeline(credential)).delete(updatedOptions);\n            });\n        });\n    }\n    async setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options) {\n        let url;\n        let credential;\n        let tier;\n        if (typeof urlOrBlobClient === \"string\" &&\n            ((isNode && credentialOrTier instanceof StorageSharedKeyCredential) ||\n                credentialOrTier instanceof AnonymousCredential ||\n                isTokenCredential(credentialOrTier))) {\n            // First overload\n            url = urlOrBlobClient;\n            credential = credentialOrTier;\n            tier = tierOrOptions;\n        }\n        else if (urlOrBlobClient instanceof BlobClient) {\n            // Second overload\n            url = urlOrBlobClient.url;\n            credential = urlOrBlobClient.credential;\n            tier = credentialOrTier;\n            options = tierOrOptions;\n        }\n        else {\n            throw new RangeError(\"Invalid arguments. Either url and credential, or BlobClient need be provided.\");\n        }\n        if (!options) {\n            options = {};\n        }\n        return tracingClient.withSpan(\"BatchSetTierRequest-addSubRequest\", options, async (updatedOptions) => {\n            this.setBatchType(\"setAccessTier\");\n            await this.addSubRequestInternal({\n                url: url,\n                credential: credential,\n            }, async () => {\n                await new BlobClient(url, this.batchRequest.createPipeline(credential)).setAccessTier(tier, updatedOptions);\n            });\n        });\n    }\n}\n/**\n * Inner batch request class which is responsible for assembling and serializing sub requests.\n * See https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#request-body for how requests are assembled.\n */\nclass InnerBatchRequest {\n    constructor() {\n        this.operationCount = 0;\n        this.body = \"\";\n        const tempGuid = randomUUID();\n        // batch_{batchid}\n        this.boundary = `batch_${tempGuid}`;\n        // --batch_{batchid}\n        // Content-Type: application/http\n        // Content-Transfer-Encoding: binary\n        this.subRequestPrefix = `--${this.boundary}${HTTP_LINE_ENDING}${HeaderConstants.CONTENT_TYPE}: application/http${HTTP_LINE_ENDING}${HeaderConstants.CONTENT_TRANSFER_ENCODING}: binary`;\n        // multipart/mixed; boundary=batch_{batchid}\n        this.multipartContentType = `multipart/mixed; boundary=${this.boundary}`;\n        // --batch_{batchid}--\n        this.batchRequestEnding = `--${this.boundary}--`;\n        this.subRequests = new Map();\n    }\n    /**\n     * Create pipeline to assemble sub requests. The idea here is to use existing\n     * credential and serialization/deserialization components, with additional policies to\n     * filter unnecessary headers, assemble sub requests into request's body\n     * and intercept request from going to wire.\n     * @param credential -  Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the `@azure/identity` package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.\n     */\n    createPipeline(credential) {\n        const corePipeline = createEmptyPipeline();\n        corePipeline.addPolicy(serializationPolicy({\n            stringifyXML,\n            serializerOptions: {\n                xml: {\n                    xmlCharKey: \"#\",\n                },\n            },\n        }), { phase: \"Serialize\" });\n        // Use batch header filter policy to exclude unnecessary headers\n        corePipeline.addPolicy(batchHeaderFilterPolicy());\n        // Use batch assemble policy to assemble request and intercept request from going to wire\n        corePipeline.addPolicy(batchRequestAssemblePolicy(this), { afterPhase: \"Sign\" });\n        if (isTokenCredential(credential)) {\n            corePipeline.addPolicy(bearerTokenAuthenticationPolicy({\n                credential,\n                scopes: StorageOAuthScopes,\n                challengeCallbacks: { authorizeRequestOnChallenge: authorizeRequestOnTenantChallenge },\n            }), { phase: \"Sign\" });\n        }\n        else if (credential instanceof StorageSharedKeyCredential) {\n            corePipeline.addPolicy(storageSharedKeyCredentialPolicy({\n                accountName: credential.accountName,\n                accountKey: credential.accountKey,\n            }), { phase: \"Sign\" });\n        }\n        const pipeline = new Pipeline([]);\n        // attach the v2 pipeline to this one\n        pipeline._credential = credential;\n        pipeline._corePipeline = corePipeline;\n        return pipeline;\n    }\n    appendSubRequestToBody(request) {\n        // Start to assemble sub request\n        this.body += [\n            this.subRequestPrefix, // sub request constant prefix\n            `${HeaderConstants.CONTENT_ID}: ${this.operationCount}`, // sub request's content ID\n            \"\", // empty line after sub request's content ID\n            `${request.method.toString()} ${getURLPathAndQuery(request.url)} ${HTTP_VERSION_1_1}${HTTP_LINE_ENDING}`, // sub request start line with method\n        ].join(HTTP_LINE_ENDING);\n        for (const [name, value] of request.headers) {\n            this.body += `${name}: ${value}${HTTP_LINE_ENDING}`;\n        }\n        this.body += HTTP_LINE_ENDING; // sub request's headers need be ending with an empty line\n        // No body to assemble for current batch request support\n        // End to assemble sub request\n    }\n    preAddSubRequest(subRequest) {\n        if (this.operationCount >= BATCH_MAX_REQUEST) {\n            throw new RangeError(`Cannot exceed ${BATCH_MAX_REQUEST} sub requests in a single batch`);\n        }\n        // Fast fail if url for sub request is invalid\n        const path = getURLPath(subRequest.url);\n        if (!path || path === \"\") {\n            throw new RangeError(`Invalid url for sub request: '${subRequest.url}'`);\n        }\n    }\n    postAddSubRequest(subRequest) {\n        this.subRequests.set(this.operationCount, subRequest);\n        this.operationCount++;\n    }\n    // Return the http request body with assembling the ending line to the sub request body.\n    getHttpRequestBody() {\n        return `${this.body}${this.batchRequestEnding}${HTTP_LINE_ENDING}`;\n    }\n    getMultipartContentType() {\n        return this.multipartContentType;\n    }\n    getSubRequests() {\n        return this.subRequests;\n    }\n}\nfunction batchRequestAssemblePolicy(batchRequest) {\n    return {\n        name: \"batchRequestAssemblePolicy\",\n        async sendRequest(request) {\n            batchRequest.appendSubRequestToBody(request);\n            return {\n                request,\n                status: 200,\n                headers: createHttpHeaders(),\n            };\n        },\n    };\n}\nfunction batchHeaderFilterPolicy() {\n    return {\n        name: \"batchHeaderFilterPolicy\",\n        async sendRequest(request, next) {\n            let xMsHeaderName = \"\";\n            for (const [name] of request.headers) {\n                if (iEqual(name, HeaderConstants.X_MS_VERSION)) {\n                    xMsHeaderName = name;\n                }\n            }\n            if (xMsHeaderName !== \"\") {\n                request.headers.delete(xMsHeaderName); // The subrequests should not have the x-ms-version header.\n            }\n            return next(request);\n        },\n    };\n}\n//# sourceMappingURL=BlobBatch.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { BatchResponseParser } from \"./BatchResponseParser\";\nimport { utf8ByteLength } from \"./BatchUtils\";\nimport { BlobBatch } from \"./BlobBatch\";\nimport { tracingClient } from \"./utils/tracing\";\nimport { AnonymousCredential } from \"./credentials/AnonymousCredential\";\nimport { StorageContextClient } from \"./StorageContextClient\";\nimport { newPipeline, isPipelineLike, getCoreClientOptions } from \"./Pipeline\";\nimport { assertResponse, getURLPath } from \"./utils/utils.common\";\n/**\n * A BlobBatchClient allows you to make batched requests to the Azure Storage Blob service.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch\n */\nexport class BlobBatchClient {\n    constructor(url, credentialOrPipeline, \n    // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n    options) {\n        let pipeline;\n        if (isPipelineLike(credentialOrPipeline)) {\n            pipeline = credentialOrPipeline;\n        }\n        else if (!credentialOrPipeline) {\n            // no credential provided\n            pipeline = newPipeline(new AnonymousCredential(), options);\n        }\n        else {\n            pipeline = newPipeline(credentialOrPipeline, options);\n        }\n        const storageClientContext = new StorageContextClient(url, getCoreClientOptions(pipeline));\n        const path = getURLPath(url);\n        if (path && path !== \"/\") {\n            // Container scoped.\n            this.serviceOrContainerContext = storageClientContext.container;\n        }\n        else {\n            this.serviceOrContainerContext = storageClientContext.service;\n        }\n    }\n    /**\n     * Creates a {@link BlobBatch}.\n     * A BlobBatch represents an aggregated set of operations on blobs.\n     */\n    createBatch() {\n        return new BlobBatch();\n    }\n    async deleteBlobs(urlsOrBlobClients, credentialOrOptions, \n    // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n    options) {\n        const batch = new BlobBatch();\n        for (const urlOrBlobClient of urlsOrBlobClients) {\n            if (typeof urlOrBlobClient === \"string\") {\n                await batch.deleteBlob(urlOrBlobClient, credentialOrOptions, options);\n            }\n            else {\n                await batch.deleteBlob(urlOrBlobClient, credentialOrOptions);\n            }\n        }\n        return this.submitBatch(batch);\n    }\n    async setBlobsAccessTier(urlsOrBlobClients, credentialOrTier, tierOrOptions, \n    // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n    options) {\n        const batch = new BlobBatch();\n        for (const urlOrBlobClient of urlsOrBlobClients) {\n            if (typeof urlOrBlobClient === \"string\") {\n                await batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options);\n            }\n            else {\n                await batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions);\n            }\n        }\n        return this.submitBatch(batch);\n    }\n    /**\n     * Submit batch request which consists of multiple subrequests.\n     *\n     * Get `blobBatchClient` and other details before running the snippets.\n     * `blobServiceClient.getBlobBatchClient()` gives the `blobBatchClient`\n     *\n     * Example usage:\n     *\n     * ```js\n     * let batchRequest = new BlobBatch();\n     * await batchRequest.deleteBlob(urlInString0, credential0);\n     * await batchRequest.deleteBlob(urlInString1, credential1, {\n     *  deleteSnapshots: \"include\"\n     * });\n     * const batchResp = await blobBatchClient.submitBatch(batchRequest);\n     * console.log(batchResp.subResponsesSucceededCount);\n     * ```\n     *\n     * Example using a lease:\n     *\n     * ```js\n     * let batchRequest = new BlobBatch();\n     * await batchRequest.setBlobAccessTier(blockBlobClient0, \"Cool\");\n     * await batchRequest.setBlobAccessTier(blockBlobClient1, \"Cool\", {\n     *  conditions: { leaseId: leaseId }\n     * });\n     * const batchResp = await blobBatchClient.submitBatch(batchRequest);\n     * console.log(batchResp.subResponsesSucceededCount);\n     * ```\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch\n     *\n     * @param batchRequest - A set of Delete or SetTier operations.\n     * @param options -\n     */\n    async submitBatch(batchRequest, options = {}) {\n        if (!batchRequest || batchRequest.getSubRequests().size === 0) {\n            throw new RangeError(\"Batch request should contain one or more sub requests.\");\n        }\n        return tracingClient.withSpan(\"BlobBatchClient-submitBatch\", options, async (updatedOptions) => {\n            const batchRequestBody = batchRequest.getHttpRequestBody();\n            // ServiceSubmitBatchResponseModel and ContainerSubmitBatchResponse are compatible for now.\n            const rawBatchResponse = assertResponse(await this.serviceOrContainerContext.submitBatch(utf8ByteLength(batchRequestBody), batchRequest.getMultiPartContentType(), batchRequestBody, Object.assign({}, updatedOptions)));\n            // Parse the sub responses result, if logic reaches here(i.e. the batch request succeeded with status code 202).\n            const batchResponseParser = new BatchResponseParser(rawBatchResponse, batchRequest.getSubRequests());\n            const responseSummary = await batchResponseParser.parseBatchResponse();\n            const res = {\n                _response: rawBatchResponse._response,\n                contentType: rawBatchResponse.contentType,\n                errorCode: rawBatchResponse.errorCode,\n                requestId: rawBatchResponse.requestId,\n                clientRequestId: rawBatchResponse.clientRequestId,\n                version: rawBatchResponse.version,\n                subResponses: responseSummary.subResponses,\n                subResponsesSucceededCount: responseSummary.subResponsesSucceededCount,\n                subResponsesFailedCount: responseSummary.subResponsesFailedCount,\n            };\n            return res;\n        });\n    }\n}\n//# sourceMappingURL=BlobBatchClient.js.map","import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from \"tslib\";\nimport { getDefaultProxySettings } from \"@azure/core-rest-pipeline\";\nimport { isNode } from \"@azure/core-util\";\nimport { isTokenCredential } from \"@azure/core-auth\";\nimport { AnonymousCredential } from \"./credentials/AnonymousCredential\";\nimport { StorageSharedKeyCredential } from \"./credentials/StorageSharedKeyCredential\";\nimport { newPipeline, isPipelineLike } from \"./Pipeline\";\nimport { StorageClient } from \"./StorageClient\";\nimport { tracingClient } from \"./utils/tracing\";\nimport { appendToURLPath, appendToURLQuery, assertResponse, BlobNameToString, ConvertInternalResponseOfListBlobFlat, ConvertInternalResponseOfListBlobHierarchy, EscapePath, extractConnectionStringParts, isIpEndpointStyle, parseObjectReplicationRecord, toTags, truncatedISO8061Date, } from \"./utils/utils.common\";\nimport { generateBlobSASQueryParameters, generateBlobSASQueryParametersInternal, } from \"./sas/BlobSASSignatureValues\";\nimport { BlobLeaseClient } from \"./BlobLeaseClient\";\nimport { AppendBlobClient, BlobClient, BlockBlobClient, PageBlobClient } from \"./Clients\";\nimport { BlobBatchClient } from \"./BlobBatchClient\";\n/**\n * A ContainerClient represents a URL to the Azure Storage container allowing you to manipulate its blobs.\n */\nexport class ContainerClient extends StorageClient {\n    /**\n     * The name of the container.\n     */\n    get containerName() {\n        return this._containerName;\n    }\n    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, \n    // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n    options) {\n        let pipeline;\n        let url;\n        options = options || {};\n        if (isPipelineLike(credentialOrPipelineOrContainerName)) {\n            // (url: string, pipeline: Pipeline)\n            url = urlOrConnectionString;\n            pipeline = credentialOrPipelineOrContainerName;\n        }\n        else if ((isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||\n            credentialOrPipelineOrContainerName instanceof AnonymousCredential ||\n            isTokenCredential(credentialOrPipelineOrContainerName)) {\n            // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n            url = urlOrConnectionString;\n            pipeline = newPipeline(credentialOrPipelineOrContainerName, options);\n        }\n        else if (!credentialOrPipelineOrContainerName &&\n            typeof credentialOrPipelineOrContainerName !== \"string\") {\n            // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n            // The second parameter is undefined. Use anonymous credential.\n            url = urlOrConnectionString;\n            pipeline = newPipeline(new AnonymousCredential(), options);\n        }\n        else if (credentialOrPipelineOrContainerName &&\n            typeof credentialOrPipelineOrContainerName === \"string\") {\n            // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)\n            const containerName = credentialOrPipelineOrContainerName;\n            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);\n            if (extractedCreds.kind === \"AccountConnString\") {\n                if (isNode) {\n                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);\n                    url = appendToURLPath(extractedCreds.url, encodeURIComponent(containerName));\n                    if (!options.proxyOptions) {\n                        options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);\n                    }\n                    pipeline = newPipeline(sharedKeyCredential, options);\n                }\n                else {\n                    throw new Error(\"Account connection string is only supported in Node.js environment\");\n                }\n            }\n            else if (extractedCreds.kind === \"SASConnString\") {\n                url =\n                    appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)) +\n                        \"?\" +\n                        extractedCreds.accountSas;\n                pipeline = newPipeline(new AnonymousCredential(), options);\n            }\n            else {\n                throw new Error(\"Connection string must be either an Account connection string or a SAS connection string\");\n            }\n        }\n        else {\n            throw new Error(\"Expecting non-empty strings for containerName parameter\");\n        }\n        super(url, pipeline);\n        this._containerName = this.getContainerNameFromUrl();\n        this.containerContext = this.storageClientContext.container;\n    }\n    /**\n     * Creates a new container under the specified account. If the container with\n     * the same name already exists, the operation fails.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-container\n     * Naming rules: @see https://learn.microsoft.com/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata\n     *\n     * @param options - Options to Container Create operation.\n     *\n     *\n     * Example usage:\n     *\n     * ```js\n     * const containerClient = blobServiceClient.getContainerClient(\"<container name>\");\n     * const createContainerResponse = await containerClient.create();\n     * console.log(\"Container was created successfully\", createContainerResponse.requestId);\n     * ```\n     */\n    async create(options = {}) {\n        return tracingClient.withSpan(\"ContainerClient-create\", options, async (updatedOptions) => {\n            return assertResponse(await this.containerContext.create(updatedOptions));\n        });\n    }\n    /**\n     * Creates a new container under the specified account. If the container with\n     * the same name already exists, it is not changed.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-container\n     * Naming rules: @see https://learn.microsoft.com/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata\n     *\n     * @param options -\n     */\n    async createIfNotExists(options = {}) {\n        return tracingClient.withSpan(\"ContainerClient-createIfNotExists\", options, async (updatedOptions) => {\n            var _a, _b;\n            try {\n                const res = await this.create(updatedOptions);\n                return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response });\n            }\n            catch (e) {\n                if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === \"ContainerAlreadyExists\") {\n                    return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });\n                }\n                else {\n                    throw e;\n                }\n            }\n        });\n    }\n    /**\n     * Returns true if the Azure container resource represented by this client exists; false otherwise.\n     *\n     * NOTE: use this function with care since an existing container might be deleted by other clients or\n     * applications. Vice versa new containers with the same name might be added by other clients or\n     * applications after this function completes.\n     *\n     * @param options -\n     */\n    async exists(options = {}) {\n        return tracingClient.withSpan(\"ContainerClient-exists\", options, async (updatedOptions) => {\n            try {\n                await this.getProperties({\n                    abortSignal: options.abortSignal,\n                    tracingOptions: updatedOptions.tracingOptions,\n                });\n                return true;\n            }\n            catch (e) {\n                if (e.statusCode === 404) {\n                    return false;\n                }\n                throw e;\n            }\n        });\n    }\n    /**\n     * Creates a {@link BlobClient}\n     *\n     * @param blobName - A blob name\n     * @returns A new BlobClient object for the given blob name.\n     */\n    getBlobClient(blobName) {\n        return new BlobClient(appendToURLPath(this.url, EscapePath(blobName)), this.pipeline);\n    }\n    /**\n     * Creates an {@link AppendBlobClient}\n     *\n     * @param blobName - An append blob name\n     */\n    getAppendBlobClient(blobName) {\n        return new AppendBlobClient(appendToURLPath(this.url, EscapePath(blobName)), this.pipeline);\n    }\n    /**\n     * Creates a {@link BlockBlobClient}\n     *\n     * @param blobName - A block blob name\n     *\n     *\n     * Example usage:\n     *\n     * ```js\n     * const content = \"Hello world!\";\n     *\n     * const blockBlobClient = containerClient.getBlockBlobClient(\"<blob name>\");\n     * const uploadBlobResponse = await blockBlobClient.upload(content, content.length);\n     * ```\n     */\n    getBlockBlobClient(blobName) {\n        return new BlockBlobClient(appendToURLPath(this.url, EscapePath(blobName)), this.pipeline);\n    }\n    /**\n     * Creates a {@link PageBlobClient}\n     *\n     * @param blobName - A page blob name\n     */\n    getPageBlobClient(blobName) {\n        return new PageBlobClient(appendToURLPath(this.url, EscapePath(blobName)), this.pipeline);\n    }\n    /**\n     * Returns all user-defined metadata and system properties for the specified\n     * container. The data returned does not include the container's list of blobs.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-container-properties\n     *\n     * WARNING: The `metadata` object returned in the response will have its keys in lowercase, even if\n     * they originally contained uppercase characters. This differs from the metadata keys returned by\n     * the `listContainers` method of {@link BlobServiceClient} using the `includeMetadata` option, which\n     * will retain their original casing.\n     *\n     * @param options - Options to Container Get Properties operation.\n     */\n    async getProperties(options = {}) {\n        if (!options.conditions) {\n            options.conditions = {};\n        }\n        return tracingClient.withSpan(\"ContainerClient-getProperties\", options, async (updatedOptions) => {\n            return assertResponse(await this.containerContext.getProperties(Object.assign(Object.assign({ abortSignal: options.abortSignal }, options.conditions), { tracingOptions: updatedOptions.tracingOptions })));\n        });\n    }\n    /**\n     * Marks the specified container for deletion. The container and any blobs\n     * contained within it are later deleted during garbage collection.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-container\n     *\n     * @param options - Options to Container Delete operation.\n     */\n    async delete(options = {}) {\n        if (!options.conditions) {\n            options.conditions = {};\n        }\n        return tracingClient.withSpan(\"ContainerClient-delete\", options, async (updatedOptions) => {\n            return assertResponse(await this.containerContext.delete({\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: options.conditions,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Marks the specified container for deletion if it exists. The container and any blobs\n     * contained within it are later deleted during garbage collection.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-container\n     *\n     * @param options - Options to Container Delete operation.\n     */\n    async deleteIfExists(options = {}) {\n        return tracingClient.withSpan(\"ContainerClient-deleteIfExists\", options, async (updatedOptions) => {\n            var _a, _b;\n            try {\n                const res = await this.delete(updatedOptions);\n                return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response });\n            }\n            catch (e) {\n                if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === \"ContainerNotFound\") {\n                    return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });\n                }\n                throw e;\n            }\n        });\n    }\n    /**\n     * Sets one or more user-defined name-value pairs for the specified container.\n     *\n     * If no option provided, or no metadata defined in the parameter, the container\n     * metadata will be removed.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-container-metadata\n     *\n     * @param metadata - Replace existing metadata with this value.\n     *                            If no value provided the existing metadata will be removed.\n     * @param options - Options to Container Set Metadata operation.\n     */\n    async setMetadata(metadata, options = {}) {\n        if (!options.conditions) {\n            options.conditions = {};\n        }\n        if (options.conditions.ifUnmodifiedSince) {\n            throw new RangeError(\"the IfUnmodifiedSince must have their default values because they are ignored by the blob service\");\n        }\n        return tracingClient.withSpan(\"ContainerClient-setMetadata\", options, async (updatedOptions) => {\n            return assertResponse(await this.containerContext.setMetadata({\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                metadata,\n                modifiedAccessConditions: options.conditions,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Gets the permissions for the specified container. The permissions indicate\n     * whether container data may be accessed publicly.\n     *\n     * WARNING: JavaScript Date will potentially lose precision when parsing startsOn and expiresOn strings.\n     * For example, new Date(\"2018-12-31T03:44:23.8827891Z\").toISOString() will get \"2018-12-31T03:44:23.882Z\".\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-container-acl\n     *\n     * @param options - Options to Container Get Access Policy operation.\n     */\n    async getAccessPolicy(options = {}) {\n        if (!options.conditions) {\n            options.conditions = {};\n        }\n        return tracingClient.withSpan(\"ContainerClient-getAccessPolicy\", options, async (updatedOptions) => {\n            const response = assertResponse(await this.containerContext.getAccessPolicy({\n                abortSignal: options.abortSignal,\n                leaseAccessConditions: options.conditions,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n            const res = {\n                _response: response._response,\n                blobPublicAccess: response.blobPublicAccess,\n                date: response.date,\n                etag: response.etag,\n                errorCode: response.errorCode,\n                lastModified: response.lastModified,\n                requestId: response.requestId,\n                clientRequestId: response.clientRequestId,\n                signedIdentifiers: [],\n                version: response.version,\n            };\n            for (const identifier of response) {\n                let accessPolicy = undefined;\n                if (identifier.accessPolicy) {\n                    accessPolicy = {\n                        permissions: identifier.accessPolicy.permissions,\n                    };\n                    if (identifier.accessPolicy.expiresOn) {\n                        accessPolicy.expiresOn = new Date(identifier.accessPolicy.expiresOn);\n                    }\n                    if (identifier.accessPolicy.startsOn) {\n                        accessPolicy.startsOn = new Date(identifier.accessPolicy.startsOn);\n                    }\n                }\n                res.signedIdentifiers.push({\n                    accessPolicy,\n                    id: identifier.id,\n                });\n            }\n            return res;\n        });\n    }\n    /**\n     * Sets the permissions for the specified container. The permissions indicate\n     * whether blobs in a container may be accessed publicly.\n     *\n     * When you set permissions for a container, the existing permissions are replaced.\n     * If no access or containerAcl provided, the existing container ACL will be\n     * removed.\n     *\n     * When you establish a stored access policy on a container, it may take up to 30 seconds to take effect.\n     * During this interval, a shared access signature that is associated with the stored access policy will\n     * fail with status code 403 (Forbidden), until the access policy becomes active.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-container-acl\n     *\n     * @param access - The level of public access to data in the container.\n     * @param containerAcl - Array of elements each having a unique Id and details of the access policy.\n     * @param options - Options to Container Set Access Policy operation.\n     */\n    async setAccessPolicy(access, containerAcl, options = {}) {\n        options.conditions = options.conditions || {};\n        return tracingClient.withSpan(\"ContainerClient-setAccessPolicy\", options, async (updatedOptions) => {\n            const acl = [];\n            for (const identifier of containerAcl || []) {\n                acl.push({\n                    accessPolicy: {\n                        expiresOn: identifier.accessPolicy.expiresOn\n                            ? truncatedISO8061Date(identifier.accessPolicy.expiresOn)\n                            : \"\",\n                        permissions: identifier.accessPolicy.permissions,\n                        startsOn: identifier.accessPolicy.startsOn\n                            ? truncatedISO8061Date(identifier.accessPolicy.startsOn)\n                            : \"\",\n                    },\n                    id: identifier.id,\n                });\n            }\n            return assertResponse(await this.containerContext.setAccessPolicy({\n                abortSignal: options.abortSignal,\n                access,\n                containerAcl: acl,\n                leaseAccessConditions: options.conditions,\n                modifiedAccessConditions: options.conditions,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Get a {@link BlobLeaseClient} that manages leases on the container.\n     *\n     * @param proposeLeaseId - Initial proposed lease Id.\n     * @returns A new BlobLeaseClient object for managing leases on the container.\n     */\n    getBlobLeaseClient(proposeLeaseId) {\n        return new BlobLeaseClient(this, proposeLeaseId);\n    }\n    /**\n     * Creates a new block blob, or updates the content of an existing block blob.\n     *\n     * Updating an existing block blob overwrites any existing metadata on the blob.\n     * Partial updates are not supported; the content of the existing blob is\n     * overwritten with the new content. To perform a partial update of a block blob's,\n     * use {@link BlockBlobClient.stageBlock} and {@link BlockBlobClient.commitBlockList}.\n     *\n     * This is a non-parallel uploading method, please use {@link BlockBlobClient.uploadFile},\n     * {@link BlockBlobClient.uploadStream} or {@link BlockBlobClient.uploadBrowserData} for better\n     * performance with concurrency uploading.\n     *\n     * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n     *\n     * @param blobName - Name of the block blob to create or update.\n     * @param body - Blob, string, ArrayBuffer, ArrayBufferView or a function\n     *                               which returns a new Readable stream whose offset is from data source beginning.\n     * @param contentLength - Length of body in bytes. Use Buffer.byteLength() to calculate body length for a\n     *                               string including non non-Base64/Hex-encoded characters.\n     * @param options - Options to configure the Block Blob Upload operation.\n     * @returns Block Blob upload response data and the corresponding BlockBlobClient instance.\n     */\n    async uploadBlockBlob(blobName, body, contentLength, options = {}) {\n        return tracingClient.withSpan(\"ContainerClient-uploadBlockBlob\", options, async (updatedOptions) => {\n            const blockBlobClient = this.getBlockBlobClient(blobName);\n            const response = await blockBlobClient.upload(body, contentLength, updatedOptions);\n            return {\n                blockBlobClient,\n                response,\n            };\n        });\n    }\n    /**\n     * Marks the specified blob or snapshot for deletion. The blob is later deleted\n     * during garbage collection. Note that in order to delete a blob, you must delete\n     * all of its snapshots. You can delete both at the same time with the Delete\n     * Blob operation.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob\n     *\n     * @param blobName -\n     * @param options - Options to Blob Delete operation.\n     * @returns Block blob deletion response data.\n     */\n    async deleteBlob(blobName, options = {}) {\n        return tracingClient.withSpan(\"ContainerClient-deleteBlob\", options, async (updatedOptions) => {\n            let blobClient = this.getBlobClient(blobName);\n            if (options.versionId) {\n                blobClient = blobClient.withVersion(options.versionId);\n            }\n            return blobClient.delete(updatedOptions);\n        });\n    }\n    /**\n     * listBlobFlatSegment returns a single segment of blobs starting from the\n     * specified Marker. Use an empty Marker to start enumeration from the beginning.\n     * After getting a segment, process it, and then call listBlobsFlatSegment again\n     * (passing the the previously-returned Marker) to get the next segment.\n     * @see https://docs.microsoft.com/rest/api/storageservices/list-blobs\n     *\n     * @param marker - A string value that identifies the portion of the list to be returned with the next list operation.\n     * @param options - Options to Container List Blob Flat Segment operation.\n     */\n    async listBlobFlatSegment(marker, options = {}) {\n        return tracingClient.withSpan(\"ContainerClient-listBlobFlatSegment\", options, async (updatedOptions) => {\n            const response = assertResponse(await this.containerContext.listBlobFlatSegment(Object.assign(Object.assign({ marker }, options), { tracingOptions: updatedOptions.tracingOptions })));\n            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: Object.assign(Object.assign({}, response._response), { parsedBody: ConvertInternalResponseOfListBlobFlat(response._response.parsedBody) }), segment: Object.assign(Object.assign({}, response.segment), { blobItems: response.segment.blobItems.map((blobItemInternal) => {\n                        const blobItem = Object.assign(Object.assign({}, blobItemInternal), { name: BlobNameToString(blobItemInternal.name), tags: toTags(blobItemInternal.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInternal.objectReplicationMetadata) });\n                        return blobItem;\n                    }) }) });\n            return wrappedResponse;\n        });\n    }\n    /**\n     * listBlobHierarchySegment returns a single segment of blobs starting from\n     * the specified Marker. Use an empty Marker to start enumeration from the\n     * beginning. After getting a segment, process it, and then call listBlobsHierarchicalSegment\n     * again (passing the the previously-returned Marker) to get the next segment.\n     * @see https://docs.microsoft.com/rest/api/storageservices/list-blobs\n     *\n     * @param delimiter - The character or string used to define the virtual hierarchy\n     * @param marker - A string value that identifies the portion of the list to be returned with the next list operation.\n     * @param options - Options to Container List Blob Hierarchy Segment operation.\n     */\n    async listBlobHierarchySegment(delimiter, marker, options = {}) {\n        return tracingClient.withSpan(\"ContainerClient-listBlobHierarchySegment\", options, async (updatedOptions) => {\n            var _a;\n            const response = assertResponse(await this.containerContext.listBlobHierarchySegment(delimiter, Object.assign(Object.assign({ marker }, options), { tracingOptions: updatedOptions.tracingOptions })));\n            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: Object.assign(Object.assign({}, response._response), { parsedBody: ConvertInternalResponseOfListBlobHierarchy(response._response.parsedBody) }), segment: Object.assign(Object.assign({}, response.segment), { blobItems: response.segment.blobItems.map((blobItemInternal) => {\n                        const blobItem = Object.assign(Object.assign({}, blobItemInternal), { name: BlobNameToString(blobItemInternal.name), tags: toTags(blobItemInternal.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInternal.objectReplicationMetadata) });\n                        return blobItem;\n                    }), blobPrefixes: (_a = response.segment.blobPrefixes) === null || _a === void 0 ? void 0 : _a.map((blobPrefixInternal) => {\n                        const blobPrefix = Object.assign(Object.assign({}, blobPrefixInternal), { name: BlobNameToString(blobPrefixInternal.name) });\n                        return blobPrefix;\n                    }) }) });\n            return wrappedResponse;\n        });\n    }\n    /**\n     * Returns an AsyncIterableIterator for ContainerListBlobFlatSegmentResponse\n     *\n     * @param marker - A string value that identifies the portion of\n     *                          the list of blobs to be returned with the next listing operation. The\n     *                          operation returns the ContinuationToken value within the response body if the\n     *                          listing operation did not return all blobs remaining to be listed\n     *                          with the current page. The ContinuationToken value can be used as the value for\n     *                          the marker parameter in a subsequent call to request the next page of list\n     *                          items. The marker value is opaque to the client.\n     * @param options - Options to list blobs operation.\n     */\n    listSegments(marker_1) {\n        return __asyncGenerator(this, arguments, function* listSegments_1(marker, options = {}) {\n            let listBlobsFlatSegmentResponse;\n            if (!!marker || marker === undefined) {\n                do {\n                    listBlobsFlatSegmentResponse = yield __await(this.listBlobFlatSegment(marker, options));\n                    marker = listBlobsFlatSegmentResponse.continuationToken;\n                    yield yield __await(yield __await(listBlobsFlatSegmentResponse));\n                } while (marker);\n            }\n        });\n    }\n    /**\n     * Returns an AsyncIterableIterator of {@link BlobItem} objects\n     *\n     * @param options - Options to list blobs operation.\n     */\n    listItems() {\n        return __asyncGenerator(this, arguments, function* listItems_1(options = {}) {\n            var _a, e_1, _b, _c;\n            let marker;\n            try {\n                for (var _d = true, _e = __asyncValues(this.listSegments(marker, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {\n                    _c = _f.value;\n                    _d = false;\n                    const listBlobsFlatSegmentResponse = _c;\n                    yield __await(yield* __asyncDelegator(__asyncValues(listBlobsFlatSegmentResponse.segment.blobItems)));\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n        });\n    }\n    /**\n     * Returns an async iterable iterator to list all the blobs\n     * under the specified account.\n     *\n     * .byPage() returns an async iterable iterator to list the blobs in pages.\n     *\n     * Example using `for await` syntax:\n     *\n     * ```js\n     * // Get the containerClient before you run these snippets,\n     * // Can be obtained from `blobServiceClient.getContainerClient(\"<your-container-name>\");`\n     * let i = 1;\n     * for await (const blob of containerClient.listBlobsFlat()) {\n     *   console.log(`Blob ${i++}: ${blob.name}`);\n     * }\n     * ```\n     *\n     * Example using `iter.next()`:\n     *\n     * ```js\n     * let i = 1;\n     * let iter = containerClient.listBlobsFlat();\n     * let blobItem = await iter.next();\n     * while (!blobItem.done) {\n     *   console.log(`Blob ${i++}: ${blobItem.value.name}`);\n     *   blobItem = await iter.next();\n     * }\n     * ```\n     *\n     * Example using `byPage()`:\n     *\n     * ```js\n     * // passing optional maxPageSize in the page settings\n     * let i = 1;\n     * for await (const response of containerClient.listBlobsFlat().byPage({ maxPageSize: 20 })) {\n     *   for (const blob of response.segment.blobItems) {\n     *     console.log(`Blob ${i++}: ${blob.name}`);\n     *   }\n     * }\n     * ```\n     *\n     * Example using paging with a marker:\n     *\n     * ```js\n     * let i = 1;\n     * let iterator = containerClient.listBlobsFlat().byPage({ maxPageSize: 2 });\n     * let response = (await iterator.next()).value;\n     *\n     * // Prints 2 blob names\n     * for (const blob of response.segment.blobItems) {\n     *   console.log(`Blob ${i++}: ${blob.name}`);\n     * }\n     *\n     * // Gets next marker\n     * let marker = response.continuationToken;\n     *\n     * // Passing next marker as continuationToken\n     *\n     * iterator = containerClient.listBlobsFlat().byPage({ continuationToken: marker, maxPageSize: 10 });\n     * response = (await iterator.next()).value;\n     *\n     * // Prints 10 blob names\n     * for (const blob of response.segment.blobItems) {\n     *   console.log(`Blob ${i++}: ${blob.name}`);\n     * }\n     * ```\n     *\n     * @param options - Options to list blobs.\n     * @returns An asyncIterableIterator that supports paging.\n     */\n    listBlobsFlat(options = {}) {\n        const include = [];\n        if (options.includeCopy) {\n            include.push(\"copy\");\n        }\n        if (options.includeDeleted) {\n            include.push(\"deleted\");\n        }\n        if (options.includeMetadata) {\n            include.push(\"metadata\");\n        }\n        if (options.includeSnapshots) {\n            include.push(\"snapshots\");\n        }\n        if (options.includeVersions) {\n            include.push(\"versions\");\n        }\n        if (options.includeUncommitedBlobs) {\n            include.push(\"uncommittedblobs\");\n        }\n        if (options.includeTags) {\n            include.push(\"tags\");\n        }\n        if (options.includeDeletedWithVersions) {\n            include.push(\"deletedwithversions\");\n        }\n        if (options.includeImmutabilityPolicy) {\n            include.push(\"immutabilitypolicy\");\n        }\n        if (options.includeLegalHold) {\n            include.push(\"legalhold\");\n        }\n        if (options.prefix === \"\") {\n            options.prefix = undefined;\n        }\n        const updatedOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include: include } : {}));\n        // AsyncIterableIterator to iterate over blobs\n        const iter = this.listItems(updatedOptions);\n        return {\n            /**\n             * The next method, part of the iteration protocol\n             */\n            next() {\n                return iter.next();\n            },\n            /**\n             * The connection to the async iterator, part of the iteration protocol\n             */\n            [Symbol.asyncIterator]() {\n                return this;\n            },\n            /**\n             * Return an AsyncIterableIterator that works a page at a time\n             */\n            byPage: (settings = {}) => {\n                return this.listSegments(settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, updatedOptions));\n            },\n        };\n    }\n    /**\n     * Returns an AsyncIterableIterator for ContainerListBlobHierarchySegmentResponse\n     *\n     * @param delimiter - The character or string used to define the virtual hierarchy\n     * @param marker - A string value that identifies the portion of\n     *                          the list of blobs to be returned with the next listing operation. The\n     *                          operation returns the ContinuationToken value within the response body if the\n     *                          listing operation did not return all blobs remaining to be listed\n     *                          with the current page. The ContinuationToken value can be used as the value for\n     *                          the marker parameter in a subsequent call to request the next page of list\n     *                          items. The marker value is opaque to the client.\n     * @param options - Options to list blobs operation.\n     */\n    listHierarchySegments(delimiter_1, marker_1) {\n        return __asyncGenerator(this, arguments, function* listHierarchySegments_1(delimiter, marker, options = {}) {\n            let listBlobsHierarchySegmentResponse;\n            if (!!marker || marker === undefined) {\n                do {\n                    listBlobsHierarchySegmentResponse = yield __await(this.listBlobHierarchySegment(delimiter, marker, options));\n                    marker = listBlobsHierarchySegmentResponse.continuationToken;\n                    yield yield __await(yield __await(listBlobsHierarchySegmentResponse));\n                } while (marker);\n            }\n        });\n    }\n    /**\n     * Returns an AsyncIterableIterator for {@link BlobPrefix} and {@link BlobItem} objects.\n     *\n     * @param delimiter - The character or string used to define the virtual hierarchy\n     * @param options - Options to list blobs operation.\n     */\n    listItemsByHierarchy(delimiter_1) {\n        return __asyncGenerator(this, arguments, function* listItemsByHierarchy_1(delimiter, options = {}) {\n            var _a, e_2, _b, _c;\n            let marker;\n            try {\n                for (var _d = true, _e = __asyncValues(this.listHierarchySegments(delimiter, marker, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {\n                    _c = _f.value;\n                    _d = false;\n                    const listBlobsHierarchySegmentResponse = _c;\n                    const segment = listBlobsHierarchySegmentResponse.segment;\n                    if (segment.blobPrefixes) {\n                        for (const prefix of segment.blobPrefixes) {\n                            yield yield __await(Object.assign({ kind: \"prefix\" }, prefix));\n                        }\n                    }\n                    for (const blob of segment.blobItems) {\n                        yield yield __await(Object.assign({ kind: \"blob\" }, blob));\n                    }\n                }\n            }\n            catch (e_2_1) { e_2 = { error: e_2_1 }; }\n            finally {\n                try {\n                    if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));\n                }\n                finally { if (e_2) throw e_2.error; }\n            }\n        });\n    }\n    /**\n     * Returns an async iterable iterator to list all the blobs by hierarchy.\n     * under the specified account.\n     *\n     * .byPage() returns an async iterable iterator to list the blobs by hierarchy in pages.\n     *\n     * Example using `for await` syntax:\n     *\n     * ```js\n     * for await (const item of containerClient.listBlobsByHierarchy(\"/\")) {\n     *   if (item.kind === \"prefix\") {\n     *     console.log(`\\tBlobPrefix: ${item.name}`);\n     *   } else {\n     *     console.log(`\\tBlobItem: name - ${item.name}`);\n     *   }\n     * }\n     * ```\n     *\n     * Example using `iter.next()`:\n     *\n     * ```js\n     * let iter = containerClient.listBlobsByHierarchy(\"/\", { prefix: \"prefix1/\" });\n     * let entity = await iter.next();\n     * while (!entity.done) {\n     *   let item = entity.value;\n     *   if (item.kind === \"prefix\") {\n     *     console.log(`\\tBlobPrefix: ${item.name}`);\n     *   } else {\n     *     console.log(`\\tBlobItem: name - ${item.name}`);\n     *   }\n     *   entity = await iter.next();\n     * }\n     * ```\n     *\n     * Example using `byPage()`:\n     *\n     * ```js\n     * console.log(\"Listing blobs by hierarchy by page\");\n     * for await (const response of containerClient.listBlobsByHierarchy(\"/\").byPage()) {\n     *   const segment = response.segment;\n     *   if (segment.blobPrefixes) {\n     *     for (const prefix of segment.blobPrefixes) {\n     *       console.log(`\\tBlobPrefix: ${prefix.name}`);\n     *     }\n     *   }\n     *   for (const blob of response.segment.blobItems) {\n     *     console.log(`\\tBlobItem: name - ${blob.name}`);\n     *   }\n     * }\n     * ```\n     *\n     * Example using paging with a max page size:\n     *\n     * ```js\n     * console.log(\"Listing blobs by hierarchy by page, specifying a prefix and a max page size\");\n     *\n     * let i = 1;\n     * for await (const response of containerClient\n     *   .listBlobsByHierarchy(\"/\", { prefix: \"prefix2/sub1/\" })\n     *   .byPage({ maxPageSize: 2 })) {\n     *   console.log(`Page ${i++}`);\n     *   const segment = response.segment;\n     *\n     *   if (segment.blobPrefixes) {\n     *     for (const prefix of segment.blobPrefixes) {\n     *       console.log(`\\tBlobPrefix: ${prefix.name}`);\n     *     }\n     *   }\n     *\n     *   for (const blob of response.segment.blobItems) {\n     *     console.log(`\\tBlobItem: name - ${blob.name}`);\n     *   }\n     * }\n     * ```\n     *\n     * @param delimiter - The character or string used to define the virtual hierarchy\n     * @param options - Options to list blobs operation.\n     */\n    listBlobsByHierarchy(delimiter, options = {}) {\n        if (delimiter === \"\") {\n            throw new RangeError(\"delimiter should contain one or more characters\");\n        }\n        const include = [];\n        if (options.includeCopy) {\n            include.push(\"copy\");\n        }\n        if (options.includeDeleted) {\n            include.push(\"deleted\");\n        }\n        if (options.includeMetadata) {\n            include.push(\"metadata\");\n        }\n        if (options.includeSnapshots) {\n            include.push(\"snapshots\");\n        }\n        if (options.includeVersions) {\n            include.push(\"versions\");\n        }\n        if (options.includeUncommitedBlobs) {\n            include.push(\"uncommittedblobs\");\n        }\n        if (options.includeTags) {\n            include.push(\"tags\");\n        }\n        if (options.includeDeletedWithVersions) {\n            include.push(\"deletedwithversions\");\n        }\n        if (options.includeImmutabilityPolicy) {\n            include.push(\"immutabilitypolicy\");\n        }\n        if (options.includeLegalHold) {\n            include.push(\"legalhold\");\n        }\n        if (options.prefix === \"\") {\n            options.prefix = undefined;\n        }\n        const updatedOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include: include } : {}));\n        // AsyncIterableIterator to iterate over blob prefixes and blobs\n        const iter = this.listItemsByHierarchy(delimiter, updatedOptions);\n        return {\n            /**\n             * The next method, part of the iteration protocol\n             */\n            async next() {\n                return iter.next();\n            },\n            /**\n             * The connection to the async iterator, part of the iteration protocol\n             */\n            [Symbol.asyncIterator]() {\n                return this;\n            },\n            /**\n             * Return an AsyncIterableIterator that works a page at a time\n             */\n            byPage: (settings = {}) => {\n                return this.listHierarchySegments(delimiter, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, updatedOptions));\n            },\n        };\n    }\n    /**\n     * The Filter Blobs operation enables callers to list blobs in the container whose tags\n     * match a given search expression.\n     *\n     * @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.\n     *                                        The given expression must evaluate to true for a blob to be returned in the results.\n     *                                        The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;\n     *                                        however, only a subset of the OData filter syntax is supported in the Blob service.\n     * @param marker - A string value that identifies the portion of\n     *                          the list of blobs to be returned with the next listing operation. The\n     *                          operation returns the continuationToken value within the response body if the\n     *                          listing operation did not return all blobs remaining to be listed\n     *                          with the current page. The continuationToken value can be used as the value for\n     *                          the marker parameter in a subsequent call to request the next page of list\n     *                          items. The marker value is opaque to the client.\n     * @param options - Options to find blobs by tags.\n     */\n    async findBlobsByTagsSegment(tagFilterSqlExpression, marker, options = {}) {\n        return tracingClient.withSpan(\"ContainerClient-findBlobsByTagsSegment\", options, async (updatedOptions) => {\n            const response = assertResponse(await this.containerContext.filterBlobs({\n                abortSignal: options.abortSignal,\n                where: tagFilterSqlExpression,\n                marker,\n                maxPageSize: options.maxPageSize,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, blobs: response.blobs.map((blob) => {\n                    var _a;\n                    let tagValue = \"\";\n                    if (((_a = blob.tags) === null || _a === void 0 ? void 0 : _a.blobTagSet.length) === 1) {\n                        tagValue = blob.tags.blobTagSet[0].value;\n                    }\n                    return Object.assign(Object.assign({}, blob), { tags: toTags(blob.tags), tagValue });\n                }) });\n            return wrappedResponse;\n        });\n    }\n    /**\n     * Returns an AsyncIterableIterator for ContainerFindBlobsByTagsSegmentResponse.\n     *\n     * @param tagFilterSqlExpression -  The where parameter enables the caller to query blobs whose tags match a given expression.\n     *                                         The given expression must evaluate to true for a blob to be returned in the results.\n     *                                         The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;\n     *                                         however, only a subset of the OData filter syntax is supported in the Blob service.\n     * @param marker - A string value that identifies the portion of\n     *                          the list of blobs to be returned with the next listing operation. The\n     *                          operation returns the continuationToken value within the response body if the\n     *                          listing operation did not return all blobs remaining to be listed\n     *                          with the current page. The continuationToken value can be used as the value for\n     *                          the marker parameter in a subsequent call to request the next page of list\n     *                          items. The marker value is opaque to the client.\n     * @param options - Options to find blobs by tags.\n     */\n    findBlobsByTagsSegments(tagFilterSqlExpression_1, marker_1) {\n        return __asyncGenerator(this, arguments, function* findBlobsByTagsSegments_1(tagFilterSqlExpression, marker, options = {}) {\n            let response;\n            if (!!marker || marker === undefined) {\n                do {\n                    response = yield __await(this.findBlobsByTagsSegment(tagFilterSqlExpression, marker, options));\n                    response.blobs = response.blobs || [];\n                    marker = response.continuationToken;\n                    yield yield __await(response);\n                } while (marker);\n            }\n        });\n    }\n    /**\n     * Returns an AsyncIterableIterator for blobs.\n     *\n     * @param tagFilterSqlExpression -  The where parameter enables the caller to query blobs whose tags match a given expression.\n     *                                         The given expression must evaluate to true for a blob to be returned in the results.\n     *                                         The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;\n     *                                         however, only a subset of the OData filter syntax is supported in the Blob service.\n     * @param options - Options to findBlobsByTagsItems.\n     */\n    findBlobsByTagsItems(tagFilterSqlExpression_1) {\n        return __asyncGenerator(this, arguments, function* findBlobsByTagsItems_1(tagFilterSqlExpression, options = {}) {\n            var _a, e_3, _b, _c;\n            let marker;\n            try {\n                for (var _d = true, _e = __asyncValues(this.findBlobsByTagsSegments(tagFilterSqlExpression, marker, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {\n                    _c = _f.value;\n                    _d = false;\n                    const segment = _c;\n                    yield __await(yield* __asyncDelegator(__asyncValues(segment.blobs)));\n                }\n            }\n            catch (e_3_1) { e_3 = { error: e_3_1 }; }\n            finally {\n                try {\n                    if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));\n                }\n                finally { if (e_3) throw e_3.error; }\n            }\n        });\n    }\n    /**\n     * Returns an async iterable iterator to find all blobs with specified tag\n     * under the specified container.\n     *\n     * .byPage() returns an async iterable iterator to list the blobs in pages.\n     *\n     * Example using `for await` syntax:\n     *\n     * ```js\n     * let i = 1;\n     * for await (const blob of containerClient.findBlobsByTags(\"tagkey='tagvalue'\")) {\n     *   console.log(`Blob ${i++}: ${blob.name}`);\n     * }\n     * ```\n     *\n     * Example using `iter.next()`:\n     *\n     * ```js\n     * let i = 1;\n     * const iter = containerClient.findBlobsByTags(\"tagkey='tagvalue'\");\n     * let blobItem = await iter.next();\n     * while (!blobItem.done) {\n     *   console.log(`Blob ${i++}: ${blobItem.value.name}`);\n     *   blobItem = await iter.next();\n     * }\n     * ```\n     *\n     * Example using `byPage()`:\n     *\n     * ```js\n     * // passing optional maxPageSize in the page settings\n     * let i = 1;\n     * for await (const response of containerClient.findBlobsByTags(\"tagkey='tagvalue'\").byPage({ maxPageSize: 20 })) {\n     *   if (response.blobs) {\n     *     for (const blob of response.blobs) {\n     *       console.log(`Blob ${i++}: ${blob.name}`);\n     *     }\n     *   }\n     * }\n     * ```\n     *\n     * Example using paging with a marker:\n     *\n     * ```js\n     * let i = 1;\n     * let iterator = containerClient.findBlobsByTags(\"tagkey='tagvalue'\").byPage({ maxPageSize: 2 });\n     * let response = (await iterator.next()).value;\n     *\n     * // Prints 2 blob names\n     * if (response.blobs) {\n     *   for (const blob of response.blobs) {\n     *     console.log(`Blob ${i++}: ${blob.name}`);\n     *   }\n     * }\n     *\n     * // Gets next marker\n     * let marker = response.continuationToken;\n     * // Passing next marker as continuationToken\n     * iterator = containerClient\n     *   .findBlobsByTags(\"tagkey='tagvalue'\")\n     *   .byPage({ continuationToken: marker, maxPageSize: 10 });\n     * response = (await iterator.next()).value;\n     *\n     * // Prints blob names\n     * if (response.blobs) {\n     *   for (const blob of response.blobs) {\n     *      console.log(`Blob ${i++}: ${blob.name}`);\n     *   }\n     * }\n     * ```\n     *\n     * @param tagFilterSqlExpression -  The where parameter enables the caller to query blobs whose tags match a given expression.\n     *                                         The given expression must evaluate to true for a blob to be returned in the results.\n     *                                         The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;\n     *                                         however, only a subset of the OData filter syntax is supported in the Blob service.\n     * @param options - Options to find blobs by tags.\n     */\n    findBlobsByTags(tagFilterSqlExpression, options = {}) {\n        // AsyncIterableIterator to iterate over blobs\n        const listSegmentOptions = Object.assign({}, options);\n        const iter = this.findBlobsByTagsItems(tagFilterSqlExpression, listSegmentOptions);\n        return {\n            /**\n             * The next method, part of the iteration protocol\n             */\n            next() {\n                return iter.next();\n            },\n            /**\n             * The connection to the async iterator, part of the iteration protocol\n             */\n            [Symbol.asyncIterator]() {\n                return this;\n            },\n            /**\n             * Return an AsyncIterableIterator that works a page at a time\n             */\n            byPage: (settings = {}) => {\n                return this.findBlobsByTagsSegments(tagFilterSqlExpression, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));\n            },\n        };\n    }\n    /**\n     * The Get Account Information operation returns the sku name and account kind\n     * for the specified account.\n     * The Get Account Information operation is available on service versions beginning\n     * with version 2018-03-28.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-account-information\n     *\n     * @param options - Options to the Service Get Account Info operation.\n     * @returns Response data for the Service Get Account Info operation.\n     */\n    async getAccountInfo(options = {}) {\n        return tracingClient.withSpan(\"ContainerClient-getAccountInfo\", options, async (updatedOptions) => {\n            return assertResponse(await this.containerContext.getAccountInfo({\n                abortSignal: options.abortSignal,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    getContainerNameFromUrl() {\n        let containerName;\n        try {\n            //  URL may look like the following\n            // \"https://myaccount.blob.core.windows.net/mycontainer?sasString\";\n            // \"https://myaccount.blob.core.windows.net/mycontainer\";\n            // IPv4/IPv6 address hosts, Endpoints - `http://127.0.0.1:10000/devstoreaccount1/containername`\n            // http://localhost:10001/devstoreaccount1/containername\n            const parsedUrl = new URL(this.url);\n            if (parsedUrl.hostname.split(\".\")[1] === \"blob\") {\n                // \"https://myaccount.blob.core.windows.net/containername\".\n                // \"https://customdomain.com/containername\".\n                // .getPath() -> /containername\n                containerName = parsedUrl.pathname.split(\"/\")[1];\n            }\n            else if (isIpEndpointStyle(parsedUrl)) {\n                // IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/containername\n                // Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/containername\n                // .getPath() -> /devstoreaccount1/containername\n                containerName = parsedUrl.pathname.split(\"/\")[2];\n            }\n            else {\n                // \"https://customdomain.com/containername\".\n                // .getPath() -> /containername\n                containerName = parsedUrl.pathname.split(\"/\")[1];\n            }\n            // decode the encoded containerName - to get all the special characters that might be present in it\n            containerName = decodeURIComponent(containerName);\n            if (!containerName) {\n                throw new Error(\"Provided containerName is invalid.\");\n            }\n            return containerName;\n        }\n        catch (error) {\n            throw new Error(\"Unable to extract containerName with provided information.\");\n        }\n    }\n    /**\n     * Only available for ContainerClient constructed with a shared key credential.\n     *\n     * Generates a Blob Container Service Shared Access Signature (SAS) URI based on the client properties\n     * and parameters passed in. The SAS is signed by the shared key credential of the client.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas\n     *\n     * @param options - Optional parameters.\n     * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.\n     */\n    generateSasUrl(options) {\n        return new Promise((resolve) => {\n            if (!(this.credential instanceof StorageSharedKeyCredential)) {\n                throw new RangeError(\"Can only generate the SAS when the client is initialized with a shared key credential\");\n            }\n            const sas = generateBlobSASQueryParameters(Object.assign({ containerName: this._containerName }, options), this.credential).toString();\n            resolve(appendToURLQuery(this.url, sas));\n        });\n    }\n    /**\n     * Only available for ContainerClient constructed with a shared key credential.\n     *\n     * Generates string to sign for a Blob Container Service Shared Access Signature (SAS) URI\n     * based on the client properties and parameters passed in. The SAS is signed by the shared key credential of the client.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas\n     *\n     * @param options - Optional parameters.\n     * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.\n     */\n    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n    generateSasStringToSign(options) {\n        if (!(this.credential instanceof StorageSharedKeyCredential)) {\n            throw new RangeError(\"Can only generate the SAS when the client is initialized with a shared key credential\");\n        }\n        return generateBlobSASQueryParametersInternal(Object.assign({ containerName: this._containerName }, options), this.credential).stringToSign;\n    }\n    /**\n     * Generates a Blob Container Service Shared Access Signature (SAS) URI based on the client properties\n     * and parameters passed in. The SAS is signed by the input user delegation key.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas\n     *\n     * @param options - Optional parameters.\n     * @param userDelegationKey -  Return value of `blobServiceClient.getUserDelegationKey()`\n     * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.\n     */\n    generateUserDelegationSasUrl(options, userDelegationKey) {\n        return new Promise((resolve) => {\n            const sas = generateBlobSASQueryParameters(Object.assign({ containerName: this._containerName }, options), userDelegationKey, this.accountName).toString();\n            resolve(appendToURLQuery(this.url, sas));\n        });\n    }\n    /**\n     * Generates string to sign for a Blob Container Service Shared Access Signature (SAS) URI\n     * based on the client properties and parameters passed in. The SAS is signed by the input user delegation key.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas\n     *\n     * @param options - Optional parameters.\n     * @param userDelegationKey -  Return value of `blobServiceClient.getUserDelegationKey()`\n     * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.\n     */\n    generateUserDelegationSasStringToSign(options, userDelegationKey) {\n        return generateBlobSASQueryParametersInternal(Object.assign({ containerName: this._containerName }, options), userDelegationKey, this.accountName).stringToSign;\n    }\n    /**\n     * Creates a BlobBatchClient object to conduct batch operations.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch\n     *\n     * @returns A new BlobBatchClient object for this container.\n     */\n    getBlobBatchClient() {\n        return new BlobBatchClient(this.url, this.pipeline);\n    }\n}\n//# sourceMappingURL=ContainerClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * This is a helper class to construct a string representing the permissions granted by an AccountSAS. Setting a value\n * to true means that any SAS which uses these permissions will grant permissions for that operation. Once all the\n * values are set, this should be serialized with toString and set as the permissions field on an\n * {@link AccountSASSignatureValues} object. It is possible to construct the permissions string without this class, but\n * the order of the permissions is particular and this class guarantees correctness.\n */\nexport class AccountSASPermissions {\n    constructor() {\n        /**\n         * Permission to read resources and list queues and tables granted.\n         */\n        this.read = false;\n        /**\n         * Permission to write resources granted.\n         */\n        this.write = false;\n        /**\n         * Permission to delete blobs and files granted.\n         */\n        this.delete = false;\n        /**\n         * Permission to delete versions granted.\n         */\n        this.deleteVersion = false;\n        /**\n         * Permission to list blob containers, blobs, shares, directories, and files granted.\n         */\n        this.list = false;\n        /**\n         * Permission to add messages, table entities, and append to blobs granted.\n         */\n        this.add = false;\n        /**\n         * Permission to create blobs and files granted.\n         */\n        this.create = false;\n        /**\n         * Permissions to update messages and table entities granted.\n         */\n        this.update = false;\n        /**\n         * Permission to get and delete messages granted.\n         */\n        this.process = false;\n        /**\n         * Specfies Tag access granted.\n         */\n        this.tag = false;\n        /**\n         * Permission to filter blobs.\n         */\n        this.filter = false;\n        /**\n         * Permission to set immutability policy.\n         */\n        this.setImmutabilityPolicy = false;\n        /**\n         * Specifies that Permanent Delete is permitted.\n         */\n        this.permanentDelete = false;\n    }\n    /**\n     * Parse initializes the AccountSASPermissions fields from a string.\n     *\n     * @param permissions -\n     */\n    static parse(permissions) {\n        const accountSASPermissions = new AccountSASPermissions();\n        for (const c of permissions) {\n            switch (c) {\n                case \"r\":\n                    accountSASPermissions.read = true;\n                    break;\n                case \"w\":\n                    accountSASPermissions.write = true;\n                    break;\n                case \"d\":\n                    accountSASPermissions.delete = true;\n                    break;\n                case \"x\":\n                    accountSASPermissions.deleteVersion = true;\n                    break;\n                case \"l\":\n                    accountSASPermissions.list = true;\n                    break;\n                case \"a\":\n                    accountSASPermissions.add = true;\n                    break;\n                case \"c\":\n                    accountSASPermissions.create = true;\n                    break;\n                case \"u\":\n                    accountSASPermissions.update = true;\n                    break;\n                case \"p\":\n                    accountSASPermissions.process = true;\n                    break;\n                case \"t\":\n                    accountSASPermissions.tag = true;\n                    break;\n                case \"f\":\n                    accountSASPermissions.filter = true;\n                    break;\n                case \"i\":\n                    accountSASPermissions.setImmutabilityPolicy = true;\n                    break;\n                case \"y\":\n                    accountSASPermissions.permanentDelete = true;\n                    break;\n                default:\n                    throw new RangeError(`Invalid permission character: ${c}`);\n            }\n        }\n        return accountSASPermissions;\n    }\n    /**\n     * Creates a {@link AccountSASPermissions} from a raw object which contains same keys as it\n     * and boolean values for them.\n     *\n     * @param permissionLike -\n     */\n    static from(permissionLike) {\n        const accountSASPermissions = new AccountSASPermissions();\n        if (permissionLike.read) {\n            accountSASPermissions.read = true;\n        }\n        if (permissionLike.write) {\n            accountSASPermissions.write = true;\n        }\n        if (permissionLike.delete) {\n            accountSASPermissions.delete = true;\n        }\n        if (permissionLike.deleteVersion) {\n            accountSASPermissions.deleteVersion = true;\n        }\n        if (permissionLike.filter) {\n            accountSASPermissions.filter = true;\n        }\n        if (permissionLike.tag) {\n            accountSASPermissions.tag = true;\n        }\n        if (permissionLike.list) {\n            accountSASPermissions.list = true;\n        }\n        if (permissionLike.add) {\n            accountSASPermissions.add = true;\n        }\n        if (permissionLike.create) {\n            accountSASPermissions.create = true;\n        }\n        if (permissionLike.update) {\n            accountSASPermissions.update = true;\n        }\n        if (permissionLike.process) {\n            accountSASPermissions.process = true;\n        }\n        if (permissionLike.setImmutabilityPolicy) {\n            accountSASPermissions.setImmutabilityPolicy = true;\n        }\n        if (permissionLike.permanentDelete) {\n            accountSASPermissions.permanentDelete = true;\n        }\n        return accountSASPermissions;\n    }\n    /**\n     * Produces the SAS permissions string for an Azure Storage account.\n     * Call this method to set AccountSASSignatureValues Permissions field.\n     *\n     * Using this method will guarantee the resource types are in\n     * an order accepted by the service.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas\n     *\n     */\n    toString() {\n        // The order of the characters should be as specified here to ensure correctness:\n        // https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas\n        // Use a string array instead of string concatenating += operator for performance\n        const permissions = [];\n        if (this.read) {\n            permissions.push(\"r\");\n        }\n        if (this.write) {\n            permissions.push(\"w\");\n        }\n        if (this.delete) {\n            permissions.push(\"d\");\n        }\n        if (this.deleteVersion) {\n            permissions.push(\"x\");\n        }\n        if (this.filter) {\n            permissions.push(\"f\");\n        }\n        if (this.tag) {\n            permissions.push(\"t\");\n        }\n        if (this.list) {\n            permissions.push(\"l\");\n        }\n        if (this.add) {\n            permissions.push(\"a\");\n        }\n        if (this.create) {\n            permissions.push(\"c\");\n        }\n        if (this.update) {\n            permissions.push(\"u\");\n        }\n        if (this.process) {\n            permissions.push(\"p\");\n        }\n        if (this.setImmutabilityPolicy) {\n            permissions.push(\"i\");\n        }\n        if (this.permanentDelete) {\n            permissions.push(\"y\");\n        }\n        return permissions.join(\"\");\n    }\n}\n//# sourceMappingURL=AccountSASPermissions.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * This is a helper class to construct a string representing the resources accessible by an AccountSAS. Setting a value\n * to true means that any SAS which uses these permissions will grant access to that resource type. Once all the\n * values are set, this should be serialized with toString and set as the resources field on an\n * {@link AccountSASSignatureValues} object. It is possible to construct the resources string without this class, but\n * the order of the resources is particular and this class guarantees correctness.\n */\nexport class AccountSASResourceTypes {\n    constructor() {\n        /**\n         * Permission to access service level APIs granted.\n         */\n        this.service = false;\n        /**\n         * Permission to access container level APIs (Blob Containers, Tables, Queues, File Shares) granted.\n         */\n        this.container = false;\n        /**\n         * Permission to access object level APIs (Blobs, Table Entities, Queue Messages, Files) granted.\n         */\n        this.object = false;\n    }\n    /**\n     * Creates an {@link AccountSASResourceTypes} from the specified resource types string. This method will throw an\n     * Error if it encounters a character that does not correspond to a valid resource type.\n     *\n     * @param resourceTypes -\n     */\n    static parse(resourceTypes) {\n        const accountSASResourceTypes = new AccountSASResourceTypes();\n        for (const c of resourceTypes) {\n            switch (c) {\n                case \"s\":\n                    accountSASResourceTypes.service = true;\n                    break;\n                case \"c\":\n                    accountSASResourceTypes.container = true;\n                    break;\n                case \"o\":\n                    accountSASResourceTypes.object = true;\n                    break;\n                default:\n                    throw new RangeError(`Invalid resource type: ${c}`);\n            }\n        }\n        return accountSASResourceTypes;\n    }\n    /**\n     * Converts the given resource types to a string.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas\n     *\n     */\n    toString() {\n        const resourceTypes = [];\n        if (this.service) {\n            resourceTypes.push(\"s\");\n        }\n        if (this.container) {\n            resourceTypes.push(\"c\");\n        }\n        if (this.object) {\n            resourceTypes.push(\"o\");\n        }\n        return resourceTypes.join(\"\");\n    }\n}\n//# sourceMappingURL=AccountSASResourceTypes.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * This is a helper class to construct a string representing the services accessible by an AccountSAS. Setting a value\n * to true means that any SAS which uses these permissions will grant access to that service. Once all the\n * values are set, this should be serialized with toString and set as the services field on an\n * {@link AccountSASSignatureValues} object. It is possible to construct the services string without this class, but\n * the order of the services is particular and this class guarantees correctness.\n */\nexport class AccountSASServices {\n    constructor() {\n        /**\n         * Permission to access blob resources granted.\n         */\n        this.blob = false;\n        /**\n         * Permission to access file resources granted.\n         */\n        this.file = false;\n        /**\n         * Permission to access queue resources granted.\n         */\n        this.queue = false;\n        /**\n         * Permission to access table resources granted.\n         */\n        this.table = false;\n    }\n    /**\n     * Creates an {@link AccountSASServices} from the specified services string. This method will throw an\n     * Error if it encounters a character that does not correspond to a valid service.\n     *\n     * @param services -\n     */\n    static parse(services) {\n        const accountSASServices = new AccountSASServices();\n        for (const c of services) {\n            switch (c) {\n                case \"b\":\n                    accountSASServices.blob = true;\n                    break;\n                case \"f\":\n                    accountSASServices.file = true;\n                    break;\n                case \"q\":\n                    accountSASServices.queue = true;\n                    break;\n                case \"t\":\n                    accountSASServices.table = true;\n                    break;\n                default:\n                    throw new RangeError(`Invalid service character: ${c}`);\n            }\n        }\n        return accountSASServices;\n    }\n    /**\n     * Converts the given services to a string.\n     *\n     */\n    toString() {\n        const services = [];\n        if (this.blob) {\n            services.push(\"b\");\n        }\n        if (this.table) {\n            services.push(\"t\");\n        }\n        if (this.queue) {\n            services.push(\"q\");\n        }\n        if (this.file) {\n            services.push(\"f\");\n        }\n        return services.join(\"\");\n    }\n}\n//# sourceMappingURL=AccountSASServices.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { AccountSASPermissions } from \"./AccountSASPermissions\";\nimport { AccountSASResourceTypes } from \"./AccountSASResourceTypes\";\nimport { AccountSASServices } from \"./AccountSASServices\";\nimport { ipRangeToString } from \"./SasIPRange\";\nimport { SASQueryParameters } from \"./SASQueryParameters\";\nimport { SERVICE_VERSION } from \"../utils/constants\";\nimport { truncatedISO8061Date } from \"../utils/utils.common\";\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Generates a {@link SASQueryParameters} object which contains all SAS query parameters needed to make an actual\n * REST request.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas\n *\n * @param accountSASSignatureValues -\n * @param sharedKeyCredential -\n */\nexport function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyCredential) {\n    return generateAccountSASQueryParametersInternal(accountSASSignatureValues, sharedKeyCredential)\n        .sasQueryParameters;\n}\nexport function generateAccountSASQueryParametersInternal(accountSASSignatureValues, sharedKeyCredential) {\n    const version = accountSASSignatureValues.version\n        ? accountSASSignatureValues.version\n        : SERVICE_VERSION;\n    if (accountSASSignatureValues.permissions &&\n        accountSASSignatureValues.permissions.setImmutabilityPolicy &&\n        version < \"2020-08-04\") {\n        throw RangeError(\"'version' must be >= '2020-08-04' when provided 'i' permission.\");\n    }\n    if (accountSASSignatureValues.permissions &&\n        accountSASSignatureValues.permissions.deleteVersion &&\n        version < \"2019-10-10\") {\n        throw RangeError(\"'version' must be >= '2019-10-10' when provided 'x' permission.\");\n    }\n    if (accountSASSignatureValues.permissions &&\n        accountSASSignatureValues.permissions.permanentDelete &&\n        version < \"2019-10-10\") {\n        throw RangeError(\"'version' must be >= '2019-10-10' when provided 'y' permission.\");\n    }\n    if (accountSASSignatureValues.permissions &&\n        accountSASSignatureValues.permissions.tag &&\n        version < \"2019-12-12\") {\n        throw RangeError(\"'version' must be >= '2019-12-12' when provided 't' permission.\");\n    }\n    if (accountSASSignatureValues.permissions &&\n        accountSASSignatureValues.permissions.filter &&\n        version < \"2019-12-12\") {\n        throw RangeError(\"'version' must be >= '2019-12-12' when provided 'f' permission.\");\n    }\n    if (accountSASSignatureValues.encryptionScope && version < \"2020-12-06\") {\n        throw RangeError(\"'version' must be >= '2020-12-06' when provided 'encryptionScope' in SAS.\");\n    }\n    const parsedPermissions = AccountSASPermissions.parse(accountSASSignatureValues.permissions.toString());\n    const parsedServices = AccountSASServices.parse(accountSASSignatureValues.services).toString();\n    const parsedResourceTypes = AccountSASResourceTypes.parse(accountSASSignatureValues.resourceTypes).toString();\n    let stringToSign;\n    if (version >= \"2020-12-06\") {\n        stringToSign = [\n            sharedKeyCredential.accountName,\n            parsedPermissions,\n            parsedServices,\n            parsedResourceTypes,\n            accountSASSignatureValues.startsOn\n                ? truncatedISO8061Date(accountSASSignatureValues.startsOn, false)\n                : \"\",\n            truncatedISO8061Date(accountSASSignatureValues.expiresOn, false),\n            accountSASSignatureValues.ipRange ? ipRangeToString(accountSASSignatureValues.ipRange) : \"\",\n            accountSASSignatureValues.protocol ? accountSASSignatureValues.protocol : \"\",\n            version,\n            accountSASSignatureValues.encryptionScope ? accountSASSignatureValues.encryptionScope : \"\",\n            \"\", // Account SAS requires an additional newline character\n        ].join(\"\\n\");\n    }\n    else {\n        stringToSign = [\n            sharedKeyCredential.accountName,\n            parsedPermissions,\n            parsedServices,\n            parsedResourceTypes,\n            accountSASSignatureValues.startsOn\n                ? truncatedISO8061Date(accountSASSignatureValues.startsOn, false)\n                : \"\",\n            truncatedISO8061Date(accountSASSignatureValues.expiresOn, false),\n            accountSASSignatureValues.ipRange ? ipRangeToString(accountSASSignatureValues.ipRange) : \"\",\n            accountSASSignatureValues.protocol ? accountSASSignatureValues.protocol : \"\",\n            version,\n            \"\", // Account SAS requires an additional newline character\n        ].join(\"\\n\");\n    }\n    const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n    return {\n        sasQueryParameters: new SASQueryParameters(version, signature, parsedPermissions.toString(), parsedServices, parsedResourceTypes, accountSASSignatureValues.protocol, accountSASSignatureValues.startsOn, accountSASSignatureValues.expiresOn, accountSASSignatureValues.ipRange, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, accountSASSignatureValues.encryptionScope),\n        stringToSign: stringToSign,\n    };\n}\n//# sourceMappingURL=AccountSASSignatureValues.js.map","import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from \"tslib\";\nimport { isTokenCredential } from \"@azure/core-auth\";\nimport { getDefaultProxySettings } from \"@azure/core-rest-pipeline\";\nimport { isNode } from \"@azure/core-util\";\nimport { newPipeline, isPipelineLike } from \"./Pipeline\";\nimport { ContainerClient } from \"./ContainerClient\";\nimport { appendToURLPath, appendToURLQuery, extractConnectionStringParts, toTags, } from \"./utils/utils.common\";\nimport { StorageSharedKeyCredential } from \"./credentials/StorageSharedKeyCredential\";\nimport { AnonymousCredential } from \"./credentials/AnonymousCredential\";\nimport { truncatedISO8061Date, assertResponse } from \"./utils/utils.common\";\nimport { tracingClient } from \"./utils/tracing\";\nimport { BlobBatchClient } from \"./BlobBatchClient\";\nimport { StorageClient } from \"./StorageClient\";\nimport { AccountSASPermissions } from \"./sas/AccountSASPermissions\";\nimport { generateAccountSASQueryParameters, generateAccountSASQueryParametersInternal, } from \"./sas/AccountSASSignatureValues\";\nimport { AccountSASServices } from \"./sas/AccountSASServices\";\n/**\n * A BlobServiceClient represents a Client to the Azure Storage Blob service allowing you\n * to manipulate blob containers.\n */\nexport class BlobServiceClient extends StorageClient {\n    /**\n     *\n     * Creates an instance of BlobServiceClient from connection string.\n     *\n     * @param connectionString - Account connection string or a SAS connection string of an Azure storage account.\n     *                                  [ Note - Account connection string can only be used in NODE.JS runtime. ]\n     *                                  Account connection string example -\n     *                                  `DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=accountKey;EndpointSuffix=core.windows.net`\n     *                                  SAS connection string example -\n     *                                  `BlobEndpoint=https://myaccount.blob.core.windows.net/;QueueEndpoint=https://myaccount.queue.core.windows.net/;FileEndpoint=https://myaccount.file.core.windows.net/;TableEndpoint=https://myaccount.table.core.windows.net/;SharedAccessSignature=sasString`\n     * @param options - Optional. Options to configure the HTTP pipeline.\n     */\n    static fromConnectionString(connectionString, \n    // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n    options) {\n        options = options || {};\n        const extractedCreds = extractConnectionStringParts(connectionString);\n        if (extractedCreds.kind === \"AccountConnString\") {\n            if (isNode) {\n                const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);\n                if (!options.proxyOptions) {\n                    options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);\n                }\n                const pipeline = newPipeline(sharedKeyCredential, options);\n                return new BlobServiceClient(extractedCreds.url, pipeline);\n            }\n            else {\n                throw new Error(\"Account connection string is only supported in Node.js environment\");\n            }\n        }\n        else if (extractedCreds.kind === \"SASConnString\") {\n            const pipeline = newPipeline(new AnonymousCredential(), options);\n            return new BlobServiceClient(extractedCreds.url + \"?\" + extractedCreds.accountSas, pipeline);\n        }\n        else {\n            throw new Error(\"Connection string must be either an Account connection string or a SAS connection string\");\n        }\n    }\n    constructor(url, credentialOrPipeline, \n    // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n    /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n    options) {\n        let pipeline;\n        if (isPipelineLike(credentialOrPipeline)) {\n            pipeline = credentialOrPipeline;\n        }\n        else if ((isNode && credentialOrPipeline instanceof StorageSharedKeyCredential) ||\n            credentialOrPipeline instanceof AnonymousCredential ||\n            isTokenCredential(credentialOrPipeline)) {\n            pipeline = newPipeline(credentialOrPipeline, options);\n        }\n        else {\n            // The second parameter is undefined. Use anonymous credential\n            pipeline = newPipeline(new AnonymousCredential(), options);\n        }\n        super(url, pipeline);\n        this.serviceContext = this.storageClientContext.service;\n    }\n    /**\n     * Creates a {@link ContainerClient} object\n     *\n     * @param containerName - A container name\n     * @returns A new ContainerClient object for the given container name.\n     *\n     * Example usage:\n     *\n     * ```js\n     * const containerClient = blobServiceClient.getContainerClient(\"<container name>\");\n     * ```\n     */\n    getContainerClient(containerName) {\n        return new ContainerClient(appendToURLPath(this.url, encodeURIComponent(containerName)), this.pipeline);\n    }\n    /**\n     * Create a Blob container. @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-container\n     *\n     * @param containerName - Name of the container to create.\n     * @param options - Options to configure Container Create operation.\n     * @returns Container creation response and the corresponding container client.\n     */\n    async createContainer(containerName, options = {}) {\n        return tracingClient.withSpan(\"BlobServiceClient-createContainer\", options, async (updatedOptions) => {\n            const containerClient = this.getContainerClient(containerName);\n            const containerCreateResponse = await containerClient.create(updatedOptions);\n            return {\n                containerClient,\n                containerCreateResponse,\n            };\n        });\n    }\n    /**\n     * Deletes a Blob container.\n     *\n     * @param containerName - Name of the container to delete.\n     * @param options - Options to configure Container Delete operation.\n     * @returns Container deletion response.\n     */\n    async deleteContainer(containerName, options = {}) {\n        return tracingClient.withSpan(\"BlobServiceClient-deleteContainer\", options, async (updatedOptions) => {\n            const containerClient = this.getContainerClient(containerName);\n            return containerClient.delete(updatedOptions);\n        });\n    }\n    /**\n     * Restore a previously deleted Blob container.\n     * This API is only functional if Container Soft Delete is enabled for the storage account associated with the container.\n     *\n     * @param deletedContainerName - Name of the previously deleted container.\n     * @param deletedContainerVersion - Version of the previously deleted container, used to uniquely identify the deleted container.\n     * @param options - Options to configure Container Restore operation.\n     * @returns Container deletion response.\n     */\n    async undeleteContainer(deletedContainerName, deletedContainerVersion, options = {}) {\n        return tracingClient.withSpan(\"BlobServiceClient-undeleteContainer\", options, async (updatedOptions) => {\n            const containerClient = this.getContainerClient(options.destinationContainerName || deletedContainerName);\n            // Hack to access a protected member.\n            const containerContext = containerClient[\"storageClientContext\"].container;\n            const containerUndeleteResponse = assertResponse(await containerContext.restore({\n                deletedContainerName,\n                deletedContainerVersion,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n            return { containerClient, containerUndeleteResponse };\n        });\n    }\n    /**\n     * Rename an existing Blob Container.\n     *\n     * @param sourceContainerName - The name of the source container.\n     * @param destinationContainerName - The new name of the container.\n     * @param options - Options to configure Container Rename operation.\n     */\n    /* eslint-disable-next-line @typescript-eslint/ban-ts-comment */\n    // @ts-ignore Need to hide this interface for now. Make it public and turn on the live tests for it when the service is ready.\n    async renameContainer(sourceContainerName, destinationContainerName, options = {}) {\n        return tracingClient.withSpan(\"BlobServiceClient-renameContainer\", options, async (updatedOptions) => {\n            var _a;\n            const containerClient = this.getContainerClient(destinationContainerName);\n            // Hack to access a protected member.\n            const containerContext = containerClient[\"storageClientContext\"].container;\n            const containerRenameResponse = assertResponse(await containerContext.rename(sourceContainerName, Object.assign(Object.assign({}, updatedOptions), { sourceLeaseId: (_a = options.sourceCondition) === null || _a === void 0 ? void 0 : _a.leaseId })));\n            return { containerClient, containerRenameResponse };\n        });\n    }\n    /**\n     * Gets the properties of a storage account’s Blob service, including properties\n     * for Storage Analytics and CORS (Cross-Origin Resource Sharing) rules.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-service-properties\n     *\n     * @param options - Options to the Service Get Properties operation.\n     * @returns Response data for the Service Get Properties operation.\n     */\n    async getProperties(options = {}) {\n        return tracingClient.withSpan(\"BlobServiceClient-getProperties\", options, async (updatedOptions) => {\n            return assertResponse(await this.serviceContext.getProperties({\n                abortSignal: options.abortSignal,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Sets properties for a storage account’s Blob service endpoint, including properties\n     * for Storage Analytics, CORS (Cross-Origin Resource Sharing) rules and soft delete settings.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-service-properties\n     *\n     * @param properties -\n     * @param options - Options to the Service Set Properties operation.\n     * @returns Response data for the Service Set Properties operation.\n     */\n    async setProperties(properties, options = {}) {\n        return tracingClient.withSpan(\"BlobServiceClient-setProperties\", options, async (updatedOptions) => {\n            return assertResponse(await this.serviceContext.setProperties(properties, {\n                abortSignal: options.abortSignal,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Retrieves statistics related to replication for the Blob service. It is only\n     * available on the secondary location endpoint when read-access geo-redundant\n     * replication is enabled for the storage account.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-service-stats\n     *\n     * @param options - Options to the Service Get Statistics operation.\n     * @returns Response data for the Service Get Statistics operation.\n     */\n    async getStatistics(options = {}) {\n        return tracingClient.withSpan(\"BlobServiceClient-getStatistics\", options, async (updatedOptions) => {\n            return assertResponse(await this.serviceContext.getStatistics({\n                abortSignal: options.abortSignal,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * The Get Account Information operation returns the sku name and account kind\n     * for the specified account.\n     * The Get Account Information operation is available on service versions beginning\n     * with version 2018-03-28.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-account-information\n     *\n     * @param options - Options to the Service Get Account Info operation.\n     * @returns Response data for the Service Get Account Info operation.\n     */\n    async getAccountInfo(options = {}) {\n        return tracingClient.withSpan(\"BlobServiceClient-getAccountInfo\", options, async (updatedOptions) => {\n            return assertResponse(await this.serviceContext.getAccountInfo({\n                abortSignal: options.abortSignal,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n        });\n    }\n    /**\n     * Returns a list of the containers under the specified account.\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/list-containers2\n     *\n     * @param marker - A string value that identifies the portion of\n     *                        the list of containers to be returned with the next listing operation. The\n     *                        operation returns the continuationToken value within the response body if the\n     *                        listing operation did not return all containers remaining to be listed\n     *                        with the current page. The continuationToken value can be used as the value for\n     *                        the marker parameter in a subsequent call to request the next page of list\n     *                        items. The marker value is opaque to the client.\n     * @param options - Options to the Service List Container Segment operation.\n     * @returns Response data for the Service List Container Segment operation.\n     */\n    async listContainersSegment(marker, options = {}) {\n        return tracingClient.withSpan(\"BlobServiceClient-listContainersSegment\", options, async (updatedOptions) => {\n            return assertResponse(await this.serviceContext.listContainersSegment(Object.assign(Object.assign({ abortSignal: options.abortSignal, marker }, options), { include: typeof options.include === \"string\" ? [options.include] : options.include, tracingOptions: updatedOptions.tracingOptions })));\n        });\n    }\n    /**\n     * The Filter Blobs operation enables callers to list blobs across all containers whose tags\n     * match a given search expression. Filter blobs searches across all containers within a\n     * storage account but can be scoped within the expression to a single container.\n     *\n     * @param tagFilterSqlExpression - The where parameter enables the caller to query blobs whose tags match a given expression.\n     *                                        The given expression must evaluate to true for a blob to be returned in the results.\n     *                                        The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;\n     *                                        however, only a subset of the OData filter syntax is supported in the Blob service.\n     * @param marker - A string value that identifies the portion of\n     *                          the list of blobs to be returned with the next listing operation. The\n     *                          operation returns the continuationToken value within the response body if the\n     *                          listing operation did not return all blobs remaining to be listed\n     *                          with the current page. The continuationToken value can be used as the value for\n     *                          the marker parameter in a subsequent call to request the next page of list\n     *                          items. The marker value is opaque to the client.\n     * @param options - Options to find blobs by tags.\n     */\n    async findBlobsByTagsSegment(tagFilterSqlExpression, marker, options = {}) {\n        return tracingClient.withSpan(\"BlobServiceClient-findBlobsByTagsSegment\", options, async (updatedOptions) => {\n            const response = assertResponse(await this.serviceContext.filterBlobs({\n                abortSignal: options.abortSignal,\n                where: tagFilterSqlExpression,\n                marker,\n                maxPageSize: options.maxPageSize,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, blobs: response.blobs.map((blob) => {\n                    var _a;\n                    let tagValue = \"\";\n                    if (((_a = blob.tags) === null || _a === void 0 ? void 0 : _a.blobTagSet.length) === 1) {\n                        tagValue = blob.tags.blobTagSet[0].value;\n                    }\n                    return Object.assign(Object.assign({}, blob), { tags: toTags(blob.tags), tagValue });\n                }) });\n            return wrappedResponse;\n        });\n    }\n    /**\n     * Returns an AsyncIterableIterator for ServiceFindBlobsByTagsSegmentResponse.\n     *\n     * @param tagFilterSqlExpression -  The where parameter enables the caller to query blobs whose tags match a given expression.\n     *                                         The given expression must evaluate to true for a blob to be returned in the results.\n     *                                         The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;\n     *                                         however, only a subset of the OData filter syntax is supported in the Blob service.\n     * @param marker - A string value that identifies the portion of\n     *                          the list of blobs to be returned with the next listing operation. The\n     *                          operation returns the continuationToken value within the response body if the\n     *                          listing operation did not return all blobs remaining to be listed\n     *                          with the current page. The continuationToken value can be used as the value for\n     *                          the marker parameter in a subsequent call to request the next page of list\n     *                          items. The marker value is opaque to the client.\n     * @param options - Options to find blobs by tags.\n     */\n    findBlobsByTagsSegments(tagFilterSqlExpression_1, marker_1) {\n        return __asyncGenerator(this, arguments, function* findBlobsByTagsSegments_1(tagFilterSqlExpression, marker, options = {}) {\n            let response;\n            if (!!marker || marker === undefined) {\n                do {\n                    response = yield __await(this.findBlobsByTagsSegment(tagFilterSqlExpression, marker, options));\n                    response.blobs = response.blobs || [];\n                    marker = response.continuationToken;\n                    yield yield __await(response);\n                } while (marker);\n            }\n        });\n    }\n    /**\n     * Returns an AsyncIterableIterator for blobs.\n     *\n     * @param tagFilterSqlExpression -  The where parameter enables the caller to query blobs whose tags match a given expression.\n     *                                         The given expression must evaluate to true for a blob to be returned in the results.\n     *                                         The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;\n     *                                         however, only a subset of the OData filter syntax is supported in the Blob service.\n     * @param options - Options to findBlobsByTagsItems.\n     */\n    findBlobsByTagsItems(tagFilterSqlExpression_1) {\n        return __asyncGenerator(this, arguments, function* findBlobsByTagsItems_1(tagFilterSqlExpression, options = {}) {\n            var _a, e_1, _b, _c;\n            let marker;\n            try {\n                for (var _d = true, _e = __asyncValues(this.findBlobsByTagsSegments(tagFilterSqlExpression, marker, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {\n                    _c = _f.value;\n                    _d = false;\n                    const segment = _c;\n                    yield __await(yield* __asyncDelegator(__asyncValues(segment.blobs)));\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n        });\n    }\n    /**\n     * Returns an async iterable iterator to find all blobs with specified tag\n     * under the specified account.\n     *\n     * .byPage() returns an async iterable iterator to list the blobs in pages.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-service-properties\n     *\n     * Example using `for await` syntax:\n     *\n     * ```js\n     * let i = 1;\n     * for await (const blob of blobServiceClient.findBlobsByTags(\"tagkey='tagvalue'\")) {\n     *   console.log(`Blob ${i++}: ${container.name}`);\n     * }\n     * ```\n     *\n     * Example using `iter.next()`:\n     *\n     * ```js\n     * let i = 1;\n     * const iter = blobServiceClient.findBlobsByTags(\"tagkey='tagvalue'\");\n     * let blobItem = await iter.next();\n     * while (!blobItem.done) {\n     *   console.log(`Blob ${i++}: ${blobItem.value.name}`);\n     *   blobItem = await iter.next();\n     * }\n     * ```\n     *\n     * Example using `byPage()`:\n     *\n     * ```js\n     * // passing optional maxPageSize in the page settings\n     * let i = 1;\n     * for await (const response of blobServiceClient.findBlobsByTags(\"tagkey='tagvalue'\").byPage({ maxPageSize: 20 })) {\n     *   if (response.blobs) {\n     *     for (const blob of response.blobs) {\n     *       console.log(`Blob ${i++}: ${blob.name}`);\n     *     }\n     *   }\n     * }\n     * ```\n     *\n     * Example using paging with a marker:\n     *\n     * ```js\n     * let i = 1;\n     * let iterator = blobServiceClient.findBlobsByTags(\"tagkey='tagvalue'\").byPage({ maxPageSize: 2 });\n     * let response = (await iterator.next()).value;\n     *\n     * // Prints 2 blob names\n     * if (response.blobs) {\n     *   for (const blob of response.blobs) {\n     *     console.log(`Blob ${i++}: ${blob.name}`);\n     *   }\n     * }\n     *\n     * // Gets next marker\n     * let marker = response.continuationToken;\n     * // Passing next marker as continuationToken\n     * iterator = blobServiceClient\n     *   .findBlobsByTags(\"tagkey='tagvalue'\")\n     *   .byPage({ continuationToken: marker, maxPageSize: 10 });\n     * response = (await iterator.next()).value;\n     *\n     * // Prints blob names\n     * if (response.blobs) {\n     *   for (const blob of response.blobs) {\n     *      console.log(`Blob ${i++}: ${blob.name}`);\n     *   }\n     * }\n     * ```\n     *\n     * @param tagFilterSqlExpression -  The where parameter enables the caller to query blobs whose tags match a given expression.\n     *                                         The given expression must evaluate to true for a blob to be returned in the results.\n     *                                         The[OData - ABNF] filter syntax rule defines the formal grammar for the value of the where query parameter;\n     *                                         however, only a subset of the OData filter syntax is supported in the Blob service.\n     * @param options - Options to find blobs by tags.\n     */\n    findBlobsByTags(tagFilterSqlExpression, options = {}) {\n        // AsyncIterableIterator to iterate over blobs\n        const listSegmentOptions = Object.assign({}, options);\n        const iter = this.findBlobsByTagsItems(tagFilterSqlExpression, listSegmentOptions);\n        return {\n            /**\n             * The next method, part of the iteration protocol\n             */\n            next() {\n                return iter.next();\n            },\n            /**\n             * The connection to the async iterator, part of the iteration protocol\n             */\n            [Symbol.asyncIterator]() {\n                return this;\n            },\n            /**\n             * Return an AsyncIterableIterator that works a page at a time\n             */\n            byPage: (settings = {}) => {\n                return this.findBlobsByTagsSegments(tagFilterSqlExpression, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));\n            },\n        };\n    }\n    /**\n     * Returns an AsyncIterableIterator for ServiceListContainersSegmentResponses\n     *\n     * @param marker - A string value that identifies the portion of\n     *                        the list of containers to be returned with the next listing operation. The\n     *                        operation returns the continuationToken value within the response body if the\n     *                        listing operation did not return all containers remaining to be listed\n     *                        with the current page. The continuationToken value can be used as the value for\n     *                        the marker parameter in a subsequent call to request the next page of list\n     *                        items. The marker value is opaque to the client.\n     * @param options - Options to list containers operation.\n     */\n    listSegments(marker_1) {\n        return __asyncGenerator(this, arguments, function* listSegments_1(marker, options = {}) {\n            let listContainersSegmentResponse;\n            if (!!marker || marker === undefined) {\n                do {\n                    listContainersSegmentResponse = yield __await(this.listContainersSegment(marker, options));\n                    listContainersSegmentResponse.containerItems =\n                        listContainersSegmentResponse.containerItems || [];\n                    marker = listContainersSegmentResponse.continuationToken;\n                    yield yield __await(yield __await(listContainersSegmentResponse));\n                } while (marker);\n            }\n        });\n    }\n    /**\n     * Returns an AsyncIterableIterator for Container Items\n     *\n     * @param options - Options to list containers operation.\n     */\n    listItems() {\n        return __asyncGenerator(this, arguments, function* listItems_1(options = {}) {\n            var _a, e_2, _b, _c;\n            let marker;\n            try {\n                for (var _d = true, _e = __asyncValues(this.listSegments(marker, options)), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {\n                    _c = _f.value;\n                    _d = false;\n                    const segment = _c;\n                    yield __await(yield* __asyncDelegator(__asyncValues(segment.containerItems)));\n                }\n            }\n            catch (e_2_1) { e_2 = { error: e_2_1 }; }\n            finally {\n                try {\n                    if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));\n                }\n                finally { if (e_2) throw e_2.error; }\n            }\n        });\n    }\n    /**\n     * Returns an async iterable iterator to list all the containers\n     * under the specified account.\n     *\n     * .byPage() returns an async iterable iterator to list the containers in pages.\n     *\n     * Example using `for await` syntax:\n     *\n     * ```js\n     * let i = 1;\n     * for await (const container of blobServiceClient.listContainers()) {\n     *   console.log(`Container ${i++}: ${container.name}`);\n     * }\n     * ```\n     *\n     * Example using `iter.next()`:\n     *\n     * ```js\n     * let i = 1;\n     * const iter = blobServiceClient.listContainers();\n     * let containerItem = await iter.next();\n     * while (!containerItem.done) {\n     *   console.log(`Container ${i++}: ${containerItem.value.name}`);\n     *   containerItem = await iter.next();\n     * }\n     * ```\n     *\n     * Example using `byPage()`:\n     *\n     * ```js\n     * // passing optional maxPageSize in the page settings\n     * let i = 1;\n     * for await (const response of blobServiceClient.listContainers().byPage({ maxPageSize: 20 })) {\n     *   if (response.containerItems) {\n     *     for (const container of response.containerItems) {\n     *       console.log(`Container ${i++}: ${container.name}`);\n     *     }\n     *   }\n     * }\n     * ```\n     *\n     * Example using paging with a marker:\n     *\n     * ```js\n     * let i = 1;\n     * let iterator = blobServiceClient.listContainers().byPage({ maxPageSize: 2 });\n     * let response = (await iterator.next()).value;\n     *\n     * // Prints 2 container names\n     * if (response.containerItems) {\n     *   for (const container of response.containerItems) {\n     *     console.log(`Container ${i++}: ${container.name}`);\n     *   }\n     * }\n     *\n     * // Gets next marker\n     * let marker = response.continuationToken;\n     * // Passing next marker as continuationToken\n     * iterator = blobServiceClient\n     *   .listContainers()\n     *   .byPage({ continuationToken: marker, maxPageSize: 10 });\n     * response = (await iterator.next()).value;\n     *\n     * // Prints 10 container names\n     * if (response.containerItems) {\n     *   for (const container of response.containerItems) {\n     *      console.log(`Container ${i++}: ${container.name}`);\n     *   }\n     * }\n     * ```\n     *\n     * @param options - Options to list containers.\n     * @returns An asyncIterableIterator that supports paging.\n     */\n    listContainers(options = {}) {\n        if (options.prefix === \"\") {\n            options.prefix = undefined;\n        }\n        const include = [];\n        if (options.includeDeleted) {\n            include.push(\"deleted\");\n        }\n        if (options.includeMetadata) {\n            include.push(\"metadata\");\n        }\n        if (options.includeSystem) {\n            include.push(\"system\");\n        }\n        // AsyncIterableIterator to iterate over containers\n        const listSegmentOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include } : {}));\n        const iter = this.listItems(listSegmentOptions);\n        return {\n            /**\n             * The next method, part of the iteration protocol\n             */\n            next() {\n                return iter.next();\n            },\n            /**\n             * The connection to the async iterator, part of the iteration protocol\n             */\n            [Symbol.asyncIterator]() {\n                return this;\n            },\n            /**\n             * Return an AsyncIterableIterator that works a page at a time\n             */\n            byPage: (settings = {}) => {\n                return this.listSegments(settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));\n            },\n        };\n    }\n    /**\n     * ONLY AVAILABLE WHEN USING BEARER TOKEN AUTHENTICATION (TokenCredential).\n     *\n     * Retrieves a user delegation key for the Blob service. This is only a valid operation when using\n     * bearer token authentication.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-user-delegation-key\n     *\n     * @param startsOn -      The start time for the user delegation SAS. Must be within 7 days of the current time\n     * @param expiresOn -     The end time for the user delegation SAS. Must be within 7 days of the current time\n     */\n    async getUserDelegationKey(startsOn, expiresOn, options = {}) {\n        return tracingClient.withSpan(\"BlobServiceClient-getUserDelegationKey\", options, async (updatedOptions) => {\n            const response = assertResponse(await this.serviceContext.getUserDelegationKey({\n                startsOn: truncatedISO8061Date(startsOn, false),\n                expiresOn: truncatedISO8061Date(expiresOn, false),\n            }, {\n                abortSignal: options.abortSignal,\n                tracingOptions: updatedOptions.tracingOptions,\n            }));\n            const userDelegationKey = {\n                signedObjectId: response.signedObjectId,\n                signedTenantId: response.signedTenantId,\n                signedStartsOn: new Date(response.signedStartsOn),\n                signedExpiresOn: new Date(response.signedExpiresOn),\n                signedService: response.signedService,\n                signedVersion: response.signedVersion,\n                value: response.value,\n            };\n            const res = Object.assign({ _response: response._response, requestId: response.requestId, clientRequestId: response.clientRequestId, version: response.version, date: response.date, errorCode: response.errorCode }, userDelegationKey);\n            return res;\n        });\n    }\n    /**\n     * Creates a BlobBatchClient object to conduct batch operations.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch\n     *\n     * @returns A new BlobBatchClient object for this service.\n     */\n    getBlobBatchClient() {\n        return new BlobBatchClient(this.url, this.pipeline);\n    }\n    /**\n     * Only available for BlobServiceClient constructed with a shared key credential.\n     *\n     * Generates a Blob account Shared Access Signature (SAS) URI based on the client properties\n     * and parameters passed in. The SAS is signed by the shared key credential of the client.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-account-sas\n     *\n     * @param expiresOn - Optional. The time at which the shared access signature becomes invalid. Default to an hour later if not provided.\n     * @param permissions - Specifies the list of permissions to be associated with the SAS.\n     * @param resourceTypes - Specifies the resource types associated with the shared access signature.\n     * @param options - Optional parameters.\n     * @returns An account SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.\n     */\n    generateAccountSasUrl(expiresOn, permissions = AccountSASPermissions.parse(\"r\"), resourceTypes = \"sco\", options = {}) {\n        if (!(this.credential instanceof StorageSharedKeyCredential)) {\n            throw RangeError(\"Can only generate the account SAS when the client is initialized with a shared key credential\");\n        }\n        if (expiresOn === undefined) {\n            const now = new Date();\n            expiresOn = new Date(now.getTime() + 3600 * 1000);\n        }\n        const sas = generateAccountSASQueryParameters(Object.assign({ permissions,\n            expiresOn,\n            resourceTypes, services: AccountSASServices.parse(\"b\").toString() }, options), this.credential).toString();\n        return appendToURLQuery(this.url, sas);\n    }\n    /**\n     * Only available for BlobServiceClient constructed with a shared key credential.\n     *\n     * Generates string to sign for a Blob account Shared Access Signature (SAS) URI based on\n     * the client properties and parameters passed in. The SAS is signed by the shared key credential of the client.\n     *\n     * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-account-sas\n     *\n     * @param expiresOn - Optional. The time at which the shared access signature becomes invalid. Default to an hour later if not provided.\n     * @param permissions - Specifies the list of permissions to be associated with the SAS.\n     * @param resourceTypes - Specifies the resource types associated with the shared access signature.\n     * @param options - Optional parameters.\n     * @returns An account SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.\n     */\n    generateSasStringToSign(expiresOn, permissions = AccountSASPermissions.parse(\"r\"), resourceTypes = \"sco\", options = {}) {\n        if (!(this.credential instanceof StorageSharedKeyCredential)) {\n            throw RangeError(\"Can only generate the account SAS when the client is initialized with a shared key credential\");\n        }\n        if (expiresOn === undefined) {\n            const now = new Date();\n            expiresOn = new Date(now.getTime() + 3600 * 1000);\n        }\n        return generateAccountSASQueryParametersInternal(Object.assign({ permissions,\n            expiresOn,\n            resourceTypes, services: AccountSASServices.parse(\"b\").toString() }, options), this.credential).stringToSign;\n    }\n}\n//# sourceMappingURL=BlobServiceClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { StorageRetryPolicy, StorageRetryPolicyType } from \"./policies/StorageRetryPolicy\";\nexport { StorageRetryPolicyType, StorageRetryPolicy };\n/**\n * StorageRetryPolicyFactory is a factory class helping generating {@link StorageRetryPolicy} objects.\n */\nexport class StorageRetryPolicyFactory {\n    /**\n     * Creates an instance of StorageRetryPolicyFactory.\n     * @param retryOptions -\n     */\n    constructor(retryOptions) {\n        this.retryOptions = retryOptions;\n    }\n    /**\n     * Creates a StorageRetryPolicy object.\n     *\n     * @param nextPolicy -\n     * @param options -\n     */\n    create(nextPolicy, options) {\n        return new StorageRetryPolicy(nextPolicy, options, this.retryOptions);\n    }\n}\n//# sourceMappingURL=StorageRetryPolicyFactory.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createDefaultHttpClient } from \"@azure/core-rest-pipeline\";\nlet _defaultHttpClient;\nexport function getCachedDefaultHttpClient() {\n    if (!_defaultHttpClient) {\n        _defaultHttpClient = createDefaultHttpClient();\n    }\n    return _defaultHttpClient;\n}\n//# sourceMappingURL=cache.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { isNode } from \"@azure/core-util\";\nimport { HeaderConstants, URLConstants } from \"../utils/constants\";\nimport { setURLParameter } from \"../utils/utils.common\";\n/**\n * The programmatic identifier of the StorageBrowserPolicy.\n */\nexport const storageBrowserPolicyName = \"storageBrowserPolicy\";\n/**\n * storageBrowserPolicy is a policy used to prevent browsers from caching requests\n * and to remove cookies and explicit content-length headers.\n */\nexport function storageBrowserPolicy() {\n    return {\n        name: storageBrowserPolicyName,\n        async sendRequest(request, next) {\n            if (isNode) {\n                return next(request);\n            }\n            if (request.method === \"GET\" || request.method === \"HEAD\") {\n                request.url = setURLParameter(request.url, URLConstants.Parameters.FORCE_BROWSER_NO_CACHE, new Date().getTime().toString());\n            }\n            request.headers.delete(HeaderConstants.COOKIE);\n            // According to XHR standards, content-length should be fully controlled by browsers\n            request.headers.delete(HeaderConstants.CONTENT_LENGTH);\n            return next(request);\n        },\n    };\n}\n//# sourceMappingURL=StorageBrowserPolicyV2.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { AbortError } from \"@azure/abort-controller\";\nimport { isRestError, RestError } from \"@azure/core-rest-pipeline\";\nimport { getErrorMessage } from \"@azure/core-util\";\nimport { URLConstants } from \"../utils/constants\";\nimport { delay, setURLHost, setURLParameter } from \"../utils/utils.common\";\nimport { logger } from \"../log\";\n/**\n * Name of the {@link storageRetryPolicy}\n */\nexport const storageRetryPolicyName = \"storageRetryPolicy\";\n/**\n * RetryPolicy types.\n */\nexport var StorageRetryPolicyType;\n(function (StorageRetryPolicyType) {\n    /**\n     * Exponential retry. Retry time delay grows exponentially.\n     */\n    StorageRetryPolicyType[StorageRetryPolicyType[\"EXPONENTIAL\"] = 0] = \"EXPONENTIAL\";\n    /**\n     * Linear retry. Retry time delay grows linearly.\n     */\n    StorageRetryPolicyType[StorageRetryPolicyType[\"FIXED\"] = 1] = \"FIXED\";\n})(StorageRetryPolicyType || (StorageRetryPolicyType = {}));\n// Default values of StorageRetryOptions\nconst DEFAULT_RETRY_OPTIONS = {\n    maxRetryDelayInMs: 120 * 1000,\n    maxTries: 4,\n    retryDelayInMs: 4 * 1000,\n    retryPolicyType: StorageRetryPolicyType.EXPONENTIAL,\n    secondaryHost: \"\",\n    tryTimeoutInMs: undefined, // Use server side default timeout strategy\n};\nconst retriableErrors = [\n    \"ETIMEDOUT\",\n    \"ESOCKETTIMEDOUT\",\n    \"ECONNREFUSED\",\n    \"ECONNRESET\",\n    \"ENOENT\",\n    \"ENOTFOUND\",\n    \"TIMEOUT\",\n    \"EPIPE\",\n    \"REQUEST_SEND_ERROR\",\n];\nconst RETRY_ABORT_ERROR = new AbortError(\"The operation was aborted.\");\n/**\n * Retry policy with exponential retry and linear retry implemented.\n */\nexport function storageRetryPolicy(options = {}) {\n    var _a, _b, _c, _d, _e, _f;\n    const retryPolicyType = (_a = options.retryPolicyType) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_OPTIONS.retryPolicyType;\n    const maxTries = (_b = options.maxTries) !== null && _b !== void 0 ? _b : DEFAULT_RETRY_OPTIONS.maxTries;\n    const retryDelayInMs = (_c = options.retryDelayInMs) !== null && _c !== void 0 ? _c : DEFAULT_RETRY_OPTIONS.retryDelayInMs;\n    const maxRetryDelayInMs = (_d = options.maxRetryDelayInMs) !== null && _d !== void 0 ? _d : DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs;\n    const secondaryHost = (_e = options.secondaryHost) !== null && _e !== void 0 ? _e : DEFAULT_RETRY_OPTIONS.secondaryHost;\n    const tryTimeoutInMs = (_f = options.tryTimeoutInMs) !== null && _f !== void 0 ? _f : DEFAULT_RETRY_OPTIONS.tryTimeoutInMs;\n    function shouldRetry({ isPrimaryRetry, attempt, response, error, }) {\n        var _a, _b;\n        if (attempt >= maxTries) {\n            logger.info(`RetryPolicy: Attempt(s) ${attempt} >= maxTries ${maxTries}, no further try.`);\n            return false;\n        }\n        if (error) {\n            for (const retriableError of retriableErrors) {\n                if (error.name.toUpperCase().includes(retriableError) ||\n                    error.message.toUpperCase().includes(retriableError) ||\n                    (error.code && error.code.toString().toUpperCase() === retriableError)) {\n                    logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);\n                    return true;\n                }\n            }\n            if ((error === null || error === void 0 ? void 0 : error.code) === \"PARSE_ERROR\" &&\n                (error === null || error === void 0 ? void 0 : error.message.startsWith(`Error \"Error: Unclosed root tag`))) {\n                logger.info(\"RetryPolicy: Incomplete XML response likely due to service timeout, will retry.\");\n                return true;\n            }\n        }\n        // If attempt was against the secondary & it returned a StatusNotFound (404), then\n        // the resource was not found. This may be due to replication delay. So, in this\n        // case, we'll never try the secondary again for this operation.\n        if (response || error) {\n            const statusCode = (_b = (_a = response === null || response === void 0 ? void 0 : response.status) !== null && _a !== void 0 ? _a : error === null || error === void 0 ? void 0 : error.statusCode) !== null && _b !== void 0 ? _b : 0;\n            if (!isPrimaryRetry && statusCode === 404) {\n                logger.info(`RetryPolicy: Secondary access with 404, will retry.`);\n                return true;\n            }\n            // Server internal error or server timeout\n            if (statusCode === 503 || statusCode === 500) {\n                logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);\n                return true;\n            }\n        }\n        // [Copy source error code] Feature is pending on service side, skip retry on copy source error for now.\n        // if (response) {\n        //   // Retry select Copy Source Error Codes.\n        //   if (response?.status >= 400) {\n        //     const copySourceError = response.headers.get(HeaderConstants.X_MS_CopySourceErrorCode);\n        //     if (copySourceError !== undefined) {\n        //       switch (copySourceError) {\n        //         case \"InternalError\":\n        //         case \"OperationTimedOut\":\n        //         case \"ServerBusy\":\n        //           return true;\n        //       }\n        //     }\n        //   }\n        // }\n        return false;\n    }\n    function calculateDelay(isPrimaryRetry, attempt) {\n        let delayTimeInMs = 0;\n        if (isPrimaryRetry) {\n            switch (retryPolicyType) {\n                case StorageRetryPolicyType.EXPONENTIAL:\n                    delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * retryDelayInMs, maxRetryDelayInMs);\n                    break;\n                case StorageRetryPolicyType.FIXED:\n                    delayTimeInMs = retryDelayInMs;\n                    break;\n            }\n        }\n        else {\n            delayTimeInMs = Math.random() * 1000;\n        }\n        logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);\n        return delayTimeInMs;\n    }\n    return {\n        name: storageRetryPolicyName,\n        async sendRequest(request, next) {\n            // Set the server-side timeout query parameter \"timeout=[seconds]\"\n            if (tryTimeoutInMs) {\n                request.url = setURLParameter(request.url, URLConstants.Parameters.TIMEOUT, String(Math.floor(tryTimeoutInMs / 1000)));\n            }\n            const primaryUrl = request.url;\n            const secondaryUrl = secondaryHost ? setURLHost(request.url, secondaryHost) : undefined;\n            let secondaryHas404 = false;\n            let attempt = 1;\n            let retryAgain = true;\n            let response;\n            let error;\n            while (retryAgain) {\n                const isPrimaryRetry = secondaryHas404 ||\n                    !secondaryUrl ||\n                    ![\"GET\", \"HEAD\", \"OPTIONS\"].includes(request.method) ||\n                    attempt % 2 === 1;\n                request.url = isPrimaryRetry ? primaryUrl : secondaryUrl;\n                response = undefined;\n                error = undefined;\n                try {\n                    logger.info(`RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? \"Primary\" : \"Secondary\"}`);\n                    response = await next(request);\n                    secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);\n                }\n                catch (e) {\n                    if (isRestError(e)) {\n                        logger.error(`RetryPolicy: Caught error, message: ${e.message}, code: ${e.code}`);\n                        error = e;\n                    }\n                    else {\n                        logger.error(`RetryPolicy: Caught error, message: ${getErrorMessage(e)}`);\n                        throw e;\n                    }\n                }\n                retryAgain = shouldRetry({ isPrimaryRetry, attempt, response, error });\n                if (retryAgain) {\n                    await delay(calculateDelay(isPrimaryRetry, attempt), request.abortSignal, RETRY_ABORT_ERROR);\n                }\n                attempt++;\n            }\n            if (response) {\n                return response;\n            }\n            throw error !== null && error !== void 0 ? error : new RestError(\"RetryPolicy failed without known error.\");\n        },\n    };\n}\n//# sourceMappingURL=StorageRetryPolicyV2.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { BaseRequestPolicy } from \"./RequestPolicy\";\nimport { isNode } from \"@azure/core-util\";\nimport { HeaderConstants, URLConstants } from \"../utils/constants\";\nimport { setURLParameter } from \"../utils/utils.common\";\n/**\n * StorageBrowserPolicy will handle differences between Node.js and browser runtime, including:\n *\n * 1. Browsers cache GET/HEAD requests by adding conditional headers such as 'IF_MODIFIED_SINCE'.\n * StorageBrowserPolicy is a policy used to add a timestamp query to GET/HEAD request URL\n * thus avoid the browser cache.\n *\n * 2. Remove cookie header for security\n *\n * 3. Remove content-length header to avoid browsers warning\n */\nexport class StorageBrowserPolicy extends BaseRequestPolicy {\n    /**\n     * Creates an instance of StorageBrowserPolicy.\n     * @param nextPolicy -\n     * @param options -\n     */\n    // The base class has a protected constructor. Adding a public one to enable constructing of this class.\n    /* eslint-disable-next-line @typescript-eslint/no-useless-constructor*/\n    constructor(nextPolicy, options) {\n        super(nextPolicy, options);\n    }\n    /**\n     * Sends out request.\n     *\n     * @param request -\n     */\n    async sendRequest(request) {\n        if (isNode) {\n            return this._nextPolicy.sendRequest(request);\n        }\n        if (request.method.toUpperCase() === \"GET\" || request.method.toUpperCase() === \"HEAD\") {\n            request.url = setURLParameter(request.url, URLConstants.Parameters.FORCE_BROWSER_NO_CACHE, new Date().getTime().toString());\n        }\n        request.headers.remove(HeaderConstants.COOKIE);\n        // According to XHR standards, content-length should be fully controlled by browsers\n        request.headers.remove(HeaderConstants.CONTENT_LENGTH);\n        return this._nextPolicy.sendRequest(request);\n    }\n}\n//# sourceMappingURL=StorageBrowserPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { StorageBrowserPolicy } from \"./policies/StorageBrowserPolicy\";\nexport { StorageBrowserPolicy };\n/**\n * StorageBrowserPolicyFactory is a factory class helping generating StorageBrowserPolicy objects.\n */\nexport class StorageBrowserPolicyFactory {\n    /**\n     * Creates a StorageBrowserPolicyFactory object.\n     *\n     * @param nextPolicy -\n     * @param options -\n     */\n    create(nextPolicy, options) {\n        return new StorageBrowserPolicy(nextPolicy, options);\n    }\n}\n//# sourceMappingURL=StorageBrowserPolicyFactory.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * The programmatic identifier of the storageCorrectContentLengthPolicy.\n */\nexport const storageCorrectContentLengthPolicyName = \"StorageCorrectContentLengthPolicy\";\n/**\n * storageCorrectContentLengthPolicy to correctly set Content-Length header with request body length.\n */\nexport function storageCorrectContentLengthPolicy() {\n    return {\n        name: storageCorrectContentLengthPolicyName,\n        async sendRequest(request, next) {\n            return next(request);\n        },\n    };\n}\n//# sourceMappingURL=StorageCorrectContentLengthPolicy.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { __rest } from \"tslib\";\nimport { convertHttpClient, createRequestPolicyFactoryPolicy, } from \"@azure/core-http-compat\";\nimport { bearerTokenAuthenticationPolicy, decompressResponsePolicyName, } from \"@azure/core-rest-pipeline\";\nimport { authorizeRequestOnTenantChallenge, createClientPipeline } from \"@azure/core-client\";\nimport { parseXML, stringifyXML } from \"@azure/core-xml\";\nimport { isTokenCredential } from \"@azure/core-auth\";\nimport { logger } from \"./log\";\nimport { StorageRetryPolicyFactory } from \"./StorageRetryPolicyFactory\";\nimport { StorageSharedKeyCredential } from \"./credentials/StorageSharedKeyCredential\";\nimport { AnonymousCredential } from \"./credentials/AnonymousCredential\";\nimport { StorageOAuthScopes, StorageBlobLoggingAllowedHeaderNames, StorageBlobLoggingAllowedQueryParameters, SDK_VERSION, } from \"./utils/constants\";\nimport { getCachedDefaultHttpClient } from \"./utils/cache\";\nimport { storageBrowserPolicy } from \"./policies/StorageBrowserPolicyV2\";\nimport { storageRetryPolicy } from \"./policies/StorageRetryPolicyV2\";\nimport { storageSharedKeyCredentialPolicy } from \"./policies/StorageSharedKeyCredentialPolicyV2\";\nimport { StorageBrowserPolicyFactory } from \"./StorageBrowserPolicyFactory\";\nimport { storageCorrectContentLengthPolicy } from \"./policies/StorageCorrectContentLengthPolicy\";\n// Export following interfaces and types for customers who want to implement their\n// own RequestPolicy or HTTPClient\nexport { StorageOAuthScopes, };\n/**\n * A helper to decide if a given argument satisfies the Pipeline contract\n * @param pipeline - An argument that may be a Pipeline\n * @returns true when the argument satisfies the Pipeline contract\n */\nexport function isPipelineLike(pipeline) {\n    if (!pipeline || typeof pipeline !== \"object\") {\n        return false;\n    }\n    const castPipeline = pipeline;\n    return (Array.isArray(castPipeline.factories) &&\n        typeof castPipeline.options === \"object\" &&\n        typeof castPipeline.toServiceClientOptions === \"function\");\n}\n/**\n * A Pipeline class containing HTTP request policies.\n * You can create a default Pipeline by calling {@link newPipeline}.\n * Or you can create a Pipeline with your own policies by the constructor of Pipeline.\n *\n * Refer to {@link newPipeline} and provided policies before implementing your\n * customized Pipeline.\n */\nexport class Pipeline {\n    /**\n     * Creates an instance of Pipeline. Customize HTTPClient by implementing IHttpClient interface.\n     *\n     * @param factories -\n     * @param options -\n     */\n    constructor(factories, options = {}) {\n        this.factories = factories;\n        this.options = options;\n    }\n    /**\n     * Transfer Pipeline object to ServiceClientOptions object which is required by\n     * ServiceClient constructor.\n     *\n     * @returns The ServiceClientOptions object from this Pipeline.\n     */\n    toServiceClientOptions() {\n        return {\n            httpClient: this.options.httpClient,\n            requestPolicyFactories: this.factories,\n        };\n    }\n}\n/**\n * Creates a new Pipeline object with Credential provided.\n *\n * @param credential -  Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the `@azure/identity` package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.\n * @param pipelineOptions - Optional. Options.\n * @returns A new Pipeline object.\n */\nexport function newPipeline(credential, pipelineOptions = {}) {\n    if (!credential) {\n        credential = new AnonymousCredential();\n    }\n    const pipeline = new Pipeline([], pipelineOptions);\n    pipeline._credential = credential;\n    return pipeline;\n}\nfunction processDownlevelPipeline(pipeline) {\n    const knownFactoryFunctions = [\n        isAnonymousCredential,\n        isStorageSharedKeyCredential,\n        isCoreHttpBearerTokenFactory,\n        isStorageBrowserPolicyFactory,\n        isStorageRetryPolicyFactory,\n        isStorageTelemetryPolicyFactory,\n        isCoreHttpPolicyFactory,\n    ];\n    if (pipeline.factories.length) {\n        const novelFactories = pipeline.factories.filter((factory) => {\n            return !knownFactoryFunctions.some((knownFactory) => knownFactory(factory));\n        });\n        if (novelFactories.length) {\n            const hasInjector = novelFactories.some((factory) => isInjectorPolicyFactory(factory));\n            // if there are any left over, wrap in a requestPolicyFactoryPolicy\n            return {\n                wrappedPolicies: createRequestPolicyFactoryPolicy(novelFactories),\n                afterRetry: hasInjector,\n            };\n        }\n    }\n    return undefined;\n}\nexport function getCoreClientOptions(pipeline) {\n    var _a;\n    const _b = pipeline.options, { httpClient: v1Client } = _b, restOptions = __rest(_b, [\"httpClient\"]);\n    let httpClient = pipeline._coreHttpClient;\n    if (!httpClient) {\n        httpClient = v1Client ? convertHttpClient(v1Client) : getCachedDefaultHttpClient();\n        pipeline._coreHttpClient = httpClient;\n    }\n    let corePipeline = pipeline._corePipeline;\n    if (!corePipeline) {\n        const packageDetails = `azsdk-js-azure-storage-blob/${SDK_VERSION}`;\n        const userAgentPrefix = restOptions.userAgentOptions && restOptions.userAgentOptions.userAgentPrefix\n            ? `${restOptions.userAgentOptions.userAgentPrefix} ${packageDetails}`\n            : `${packageDetails}`;\n        corePipeline = createClientPipeline(Object.assign(Object.assign({}, restOptions), { loggingOptions: {\n                additionalAllowedHeaderNames: StorageBlobLoggingAllowedHeaderNames,\n                additionalAllowedQueryParameters: StorageBlobLoggingAllowedQueryParameters,\n                logger: logger.info,\n            }, userAgentOptions: {\n                userAgentPrefix,\n            }, serializationOptions: {\n                stringifyXML,\n                serializerOptions: {\n                    xml: {\n                        // Use customized XML char key of \"#\" so we can deserialize metadata\n                        // with \"_\" key\n                        xmlCharKey: \"#\",\n                    },\n                },\n            }, deserializationOptions: {\n                parseXML,\n                serializerOptions: {\n                    xml: {\n                        // Use customized XML char key of \"#\" so we can deserialize metadata\n                        // with \"_\" key\n                        xmlCharKey: \"#\",\n                    },\n                },\n            } }));\n        corePipeline.removePolicy({ phase: \"Retry\" });\n        corePipeline.removePolicy({ name: decompressResponsePolicyName });\n        corePipeline.addPolicy(storageCorrectContentLengthPolicy());\n        corePipeline.addPolicy(storageRetryPolicy(restOptions.retryOptions), { phase: \"Retry\" });\n        corePipeline.addPolicy(storageBrowserPolicy());\n        const downlevelResults = processDownlevelPipeline(pipeline);\n        if (downlevelResults) {\n            corePipeline.addPolicy(downlevelResults.wrappedPolicies, downlevelResults.afterRetry ? { afterPhase: \"Retry\" } : undefined);\n        }\n        const credential = getCredentialFromPipeline(pipeline);\n        if (isTokenCredential(credential)) {\n            corePipeline.addPolicy(bearerTokenAuthenticationPolicy({\n                credential,\n                scopes: (_a = restOptions.audience) !== null && _a !== void 0 ? _a : StorageOAuthScopes,\n                challengeCallbacks: { authorizeRequestOnChallenge: authorizeRequestOnTenantChallenge },\n            }), { phase: \"Sign\" });\n        }\n        else if (credential instanceof StorageSharedKeyCredential) {\n            corePipeline.addPolicy(storageSharedKeyCredentialPolicy({\n                accountName: credential.accountName,\n                accountKey: credential.accountKey,\n            }), { phase: \"Sign\" });\n        }\n        pipeline._corePipeline = corePipeline;\n    }\n    return Object.assign(Object.assign({}, restOptions), { allowInsecureConnection: true, httpClient, pipeline: corePipeline });\n}\nexport function getCredentialFromPipeline(pipeline) {\n    // see if we squirreled one away on the type itself\n    if (pipeline._credential) {\n        return pipeline._credential;\n    }\n    // if it came from another package, loop over the factories and look for one like before\n    let credential = new AnonymousCredential();\n    for (const factory of pipeline.factories) {\n        if (isTokenCredential(factory.credential)) {\n            // Only works if the factory has been attached a \"credential\" property.\n            // We do that in newPipeline() when using TokenCredential.\n            credential = factory.credential;\n        }\n        else if (isStorageSharedKeyCredential(factory)) {\n            return factory;\n        }\n    }\n    return credential;\n}\nfunction isStorageSharedKeyCredential(factory) {\n    if (factory instanceof StorageSharedKeyCredential) {\n        return true;\n    }\n    return factory.constructor.name === \"StorageSharedKeyCredential\";\n}\nfunction isAnonymousCredential(factory) {\n    if (factory instanceof AnonymousCredential) {\n        return true;\n    }\n    return factory.constructor.name === \"AnonymousCredential\";\n}\nfunction isCoreHttpBearerTokenFactory(factory) {\n    return isTokenCredential(factory.credential);\n}\nfunction isStorageBrowserPolicyFactory(factory) {\n    if (factory instanceof StorageBrowserPolicyFactory) {\n        return true;\n    }\n    return factory.constructor.name === \"StorageBrowserPolicyFactory\";\n}\nfunction isStorageRetryPolicyFactory(factory) {\n    if (factory instanceof StorageRetryPolicyFactory) {\n        return true;\n    }\n    return factory.constructor.name === \"StorageRetryPolicyFactory\";\n}\nfunction isStorageTelemetryPolicyFactory(factory) {\n    return factory.constructor.name === \"TelemetryPolicyFactory\";\n}\nfunction isInjectorPolicyFactory(factory) {\n    return factory.constructor.name === \"InjectorPolicyFactory\";\n}\nfunction isCoreHttpPolicyFactory(factory) {\n    const knownPolicies = [\n        \"GenerateClientRequestIdPolicy\",\n        \"TracingPolicy\",\n        \"LogPolicy\",\n        \"ProxyPolicy\",\n        \"DisableResponseDecompressionPolicy\",\n        \"KeepAlivePolicy\",\n        \"DeserializationPolicy\",\n    ];\n    const mockHttpClient = {\n        sendRequest: async (request) => {\n            return {\n                request,\n                headers: request.headers.clone(),\n                status: 500,\n            };\n        },\n    };\n    const mockRequestPolicyOptions = {\n        log(_logLevel, _message) {\n            /* do nothing */\n        },\n        shouldLog(_logLevel) {\n            return false;\n        },\n    };\n    const policyInstance = factory.create(mockHttpClient, mockRequestPolicyOptions);\n    const policyName = policyInstance.constructor.name;\n    // bundlers sometimes add a custom suffix to the class name to make it unique\n    return knownPolicies.some((knownPolicyName) => {\n        return policyName.startsWith(knownPolicyName);\n    });\n}\n//# sourceMappingURL=Pipeline.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { BaseRequestPolicy } from \"./RequestPolicy\";\n/**\n * Credential policy used to sign HTTP(S) requests before sending. This is an\n * abstract class.\n */\nexport class CredentialPolicy extends BaseRequestPolicy {\n    /**\n     * Sends out request.\n     *\n     * @param request -\n     */\n    sendRequest(request) {\n        return this._nextPolicy.sendRequest(this.signRequest(request));\n    }\n    /**\n     * Child classes must implement this method with request signing. This method\n     * will be executed in {@link sendRequest}.\n     *\n     * @param request -\n     */\n    signRequest(request) {\n        // Child classes must override this method with request signing. This method\n        // will be executed in sendRequest().\n        return request;\n    }\n}\n//# sourceMappingURL=CredentialPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { CredentialPolicy } from \"./CredentialPolicy\";\n/**\n * AnonymousCredentialPolicy is used with HTTP(S) requests that read public resources\n * or for use with Shared Access Signatures (SAS).\n */\nexport class AnonymousCredentialPolicy extends CredentialPolicy {\n    /**\n     * Creates an instance of AnonymousCredentialPolicy.\n     * @param nextPolicy -\n     * @param options -\n     */\n    // The base class has a protected constructor. Adding a public one to enable constructing of this class.\n    /* eslint-disable-next-line @typescript-eslint/no-useless-constructor*/\n    constructor(nextPolicy, options) {\n        super(nextPolicy, options);\n    }\n}\n//# sourceMappingURL=AnonymousCredentialPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Credential is an abstract class for Azure Storage HTTP requests signing. This\n * class will host an credentialPolicyCreator factory which generates CredentialPolicy.\n */\nexport class Credential {\n    /**\n     * Creates a RequestPolicy object.\n     *\n     * @param _nextPolicy -\n     * @param _options -\n     */\n    create(_nextPolicy, _options) {\n        throw new Error(\"Method should be implemented in children classes.\");\n    }\n}\n//# sourceMappingURL=Credential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { AnonymousCredentialPolicy } from \"../policies/AnonymousCredentialPolicy\";\nimport { Credential } from \"./Credential\";\n/**\n * AnonymousCredential provides a credentialPolicyCreator member used to create\n * AnonymousCredentialPolicy objects. AnonymousCredentialPolicy is used with\n * HTTP(S) requests that read public resources or for use with Shared Access\n * Signatures (SAS).\n */\nexport class AnonymousCredential extends Credential {\n    /**\n     * Creates an {@link AnonymousCredentialPolicy} object.\n     *\n     * @param nextPolicy -\n     * @param options -\n     */\n    create(nextPolicy, options) {\n        return new AnonymousCredentialPolicy(nextPolicy, options);\n    }\n}\n//# sourceMappingURL=AnonymousCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nexport class StorageSharedKeyCredential {\n}\n//# sourceMappingURL=StorageSharedKeyCredential.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createClientLogger } from \"@azure/logger\";\n/**\n * The `@azure/logger` configuration for this package.\n */\nexport const logger = createClientLogger(\"storage-blob\");\n//# sourceMappingURL=log.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * The base class from which all request policies derive.\n */\nexport class BaseRequestPolicy {\n    /**\n     * The main method to implement that manipulates a request/response.\n     */\n    constructor(\n    /**\n     * The next policy in the pipeline. Each policy is responsible for executing the next one if the request is to continue through the pipeline.\n     */\n    _nextPolicy, \n    /**\n     * The options that can be passed to a given request policy.\n     */\n    _options) {\n        this._nextPolicy = _nextPolicy;\n        this._options = _options;\n    }\n    /**\n     * Get whether or not a log with the provided log level should be logged.\n     * @param logLevel - The log level of the log that will be logged.\n     * @returns Whether or not a log with the provided log level should be logged.\n     */\n    shouldLog(logLevel) {\n        return this._options.shouldLog(logLevel);\n    }\n    /**\n     * Attempt to log the provided message to the provided logger. If no logger was provided or if\n     * the log level does not meat the logger's threshold, then nothing will be logged.\n     * @param logLevel - The log level of this log.\n     * @param message - The message of this log.\n     */\n    log(logLevel, message) {\n        this._options.log(logLevel, message);\n    }\n}\n//# sourceMappingURL=RequestPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { AbortError } from \"@azure/abort-controller\";\nimport { BaseRequestPolicy } from \"./RequestPolicy\";\nimport { URLConstants } from \"../utils/constants\";\nimport { delay, setURLHost, setURLParameter } from \"../utils/utils.common\";\nimport { logger } from \"../log\";\n/**\n * A factory method used to generated a RetryPolicy factory.\n *\n * @param retryOptions -\n */\nexport function NewRetryPolicyFactory(retryOptions) {\n    return {\n        create: (nextPolicy, options) => {\n            return new StorageRetryPolicy(nextPolicy, options, retryOptions);\n        },\n    };\n}\n/**\n * RetryPolicy types.\n */\nexport var StorageRetryPolicyType;\n(function (StorageRetryPolicyType) {\n    /**\n     * Exponential retry. Retry time delay grows exponentially.\n     */\n    StorageRetryPolicyType[StorageRetryPolicyType[\"EXPONENTIAL\"] = 0] = \"EXPONENTIAL\";\n    /**\n     * Linear retry. Retry time delay grows linearly.\n     */\n    StorageRetryPolicyType[StorageRetryPolicyType[\"FIXED\"] = 1] = \"FIXED\";\n})(StorageRetryPolicyType || (StorageRetryPolicyType = {}));\n// Default values of StorageRetryOptions\nconst DEFAULT_RETRY_OPTIONS = {\n    maxRetryDelayInMs: 120 * 1000,\n    maxTries: 4,\n    retryDelayInMs: 4 * 1000,\n    retryPolicyType: StorageRetryPolicyType.EXPONENTIAL,\n    secondaryHost: \"\",\n    tryTimeoutInMs: undefined, // Use server side default timeout strategy\n};\nconst RETRY_ABORT_ERROR = new AbortError(\"The operation was aborted.\");\n/**\n * Retry policy with exponential retry and linear retry implemented.\n */\nexport class StorageRetryPolicy extends BaseRequestPolicy {\n    /**\n     * Creates an instance of RetryPolicy.\n     *\n     * @param nextPolicy -\n     * @param options -\n     * @param retryOptions -\n     */\n    constructor(nextPolicy, options, retryOptions = DEFAULT_RETRY_OPTIONS) {\n        super(nextPolicy, options);\n        // Initialize retry options\n        this.retryOptions = {\n            retryPolicyType: retryOptions.retryPolicyType\n                ? retryOptions.retryPolicyType\n                : DEFAULT_RETRY_OPTIONS.retryPolicyType,\n            maxTries: retryOptions.maxTries && retryOptions.maxTries >= 1\n                ? Math.floor(retryOptions.maxTries)\n                : DEFAULT_RETRY_OPTIONS.maxTries,\n            tryTimeoutInMs: retryOptions.tryTimeoutInMs && retryOptions.tryTimeoutInMs >= 0\n                ? retryOptions.tryTimeoutInMs\n                : DEFAULT_RETRY_OPTIONS.tryTimeoutInMs,\n            retryDelayInMs: retryOptions.retryDelayInMs && retryOptions.retryDelayInMs >= 0\n                ? Math.min(retryOptions.retryDelayInMs, retryOptions.maxRetryDelayInMs\n                    ? retryOptions.maxRetryDelayInMs\n                    : DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs)\n                : DEFAULT_RETRY_OPTIONS.retryDelayInMs,\n            maxRetryDelayInMs: retryOptions.maxRetryDelayInMs && retryOptions.maxRetryDelayInMs >= 0\n                ? retryOptions.maxRetryDelayInMs\n                : DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs,\n            secondaryHost: retryOptions.secondaryHost\n                ? retryOptions.secondaryHost\n                : DEFAULT_RETRY_OPTIONS.secondaryHost,\n        };\n    }\n    /**\n     * Sends request.\n     *\n     * @param request -\n     */\n    async sendRequest(request) {\n        return this.attemptSendRequest(request, false, 1);\n    }\n    /**\n     * Decide and perform next retry. Won't mutate request parameter.\n     *\n     * @param request -\n     * @param secondaryHas404 -  If attempt was against the secondary & it returned a StatusNotFound (404), then\n     *                                   the resource was not found. This may be due to replication delay. So, in this\n     *                                   case, we'll never try the secondary again for this operation.\n     * @param attempt -           How many retries has been attempted to performed, starting from 1, which includes\n     *                                   the attempt will be performed by this method call.\n     */\n    async attemptSendRequest(request, secondaryHas404, attempt) {\n        const newRequest = request.clone();\n        const isPrimaryRetry = secondaryHas404 ||\n            !this.retryOptions.secondaryHost ||\n            !(request.method === \"GET\" || request.method === \"HEAD\" || request.method === \"OPTIONS\") ||\n            attempt % 2 === 1;\n        if (!isPrimaryRetry) {\n            newRequest.url = setURLHost(newRequest.url, this.retryOptions.secondaryHost);\n        }\n        // Set the server-side timeout query parameter \"timeout=[seconds]\"\n        if (this.retryOptions.tryTimeoutInMs) {\n            newRequest.url = setURLParameter(newRequest.url, URLConstants.Parameters.TIMEOUT, Math.floor(this.retryOptions.tryTimeoutInMs / 1000).toString());\n        }\n        let response;\n        try {\n            logger.info(`RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? \"Primary\" : \"Secondary\"}`);\n            response = await this._nextPolicy.sendRequest(newRequest);\n            if (!this.shouldRetry(isPrimaryRetry, attempt, response)) {\n                return response;\n            }\n            secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);\n        }\n        catch (err) {\n            logger.error(`RetryPolicy: Caught error, message: ${err.message}, code: ${err.code}`);\n            if (!this.shouldRetry(isPrimaryRetry, attempt, response, err)) {\n                throw err;\n            }\n        }\n        await this.delay(isPrimaryRetry, attempt, request.abortSignal);\n        return this.attemptSendRequest(request, secondaryHas404, ++attempt);\n    }\n    /**\n     * Decide whether to retry according to last HTTP response and retry counters.\n     *\n     * @param isPrimaryRetry -\n     * @param attempt -\n     * @param response -\n     * @param err -\n     */\n    shouldRetry(isPrimaryRetry, attempt, response, err) {\n        if (attempt >= this.retryOptions.maxTries) {\n            logger.info(`RetryPolicy: Attempt(s) ${attempt} >= maxTries ${this.retryOptions\n                .maxTries}, no further try.`);\n            return false;\n        }\n        // Handle network failures, you may need to customize the list when you implement\n        // your own http client\n        const retriableErrors = [\n            \"ETIMEDOUT\",\n            \"ESOCKETTIMEDOUT\",\n            \"ECONNREFUSED\",\n            \"ECONNRESET\",\n            \"ENOENT\",\n            \"ENOTFOUND\",\n            \"TIMEOUT\",\n            \"EPIPE\",\n            \"REQUEST_SEND_ERROR\", // For default xhr based http client provided in ms-rest-js\n        ];\n        if (err) {\n            for (const retriableError of retriableErrors) {\n                if (err.name.toUpperCase().includes(retriableError) ||\n                    err.message.toUpperCase().includes(retriableError) ||\n                    (err.code && err.code.toString().toUpperCase() === retriableError)) {\n                    logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);\n                    return true;\n                }\n            }\n        }\n        // If attempt was against the secondary & it returned a StatusNotFound (404), then\n        // the resource was not found. This may be due to replication delay. So, in this\n        // case, we'll never try the secondary again for this operation.\n        if (response || err) {\n            const statusCode = response ? response.status : err ? err.statusCode : 0;\n            if (!isPrimaryRetry && statusCode === 404) {\n                logger.info(`RetryPolicy: Secondary access with 404, will retry.`);\n                return true;\n            }\n            // Server internal error or server timeout\n            if (statusCode === 503 || statusCode === 500) {\n                logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);\n                return true;\n            }\n        }\n        // [Copy source error code] Feature is pending on service side, skip retry on copy source error for now.\n        // if (response) {\n        //   // Retry select Copy Source Error Codes.\n        //   if (response?.status >= 400) {\n        //     const copySourceError = response.headers.get(HeaderConstants.X_MS_CopySourceErrorCode);\n        //     if (copySourceError !== undefined) {\n        //       switch (copySourceError) {\n        //         case \"InternalError\":\n        //         case \"OperationTimedOut\":\n        //         case \"ServerBusy\":\n        //           return true;\n        //       }\n        //     }\n        //   }\n        // }\n        if ((err === null || err === void 0 ? void 0 : err.code) === \"PARSE_ERROR\" && (err === null || err === void 0 ? void 0 : err.message.startsWith(`Error \"Error: Unclosed root tag`))) {\n            logger.info(\"RetryPolicy: Incomplete XML response likely due to service timeout, will retry.\");\n            return true;\n        }\n        return false;\n    }\n    /**\n     * Delay a calculated time between retries.\n     *\n     * @param isPrimaryRetry -\n     * @param attempt -\n     * @param abortSignal -\n     */\n    async delay(isPrimaryRetry, attempt, abortSignal) {\n        let delayTimeInMs = 0;\n        if (isPrimaryRetry) {\n            switch (this.retryOptions.retryPolicyType) {\n                case StorageRetryPolicyType.EXPONENTIAL:\n                    delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * this.retryOptions.retryDelayInMs, this.retryOptions.maxRetryDelayInMs);\n                    break;\n                case StorageRetryPolicyType.FIXED:\n                    delayTimeInMs = this.retryOptions.retryDelayInMs;\n                    break;\n            }\n        }\n        else {\n            delayTimeInMs = Math.random() * 1000;\n        }\n        logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);\n        return delay(delayTimeInMs, abortSignal, RETRY_ABORT_ERROR);\n    }\n}\n//# sourceMappingURL=StorageRetryPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * The programmatic identifier of the storageSharedKeyCredentialPolicy.\n */\nexport const storageSharedKeyCredentialPolicyName = \"storageSharedKeyCredentialPolicy\";\n/**\n * storageSharedKeyCredentialPolicy handles signing requests using storage account keys.\n */\nexport function storageSharedKeyCredentialPolicy(_options) {\n    return {\n        name: storageSharedKeyCredentialPolicyName,\n        async sendRequest(request, next) {\n            return next(request);\n        },\n    };\n}\n//# sourceMappingURL=StorageSharedKeyCredentialPolicyV2.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nexport const SDK_VERSION = \"12.26.0\";\nexport const SERVICE_VERSION = \"2025-01-05\";\nexport const BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES = 256 * 1024 * 1024; // 256MB\nexport const BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES = 4000 * 1024 * 1024; // 4000MB\nexport const BLOCK_BLOB_MAX_BLOCKS = 50000;\nexport const DEFAULT_BLOCK_BUFFER_SIZE_BYTES = 8 * 1024 * 1024; // 8MB\nexport const DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES = 4 * 1024 * 1024; // 4MB\nexport const DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS = 5;\nexport const REQUEST_TIMEOUT = 100 * 1000; // In ms\n/**\n * The OAuth scope to use with Azure Storage.\n */\nexport const StorageOAuthScopes = \"https://storage.azure.com/.default\";\nexport const URLConstants = {\n    Parameters: {\n        FORCE_BROWSER_NO_CACHE: \"_\",\n        SIGNATURE: \"sig\",\n        SNAPSHOT: \"snapshot\",\n        VERSIONID: \"versionid\",\n        TIMEOUT: \"timeout\",\n    },\n};\nexport const HTTPURLConnection = {\n    HTTP_ACCEPTED: 202,\n    HTTP_CONFLICT: 409,\n    HTTP_NOT_FOUND: 404,\n    HTTP_PRECON_FAILED: 412,\n    HTTP_RANGE_NOT_SATISFIABLE: 416,\n};\nexport const HeaderConstants = {\n    AUTHORIZATION: \"Authorization\",\n    AUTHORIZATION_SCHEME: \"Bearer\",\n    CONTENT_ENCODING: \"Content-Encoding\",\n    CONTENT_ID: \"Content-ID\",\n    CONTENT_LANGUAGE: \"Content-Language\",\n    CONTENT_LENGTH: \"Content-Length\",\n    CONTENT_MD5: \"Content-Md5\",\n    CONTENT_TRANSFER_ENCODING: \"Content-Transfer-Encoding\",\n    CONTENT_TYPE: \"Content-Type\",\n    COOKIE: \"Cookie\",\n    DATE: \"date\",\n    IF_MATCH: \"if-match\",\n    IF_MODIFIED_SINCE: \"if-modified-since\",\n    IF_NONE_MATCH: \"if-none-match\",\n    IF_UNMODIFIED_SINCE: \"if-unmodified-since\",\n    PREFIX_FOR_STORAGE: \"x-ms-\",\n    RANGE: \"Range\",\n    USER_AGENT: \"User-Agent\",\n    X_MS_CLIENT_REQUEST_ID: \"x-ms-client-request-id\",\n    X_MS_COPY_SOURCE: \"x-ms-copy-source\",\n    X_MS_DATE: \"x-ms-date\",\n    X_MS_ERROR_CODE: \"x-ms-error-code\",\n    X_MS_VERSION: \"x-ms-version\",\n    X_MS_CopySourceErrorCode: \"x-ms-copy-source-error-code\",\n};\nexport const ETagNone = \"\";\nexport const ETagAny = \"*\";\nexport const SIZE_1_MB = 1 * 1024 * 1024;\nexport const BATCH_MAX_REQUEST = 256;\nexport const BATCH_MAX_PAYLOAD_IN_BYTES = 4 * SIZE_1_MB;\nexport const HTTP_LINE_ENDING = \"\\r\\n\";\nexport const HTTP_VERSION_1_1 = \"HTTP/1.1\";\nexport const EncryptionAlgorithmAES25 = \"AES256\";\nexport const DevelopmentConnectionString = `DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;`;\nexport const StorageBlobLoggingAllowedHeaderNames = [\n    \"Access-Control-Allow-Origin\",\n    \"Cache-Control\",\n    \"Content-Length\",\n    \"Content-Type\",\n    \"Date\",\n    \"Request-Id\",\n    \"traceparent\",\n    \"Transfer-Encoding\",\n    \"User-Agent\",\n    \"x-ms-client-request-id\",\n    \"x-ms-date\",\n    \"x-ms-error-code\",\n    \"x-ms-request-id\",\n    \"x-ms-return-client-request-id\",\n    \"x-ms-version\",\n    \"Accept-Ranges\",\n    \"Content-Disposition\",\n    \"Content-Encoding\",\n    \"Content-Language\",\n    \"Content-MD5\",\n    \"Content-Range\",\n    \"ETag\",\n    \"Last-Modified\",\n    \"Server\",\n    \"Vary\",\n    \"x-ms-content-crc64\",\n    \"x-ms-copy-action\",\n    \"x-ms-copy-completion-time\",\n    \"x-ms-copy-id\",\n    \"x-ms-copy-progress\",\n    \"x-ms-copy-status\",\n    \"x-ms-has-immutability-policy\",\n    \"x-ms-has-legal-hold\",\n    \"x-ms-lease-state\",\n    \"x-ms-lease-status\",\n    \"x-ms-range\",\n    \"x-ms-request-server-encrypted\",\n    \"x-ms-server-encrypted\",\n    \"x-ms-snapshot\",\n    \"x-ms-source-range\",\n    \"If-Match\",\n    \"If-Modified-Since\",\n    \"If-None-Match\",\n    \"If-Unmodified-Since\",\n    \"x-ms-access-tier\",\n    \"x-ms-access-tier-change-time\",\n    \"x-ms-access-tier-inferred\",\n    \"x-ms-account-kind\",\n    \"x-ms-archive-status\",\n    \"x-ms-blob-append-offset\",\n    \"x-ms-blob-cache-control\",\n    \"x-ms-blob-committed-block-count\",\n    \"x-ms-blob-condition-appendpos\",\n    \"x-ms-blob-condition-maxsize\",\n    \"x-ms-blob-content-disposition\",\n    \"x-ms-blob-content-encoding\",\n    \"x-ms-blob-content-language\",\n    \"x-ms-blob-content-length\",\n    \"x-ms-blob-content-md5\",\n    \"x-ms-blob-content-type\",\n    \"x-ms-blob-public-access\",\n    \"x-ms-blob-sequence-number\",\n    \"x-ms-blob-type\",\n    \"x-ms-copy-destination-snapshot\",\n    \"x-ms-creation-time\",\n    \"x-ms-default-encryption-scope\",\n    \"x-ms-delete-snapshots\",\n    \"x-ms-delete-type-permanent\",\n    \"x-ms-deny-encryption-scope-override\",\n    \"x-ms-encryption-algorithm\",\n    \"x-ms-if-sequence-number-eq\",\n    \"x-ms-if-sequence-number-le\",\n    \"x-ms-if-sequence-number-lt\",\n    \"x-ms-incremental-copy\",\n    \"x-ms-lease-action\",\n    \"x-ms-lease-break-period\",\n    \"x-ms-lease-duration\",\n    \"x-ms-lease-id\",\n    \"x-ms-lease-time\",\n    \"x-ms-page-write\",\n    \"x-ms-proposed-lease-id\",\n    \"x-ms-range-get-content-md5\",\n    \"x-ms-rehydrate-priority\",\n    \"x-ms-sequence-number-action\",\n    \"x-ms-sku-name\",\n    \"x-ms-source-content-md5\",\n    \"x-ms-source-if-match\",\n    \"x-ms-source-if-modified-since\",\n    \"x-ms-source-if-none-match\",\n    \"x-ms-source-if-unmodified-since\",\n    \"x-ms-tag-count\",\n    \"x-ms-encryption-key-sha256\",\n    \"x-ms-copy-source-error-code\",\n    \"x-ms-copy-source-status-code\",\n    \"x-ms-if-tags\",\n    \"x-ms-source-if-tags\",\n];\nexport const StorageBlobLoggingAllowedQueryParameters = [\n    \"comp\",\n    \"maxresults\",\n    \"rscc\",\n    \"rscd\",\n    \"rsce\",\n    \"rscl\",\n    \"rsct\",\n    \"se\",\n    \"si\",\n    \"sip\",\n    \"sp\",\n    \"spr\",\n    \"sr\",\n    \"srt\",\n    \"ss\",\n    \"st\",\n    \"sv\",\n    \"include\",\n    \"marker\",\n    \"prefix\",\n    \"copyid\",\n    \"restype\",\n    \"blockid\",\n    \"blocklisttype\",\n    \"delimiter\",\n    \"prevsnapshot\",\n    \"ske\",\n    \"skoid\",\n    \"sks\",\n    \"skt\",\n    \"sktid\",\n    \"skv\",\n    \"snapshot\",\n];\nexport const BlobUsesCustomerSpecifiedEncryptionMsg = \"BlobUsesCustomerSpecifiedEncryption\";\nexport const BlobDoesNotUseCustomerSpecifiedEncryption = \"BlobDoesNotUseCustomerSpecifiedEncryption\";\n/// List of ports used for path style addressing.\n/// Path style addressing means that storage account is put in URI's Path segment in instead of in host.\nexport const PathStylePorts = [\n    \"10000\",\n    \"10001\",\n    \"10002\",\n    \"10003\",\n    \"10004\",\n    \"10100\",\n    \"10101\",\n    \"10102\",\n    \"10103\",\n    \"10104\",\n    \"11000\",\n    \"11001\",\n    \"11002\",\n    \"11003\",\n    \"11004\",\n    \"11100\",\n    \"11101\",\n    \"11102\",\n    \"11103\",\n    \"11104\",\n];\n//# sourceMappingURL=constants.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createHttpHeaders } from \"@azure/core-rest-pipeline\";\nimport { isNode } from \"@azure/core-util\";\nimport { DevelopmentConnectionString, HeaderConstants, PathStylePorts, URLConstants, } from \"./constants\";\n/**\n * Reserved URL characters must be properly escaped for Storage services like Blob or File.\n *\n * ## URL encode and escape strategy for JS SDKs\n *\n * When customers pass a URL string into XxxClient classes constructor, the URL string may already be URL encoded or not.\n * But before sending to Azure Storage server, the URL must be encoded. However, it's hard for a SDK to guess whether the URL\n * string has been encoded or not. We have 2 potential strategies, and chose strategy two for the XxxClient constructors.\n *\n * ### Strategy One: Assume the customer URL string is not encoded, and always encode URL string in SDK.\n *\n * This is what legacy V2 SDK does, simple and works for most of the cases.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b:\",\n *   SDK will encode it to \"http://account.blob.core.windows.net/con/b%3A\" and send to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%3A\",\n *   SDK will encode it to \"http://account.blob.core.windows.net/con/b%253A\" and send to server. A blob named \"b%3A\" will be created.\n *\n * But this strategy will make it not possible to create a blob with \"?\" in it's name. Because when customer URL string is\n * \"http://account.blob.core.windows.net/con/blob?name\", the \"?name\" will be treated as URL paramter instead of blob name.\n * If customer URL string is \"http://account.blob.core.windows.net/con/blob%3Fname\", a blob named \"blob%3Fname\" will be created.\n * V2 SDK doesn't have this issue because it doesn't allow customer pass in a full URL, it accepts a separate blob name and encodeURIComponent for it.\n * We cannot accept a SDK cannot create a blob name with \"?\". So we implement strategy two:\n *\n * ### Strategy Two: SDK doesn't assume the URL has been encoded or not. It will just escape the special characters.\n *\n * This is what V10 Blob Go SDK does. It accepts a URL type in Go, and call url.EscapedPath() to escape the special chars unescaped.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b:\",\n *   SDK will escape \":\" like \"http://account.blob.core.windows.net/con/b%3A\" and send to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%3A\",\n *   There is no special characters, so send \"http://account.blob.core.windows.net/con/b%3A\" to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%253A\",\n *   There is no special characters, so send \"http://account.blob.core.windows.net/con/b%253A\" to server. A blob named \"b%3A\" will be created.\n *\n * This strategy gives us flexibility to create with any special characters. But \"%\" will be treated as a special characters, if the URL string\n * is not encoded, there shouldn't a \"%\" in the URL string, otherwise the URL is not a valid URL.\n * If customer needs to create a blob with \"%\" in it's blob name, use \"%25\" instead of \"%\". Just like above 3rd sample.\n * And following URL strings are invalid:\n * - \"http://account.blob.core.windows.net/con/b%\"\n * - \"http://account.blob.core.windows.net/con/b%2\"\n * - \"http://account.blob.core.windows.net/con/b%G\"\n *\n * Another special character is \"?\", use \"%2F\" to represent a blob name with \"?\" in a URL string.\n *\n * ### Strategy for containerName, blobName or other specific XXXName parameters in methods such as `containerClient.getBlobClient(blobName)`\n *\n * We will apply strategy one, and call encodeURIComponent for these parameters like blobName. Because what customers passes in is a plain name instead of a URL.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-shares--directories--files--and-metadata\n *\n * @param url -\n */\nexport function escapeURLPath(url) {\n    const urlParsed = new URL(url);\n    let path = urlParsed.pathname;\n    path = path || \"/\";\n    path = escape(path);\n    urlParsed.pathname = path;\n    return urlParsed.toString();\n}\nfunction getProxyUriFromDevConnString(connectionString) {\n    // Development Connection String\n    // https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string#connect-to-the-emulator-account-using-the-well-known-account-name-and-key\n    let proxyUri = \"\";\n    if (connectionString.search(\"DevelopmentStorageProxyUri=\") !== -1) {\n        // CONNECTION_STRING=UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://myProxyUri\n        const matchCredentials = connectionString.split(\";\");\n        for (const element of matchCredentials) {\n            if (element.trim().startsWith(\"DevelopmentStorageProxyUri=\")) {\n                proxyUri = element.trim().match(\"DevelopmentStorageProxyUri=(.*)\")[1];\n            }\n        }\n    }\n    return proxyUri;\n}\nexport function getValueInConnString(connectionString, argument) {\n    const elements = connectionString.split(\";\");\n    for (const element of elements) {\n        if (element.trim().startsWith(argument)) {\n            return element.trim().match(argument + \"=(.*)\")[1];\n        }\n    }\n    return \"\";\n}\n/**\n * Extracts the parts of an Azure Storage account connection string.\n *\n * @param connectionString - Connection string.\n * @returns String key value pairs of the storage account's url and credentials.\n */\nexport function extractConnectionStringParts(connectionString) {\n    let proxyUri = \"\";\n    if (connectionString.startsWith(\"UseDevelopmentStorage=true\")) {\n        // Development connection string\n        proxyUri = getProxyUriFromDevConnString(connectionString);\n        connectionString = DevelopmentConnectionString;\n    }\n    // Matching BlobEndpoint in the Account connection string\n    let blobEndpoint = getValueInConnString(connectionString, \"BlobEndpoint\");\n    // Slicing off '/' at the end if exists\n    // (The methods that use `extractConnectionStringParts` expect the url to not have `/` at the end)\n    blobEndpoint = blobEndpoint.endsWith(\"/\") ? blobEndpoint.slice(0, -1) : blobEndpoint;\n    if (connectionString.search(\"DefaultEndpointsProtocol=\") !== -1 &&\n        connectionString.search(\"AccountKey=\") !== -1) {\n        // Account connection string\n        let defaultEndpointsProtocol = \"\";\n        let accountName = \"\";\n        let accountKey = Buffer.from(\"accountKey\", \"base64\");\n        let endpointSuffix = \"\";\n        // Get account name and key\n        accountName = getValueInConnString(connectionString, \"AccountName\");\n        accountKey = Buffer.from(getValueInConnString(connectionString, \"AccountKey\"), \"base64\");\n        if (!blobEndpoint) {\n            // BlobEndpoint is not present in the Account connection string\n            // Can be obtained from `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`\n            defaultEndpointsProtocol = getValueInConnString(connectionString, \"DefaultEndpointsProtocol\");\n            const protocol = defaultEndpointsProtocol.toLowerCase();\n            if (protocol !== \"https\" && protocol !== \"http\") {\n                throw new Error(\"Invalid DefaultEndpointsProtocol in the provided Connection String. Expecting 'https' or 'http'\");\n            }\n            endpointSuffix = getValueInConnString(connectionString, \"EndpointSuffix\");\n            if (!endpointSuffix) {\n                throw new Error(\"Invalid EndpointSuffix in the provided Connection String\");\n            }\n            blobEndpoint = `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;\n        }\n        if (!accountName) {\n            throw new Error(\"Invalid AccountName in the provided Connection String\");\n        }\n        else if (accountKey.length === 0) {\n            throw new Error(\"Invalid AccountKey in the provided Connection String\");\n        }\n        return {\n            kind: \"AccountConnString\",\n            url: blobEndpoint,\n            accountName,\n            accountKey,\n            proxyUri,\n        };\n    }\n    else {\n        // SAS connection string\n        let accountSas = getValueInConnString(connectionString, \"SharedAccessSignature\");\n        let accountName = getValueInConnString(connectionString, \"AccountName\");\n        // if accountName is empty, try to read it from BlobEndpoint\n        if (!accountName) {\n            accountName = getAccountNameFromUrl(blobEndpoint);\n        }\n        if (!blobEndpoint) {\n            throw new Error(\"Invalid BlobEndpoint in the provided SAS Connection String\");\n        }\n        else if (!accountSas) {\n            throw new Error(\"Invalid SharedAccessSignature in the provided SAS Connection String\");\n        }\n        // client constructors assume accountSas does *not* start with ?\n        if (accountSas.startsWith(\"?\")) {\n            accountSas = accountSas.substring(1);\n        }\n        return { kind: \"SASConnString\", url: blobEndpoint, accountName, accountSas };\n    }\n}\n/**\n * Internal escape method implemented Strategy Two mentioned in escapeURL() description.\n *\n * @param text -\n */\nfunction escape(text) {\n    return encodeURIComponent(text)\n        .replace(/%2F/g, \"/\") // Don't escape for \"/\"\n        .replace(/'/g, \"%27\") // Escape for \"'\"\n        .replace(/\\+/g, \"%20\")\n        .replace(/%25/g, \"%\"); // Revert encoded \"%\"\n}\n/**\n * Append a string to URL path. Will remove duplicated \"/\" in front of the string\n * when URL path ends with a \"/\".\n *\n * @param url - Source URL string\n * @param name - String to be appended to URL\n * @returns An updated URL string\n */\nexport function appendToURLPath(url, name) {\n    const urlParsed = new URL(url);\n    let path = urlParsed.pathname;\n    path = path ? (path.endsWith(\"/\") ? `${path}${name}` : `${path}/${name}`) : name;\n    urlParsed.pathname = path;\n    return urlParsed.toString();\n}\n/**\n * Set URL parameter name and value. If name exists in URL parameters, old value\n * will be replaced by name key. If not provide value, the parameter will be deleted.\n *\n * @param url - Source URL string\n * @param name - Parameter name\n * @param value - Parameter value\n * @returns An updated URL string\n */\nexport function setURLParameter(url, name, value) {\n    const urlParsed = new URL(url);\n    const encodedName = encodeURIComponent(name);\n    const encodedValue = value ? encodeURIComponent(value) : undefined;\n    // mutating searchParams will change the encoding, so we have to do this ourselves\n    const searchString = urlParsed.search === \"\" ? \"?\" : urlParsed.search;\n    const searchPieces = [];\n    for (const pair of searchString.slice(1).split(\"&\")) {\n        if (pair) {\n            const [key] = pair.split(\"=\", 2);\n            if (key !== encodedName) {\n                searchPieces.push(pair);\n            }\n        }\n    }\n    if (encodedValue) {\n        searchPieces.push(`${encodedName}=${encodedValue}`);\n    }\n    urlParsed.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n    return urlParsed.toString();\n}\n/**\n * Get URL parameter by name.\n *\n * @param url -\n * @param name -\n */\nexport function getURLParameter(url, name) {\n    var _a;\n    const urlParsed = new URL(url);\n    return (_a = urlParsed.searchParams.get(name)) !== null && _a !== void 0 ? _a : undefined;\n}\n/**\n * Set URL host.\n *\n * @param url - Source URL string\n * @param host - New host string\n * @returns An updated URL string\n */\nexport function setURLHost(url, host) {\n    const urlParsed = new URL(url);\n    urlParsed.hostname = host;\n    return urlParsed.toString();\n}\n/**\n * Get URL path from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLPath(url) {\n    try {\n        const urlParsed = new URL(url);\n        return urlParsed.pathname;\n    }\n    catch (e) {\n        return undefined;\n    }\n}\n/**\n * Get URL scheme from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLScheme(url) {\n    try {\n        const urlParsed = new URL(url);\n        return urlParsed.protocol.endsWith(\":\") ? urlParsed.protocol.slice(0, -1) : urlParsed.protocol;\n    }\n    catch (e) {\n        return undefined;\n    }\n}\n/**\n * Get URL path and query from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLPathAndQuery(url) {\n    const urlParsed = new URL(url);\n    const pathString = urlParsed.pathname;\n    if (!pathString) {\n        throw new RangeError(\"Invalid url without valid path.\");\n    }\n    let queryString = urlParsed.search || \"\";\n    queryString = queryString.trim();\n    if (queryString !== \"\") {\n        queryString = queryString.startsWith(\"?\") ? queryString : `?${queryString}`; // Ensure query string start with '?'\n    }\n    return `${pathString}${queryString}`;\n}\n/**\n * Get URL query key value pairs from an URL string.\n *\n * @param url -\n */\nexport function getURLQueries(url) {\n    let queryString = new URL(url).search;\n    if (!queryString) {\n        return {};\n    }\n    queryString = queryString.trim();\n    queryString = queryString.startsWith(\"?\") ? queryString.substring(1) : queryString;\n    let querySubStrings = queryString.split(\"&\");\n    querySubStrings = querySubStrings.filter((value) => {\n        const indexOfEqual = value.indexOf(\"=\");\n        const lastIndexOfEqual = value.lastIndexOf(\"=\");\n        return (indexOfEqual > 0 && indexOfEqual === lastIndexOfEqual && lastIndexOfEqual < value.length - 1);\n    });\n    const queries = {};\n    for (const querySubString of querySubStrings) {\n        const splitResults = querySubString.split(\"=\");\n        const key = splitResults[0];\n        const value = splitResults[1];\n        queries[key] = value;\n    }\n    return queries;\n}\n/**\n * Append a string to URL query.\n *\n * @param url - Source URL string.\n * @param queryParts - String to be appended to the URL query.\n * @returns An updated URL string.\n */\nexport function appendToURLQuery(url, queryParts) {\n    const urlParsed = new URL(url);\n    let query = urlParsed.search;\n    if (query) {\n        query += \"&\" + queryParts;\n    }\n    else {\n        query = queryParts;\n    }\n    urlParsed.search = query;\n    return urlParsed.toString();\n}\n/**\n * Rounds a date off to seconds.\n *\n * @param date -\n * @param withMilliseconds - If true, YYYY-MM-DDThh:mm:ss.fffffffZ will be returned;\n *                                          If false, YYYY-MM-DDThh:mm:ssZ will be returned.\n * @returns Date string in ISO8061 format, with or without 7 milliseconds component\n */\nexport function truncatedISO8061Date(date, withMilliseconds = true) {\n    // Date.toISOString() will return like \"2018-10-29T06:34:36.139Z\"\n    const dateString = date.toISOString();\n    return withMilliseconds\n        ? dateString.substring(0, dateString.length - 1) + \"0000\" + \"Z\"\n        : dateString.substring(0, dateString.length - 5) + \"Z\";\n}\n/**\n * Base64 encode.\n *\n * @param content -\n */\nexport function base64encode(content) {\n    return !isNode ? btoa(content) : Buffer.from(content).toString(\"base64\");\n}\n/**\n * Base64 decode.\n *\n * @param encodedString -\n */\nexport function base64decode(encodedString) {\n    return !isNode ? atob(encodedString) : Buffer.from(encodedString, \"base64\").toString();\n}\n/**\n * Generate a 64 bytes base64 block ID string.\n *\n * @param blockIndex -\n */\nexport function generateBlockID(blockIDPrefix, blockIndex) {\n    // To generate a 64 bytes base64 string, source string should be 48\n    const maxSourceStringLength = 48;\n    // A blob can have a maximum of 100,000 uncommitted blocks at any given time\n    const maxBlockIndexLength = 6;\n    const maxAllowedBlockIDPrefixLength = maxSourceStringLength - maxBlockIndexLength;\n    if (blockIDPrefix.length > maxAllowedBlockIDPrefixLength) {\n        blockIDPrefix = blockIDPrefix.slice(0, maxAllowedBlockIDPrefixLength);\n    }\n    const res = blockIDPrefix +\n        padStart(blockIndex.toString(), maxSourceStringLength - blockIDPrefix.length, \"0\");\n    return base64encode(res);\n}\n/**\n * Delay specified time interval.\n *\n * @param timeInMs -\n * @param aborter -\n * @param abortError -\n */\nexport async function delay(timeInMs, aborter, abortError) {\n    return new Promise((resolve, reject) => {\n        /* eslint-disable-next-line prefer-const */\n        let timeout;\n        const abortHandler = () => {\n            if (timeout !== undefined) {\n                clearTimeout(timeout);\n            }\n            reject(abortError);\n        };\n        const resolveHandler = () => {\n            if (aborter !== undefined) {\n                aborter.removeEventListener(\"abort\", abortHandler);\n            }\n            resolve();\n        };\n        timeout = setTimeout(resolveHandler, timeInMs);\n        if (aborter !== undefined) {\n            aborter.addEventListener(\"abort\", abortHandler);\n        }\n    });\n}\n/**\n * String.prototype.padStart()\n *\n * @param currentString -\n * @param targetLength -\n * @param padString -\n */\nexport function padStart(currentString, targetLength, padString = \" \") {\n    // @ts-expect-error: TS doesn't know this code needs to run downlevel sometimes\n    if (String.prototype.padStart) {\n        return currentString.padStart(targetLength, padString);\n    }\n    padString = padString || \" \";\n    if (currentString.length > targetLength) {\n        return currentString;\n    }\n    else {\n        targetLength = targetLength - currentString.length;\n        if (targetLength > padString.length) {\n            padString += padString.repeat(targetLength / padString.length);\n        }\n        return padString.slice(0, targetLength) + currentString;\n    }\n}\nexport function sanitizeURL(url) {\n    let safeURL = url;\n    if (getURLParameter(safeURL, URLConstants.Parameters.SIGNATURE)) {\n        safeURL = setURLParameter(safeURL, URLConstants.Parameters.SIGNATURE, \"*****\");\n    }\n    return safeURL;\n}\nexport function sanitizeHeaders(originalHeader) {\n    const headers = createHttpHeaders();\n    for (const [name, value] of originalHeader) {\n        if (name.toLowerCase() === HeaderConstants.AUTHORIZATION.toLowerCase()) {\n            headers.set(name, \"*****\");\n        }\n        else if (name.toLowerCase() === HeaderConstants.X_MS_COPY_SOURCE) {\n            headers.set(name, sanitizeURL(value));\n        }\n        else {\n            headers.set(name, value);\n        }\n    }\n    return headers;\n}\n/**\n * If two strings are equal when compared case insensitive.\n *\n * @param str1 -\n * @param str2 -\n */\nexport function iEqual(str1, str2) {\n    return str1.toLocaleLowerCase() === str2.toLocaleLowerCase();\n}\n/**\n * Extracts account name from the url\n * @param url - url to extract the account name from\n * @returns with the account name\n */\nexport function getAccountNameFromUrl(url) {\n    const parsedUrl = new URL(url);\n    let accountName;\n    try {\n        if (parsedUrl.hostname.split(\".\")[1] === \"blob\") {\n            // `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;\n            accountName = parsedUrl.hostname.split(\".\")[0];\n        }\n        else if (isIpEndpointStyle(parsedUrl)) {\n            // IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/\n            // Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/\n            // .getPath() -> /devstoreaccount1/\n            accountName = parsedUrl.pathname.split(\"/\")[1];\n        }\n        else {\n            // Custom domain case: \"https://customdomain.com/containername/blob\".\n            accountName = \"\";\n        }\n        return accountName;\n    }\n    catch (error) {\n        throw new Error(\"Unable to extract accountName with provided information.\");\n    }\n}\nexport function isIpEndpointStyle(parsedUrl) {\n    const host = parsedUrl.host;\n    // Case 1: Ipv6, use a broad regex to find out candidates whose host contains two ':'.\n    // Case 2: localhost(:port) or host.docker.internal, use broad regex to match port part.\n    // Case 3: Ipv4, use broad regex which just check if host contains Ipv4.\n    // For valid host please refer to https://man7.org/linux/man-pages/man7/hostname.7.html.\n    return (/^.*:.*:.*$|^(localhost|host.docker.internal)(:[0-9]+)?$|^(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])){3}(:[0-9]+)?$/.test(host) ||\n        (Boolean(parsedUrl.port) && PathStylePorts.includes(parsedUrl.port)));\n}\n/**\n * Convert Tags to encoded string.\n *\n * @param tags -\n */\nexport function toBlobTagsString(tags) {\n    if (tags === undefined) {\n        return undefined;\n    }\n    const tagPairs = [];\n    for (const key in tags) {\n        if (Object.prototype.hasOwnProperty.call(tags, key)) {\n            const value = tags[key];\n            tagPairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n        }\n    }\n    return tagPairs.join(\"&\");\n}\n/**\n * Convert Tags type to BlobTags.\n *\n * @param tags -\n */\nexport function toBlobTags(tags) {\n    if (tags === undefined) {\n        return undefined;\n    }\n    const res = {\n        blobTagSet: [],\n    };\n    for (const key in tags) {\n        if (Object.prototype.hasOwnProperty.call(tags, key)) {\n            const value = tags[key];\n            res.blobTagSet.push({\n                key,\n                value,\n            });\n        }\n    }\n    return res;\n}\n/**\n * Covert BlobTags to Tags type.\n *\n * @param tags -\n */\nexport function toTags(tags) {\n    if (tags === undefined) {\n        return undefined;\n    }\n    const res = {};\n    for (const blobTag of tags.blobTagSet) {\n        res[blobTag.key] = blobTag.value;\n    }\n    return res;\n}\n/**\n * Convert BlobQueryTextConfiguration to QuerySerialization type.\n *\n * @param textConfiguration -\n */\nexport function toQuerySerialization(textConfiguration) {\n    if (textConfiguration === undefined) {\n        return undefined;\n    }\n    switch (textConfiguration.kind) {\n        case \"csv\":\n            return {\n                format: {\n                    type: \"delimited\",\n                    delimitedTextConfiguration: {\n                        columnSeparator: textConfiguration.columnSeparator || \",\",\n                        fieldQuote: textConfiguration.fieldQuote || \"\",\n                        recordSeparator: textConfiguration.recordSeparator,\n                        escapeChar: textConfiguration.escapeCharacter || \"\",\n                        headersPresent: textConfiguration.hasHeaders || false,\n                    },\n                },\n            };\n        case \"json\":\n            return {\n                format: {\n                    type: \"json\",\n                    jsonTextConfiguration: {\n                        recordSeparator: textConfiguration.recordSeparator,\n                    },\n                },\n            };\n        case \"arrow\":\n            return {\n                format: {\n                    type: \"arrow\",\n                    arrowConfiguration: {\n                        schema: textConfiguration.schema,\n                    },\n                },\n            };\n        case \"parquet\":\n            return {\n                format: {\n                    type: \"parquet\",\n                },\n            };\n        default:\n            throw Error(\"Invalid BlobQueryTextConfiguration.\");\n    }\n}\nexport function parseObjectReplicationRecord(objectReplicationRecord) {\n    if (!objectReplicationRecord) {\n        return undefined;\n    }\n    if (\"policy-id\" in objectReplicationRecord) {\n        // If the dictionary contains a key with policy id, we are not required to do any parsing since\n        // the policy id should already be stored in the ObjectReplicationDestinationPolicyId.\n        return undefined;\n    }\n    const orProperties = [];\n    for (const key in objectReplicationRecord) {\n        const ids = key.split(\"_\");\n        const policyPrefix = \"or-\";\n        if (ids[0].startsWith(policyPrefix)) {\n            ids[0] = ids[0].substring(policyPrefix.length);\n        }\n        const rule = {\n            ruleId: ids[1],\n            replicationStatus: objectReplicationRecord[key],\n        };\n        const policyIndex = orProperties.findIndex((policy) => policy.policyId === ids[0]);\n        if (policyIndex > -1) {\n            orProperties[policyIndex].rules.push(rule);\n        }\n        else {\n            orProperties.push({\n                policyId: ids[0],\n                rules: [rule],\n            });\n        }\n    }\n    return orProperties;\n}\n/**\n * Attach a TokenCredential to an object.\n *\n * @param thing -\n * @param credential -\n */\nexport function attachCredential(thing, credential) {\n    thing.credential = credential;\n    return thing;\n}\nexport function httpAuthorizationToString(httpAuthorization) {\n    return httpAuthorization ? httpAuthorization.scheme + \" \" + httpAuthorization.value : undefined;\n}\nexport function BlobNameToString(name) {\n    if (name.encoded) {\n        return decodeURIComponent(name.content);\n    }\n    else {\n        return name.content;\n    }\n}\nexport function ConvertInternalResponseOfListBlobFlat(internalResponse) {\n    return Object.assign(Object.assign({}, internalResponse), { segment: {\n            blobItems: internalResponse.segment.blobItems.map((blobItemInteral) => {\n                const blobItem = Object.assign(Object.assign({}, blobItemInteral), { name: BlobNameToString(blobItemInteral.name) });\n                return blobItem;\n            }),\n        } });\n}\nexport function ConvertInternalResponseOfListBlobHierarchy(internalResponse) {\n    var _a;\n    return Object.assign(Object.assign({}, internalResponse), { segment: {\n            blobPrefixes: (_a = internalResponse.segment.blobPrefixes) === null || _a === void 0 ? void 0 : _a.map((blobPrefixInternal) => {\n                const blobPrefix = Object.assign(Object.assign({}, blobPrefixInternal), { name: BlobNameToString(blobPrefixInternal.name) });\n                return blobPrefix;\n            }),\n            blobItems: internalResponse.segment.blobItems.map((blobItemInteral) => {\n                const blobItem = Object.assign(Object.assign({}, blobItemInteral), { name: BlobNameToString(blobItemInteral.name) });\n                return blobItem;\n            }),\n        } });\n}\nexport function* ExtractPageRangeInfoItems(getPageRangesSegment) {\n    let pageRange = [];\n    let clearRange = [];\n    if (getPageRangesSegment.pageRange)\n        pageRange = getPageRangesSegment.pageRange;\n    if (getPageRangesSegment.clearRange)\n        clearRange = getPageRangesSegment.clearRange;\n    let pageRangeIndex = 0;\n    let clearRangeIndex = 0;\n    while (pageRangeIndex < pageRange.length && clearRangeIndex < clearRange.length) {\n        if (pageRange[pageRangeIndex].start < clearRange[clearRangeIndex].start) {\n            yield {\n                start: pageRange[pageRangeIndex].start,\n                end: pageRange[pageRangeIndex].end,\n                isClear: false,\n            };\n            ++pageRangeIndex;\n        }\n        else {\n            yield {\n                start: clearRange[clearRangeIndex].start,\n                end: clearRange[clearRangeIndex].end,\n                isClear: true,\n            };\n            ++clearRangeIndex;\n        }\n    }\n    for (; pageRangeIndex < pageRange.length; ++pageRangeIndex) {\n        yield {\n            start: pageRange[pageRangeIndex].start,\n            end: pageRange[pageRangeIndex].end,\n            isClear: false,\n        };\n    }\n    for (; clearRangeIndex < clearRange.length; ++clearRangeIndex) {\n        yield {\n            start: clearRange[clearRangeIndex].start,\n            end: clearRange[clearRangeIndex].end,\n            isClear: true,\n        };\n    }\n}\n/**\n * Escape the blobName but keep path separator ('/').\n */\nexport function EscapePath(blobName) {\n    const split = blobName.split(\"/\");\n    for (let i = 0; i < split.length; i++) {\n        split[i] = encodeURIComponent(split[i]);\n    }\n    return split.join(\"/\");\n}\n/**\n * A typesafe helper for ensuring that a given response object has\n * the original _response attached.\n * @param response - A response object from calling a client operation\n * @returns The same object, but with known _response property\n */\nexport function assertResponse(response) {\n    if (`_response` in response) {\n        return response;\n    }\n    throw new TypeError(`Unexpected response object ${response}`);\n}\n//# sourceMappingURL=utils.common.js.map","/*! https://github.com/nevware21/ts-utils v0.11.6 */\n/*\n * Copyright (c) NevWare21 Solutions LLC and contributors. All rights reserved.\n * Licensed under the MIT license.\n */\n/*#__NO_SIDE_EFFECTS__*/\nfunction _pureAssign(func1, func2) {\n    return func1 || func2;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _pureRef(value, name) {\n    return value[name];\n}\n\nvar UNDEF_VALUE = undefined;\nvar NULL_VALUE = null;\nvar EMPTY = \"\";\nvar FUNCTION = \"function\";\nvar OBJECT = \"object\";\nvar PROTOTYPE = \"prototype\";\nvar __PROTO__ = \"__proto__\";\nvar UNDEFINED = \"undefined\";\nvar CONSTRUCTOR = \"constructor\";\nvar SYMBOL = \"Symbol\";\nvar POLYFILL_TAG = \"_polyfill\";\nvar LENGTH = \"length\";\nvar NAME = \"name\";\nvar CALL = \"call\";\nvar TO_STRING = \"toString\";\nvar ObjClass = ( /*#__PURE__*/_pureAssign(Object));\nvar ObjProto = ( /*#__PURE__*/_pureRef(ObjClass, PROTOTYPE));\nvar StrCls = ( /*#__PURE__*/_pureAssign(String));\nvar StrProto = ( /*#__PURE__*/_pureRef(StrCls, PROTOTYPE));\nvar MathCls = ( /*#__PURE__*/_pureAssign(Math));\nvar ArrCls = ( /*#__PURE__*/_pureAssign(Array));\nvar ArrProto = ( /*#__PURE__*/_pureRef(ArrCls, PROTOTYPE));\nvar ArrSlice = ( /*#__PURE__*/_pureRef(ArrProto, \"slice\"));\n\nfunction safe(func, argArray) {\n    try {\n        return {\n            v: func.apply(this, argArray)\n        };\n    }\n    catch (e) {\n        return { e: e };\n    }\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction safeGet(cb, defValue) {\n    var result = safe(cb);\n    return result.e ? defValue : result.v;\n}\n\nvar _primitiveTypes;\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createIs(theType) {\n    return function (value) {\n        return typeof value === theType;\n    };\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createObjIs(theName) {\n    var theType = \"[object \" + theName + \"]\";\n    return function (value) {\n        return !!(value && objToString(value) === theType);\n    };\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction objToString(value) {\n    return ObjProto[TO_STRING].call(value);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isTypeof(value, theType) {\n    return typeof value === theType;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isUndefined(value) {\n    return typeof value === UNDEFINED || value === UNDEFINED;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isStrictUndefined(arg) {\n    return !isDefined(arg);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isNullOrUndefined(value) {\n    return value === NULL_VALUE || isUndefined(value);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isStrictNullOrUndefined(value) {\n    return value === NULL_VALUE || !isDefined(value);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isDefined(arg) {\n    return !!arg || arg !== UNDEF_VALUE;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isPrimitive(value) {\n    return value === NULL_VALUE || isPrimitiveType(typeof value);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isPrimitiveType(theType) {\n    !_primitiveTypes && (_primitiveTypes = [\"string\", \"number\", \"boolean\", UNDEFINED, \"symbol\", \"bigint\"]);\n    return !!(theType !== OBJECT && _primitiveTypes.indexOf(theType) !== -1);\n}\nvar isString = ( /*#__PURE__*/_createIs(\"string\"));\nvar isFunction = ( /*#__PURE__*/_createIs(FUNCTION));\n/*#__NO_SIDE_EFFECTS__*/\nfunction isObject(value) {\n    if (!value && isNullOrUndefined(value)) {\n        return false;\n    }\n    return !!value && typeof value === OBJECT;\n}\nvar isArray = ( /* #__PURE__*/_pureRef(ArrCls, \"isArray\"));\nvar isDate = ( /*#__PURE__*/_createObjIs(\"Date\"));\nvar isNumber = ( /*#__PURE__*/_createIs(\"number\"));\nvar isBoolean = ( /*#__PURE__*/_createIs(\"boolean\"));\nvar isRegExp = ( /*#__PURE__*/_createObjIs(\"RegExp\"));\nvar isFile = ( /*#__PURE__*/_createObjIs(\"File\"));\nvar isFormData = ( /*#__PURE__*/_createObjIs(\"FormData\"));\nvar isBlob = ( /*#__PURE__*/_createObjIs(\"Blob\"));\nvar isArrayBuffer = ( /*#__PURE__*/_createObjIs(\"ArrayBuffer\"));\nvar isError = ( /*#__PURE__*/_createObjIs(\"Error\"));\n/*#__NO_SIDE_EFFECTS__*/\nfunction isPromiseLike(value) {\n    return !!(value && value.then && isFunction(value.then));\n}\nvar isThenable = isPromiseLike;\n/*#__NO_SIDE_EFFECTS__*/\nfunction isPromise(value) {\n    return !!(value && value.then && value.catch && isFunction(value.then) && isFunction(value.catch));\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isNotTruthy(value) {\n    return !value || !isTruthy(value);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isTruthy(value) {\n    return !(!value || safeGet(function () { return !(value && (0 + value)); }, !value));\n}\n\nvar objGetOwnPropertyDescriptor = ( /* #__PURE__ */_pureRef(ObjClass, \"getOwnPropertyDescriptor\"));\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction objHasOwnProperty(obj, prop) {\n    return !!obj && ObjProto.hasOwnProperty[CALL](obj, prop);\n}\n\nvar objHasOwn = ( /*#__PURE__*/_pureAssign(( /* #__PURE__ */_pureRef(ObjClass, \"hasOwn\")), polyObjHasOwn));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyObjHasOwn(obj, prop) {\n    return objHasOwnProperty(obj, prop) || !!objGetOwnPropertyDescriptor(obj, prop);\n}\n\nfunction objForEachKey(theObject, callbackfn, thisArg) {\n    if (theObject && isObject(theObject)) {\n        for (var prop in theObject) {\n            if (objHasOwn(theObject, prop)) {\n                if (callbackfn[CALL](thisArg || theObject, prop, theObject[prop]) === -1) {\n                    break;\n                }\n            }\n        }\n    }\n}\n\nvar propMap = {\n    e: \"enumerable\",\n    c: \"configurable\",\n    v: \"value\",\n    w: \"writable\",\n    g: \"get\",\n    s: \"set\"\n};\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createProp(value) {\n    var prop = {};\n    prop[propMap[\"c\"]] = true;\n    prop[propMap[\"e\"]] = true;\n    if (value.l) {\n        prop.get = function () { return value.l.v; };\n        var desc = objGetOwnPropertyDescriptor(value.l, \"v\");\n        if (desc && desc.set) {\n            prop.set = function (newValue) {\n                value.l.v = newValue;\n            };\n        }\n    }\n    objForEachKey(value, function (key, value) {\n        prop[propMap[key]] = isStrictUndefined(value) ? prop[propMap[key]] : value;\n    });\n    return prop;\n}\nvar objDefineProp = ( /*#__PURE__*/_pureRef(ObjClass, \"defineProperty\"));\nvar objDefineProperties = ( /*#__PURE__*/_pureRef(ObjClass, \"defineProperties\"));\nfunction objDefineGet(target, key, value, configurable, enumerable) {\n    var _a;\n    return objDefineProp(target, key, _createProp((_a = {\n            e: enumerable,\n            c: configurable\n        },\n        _a[isFunction(value) ? \"g\" : \"v\"] = value,\n        _a)));\n}\nfunction objDefineAccessors(target, prop, getProp, setProp, configurable, enumerable) {\n    var desc = {\n        e: enumerable,\n        c: configurable\n    };\n    if (getProp) {\n        desc.g = getProp;\n    }\n    if (setProp) {\n        desc.s = setProp;\n    }\n    return objDefineProp(target, prop, _createProp(desc));\n}\nfunction objDefine(target, key, propDesc) {\n    return objDefineProp(target, key, _createProp(propDesc));\n}\nfunction objDefineProps(target, propDescMap) {\n    var props = {};\n    objForEachKey(propDescMap, function (key, value) {\n        props[key] = _createProp(value);\n    });\n    return objDefineProperties(target, props);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createKeyValueMap(values, keyType, valueType, completeFn, writable) {\n    var theMap = {};\n    objForEachKey(values, function (key, value) {\n        _assignMapValue(theMap, key, keyType ? value : key, writable);\n        _assignMapValue(theMap, value, valueType ? value : key, writable);\n    });\n    return completeFn ? completeFn(theMap) : theMap;\n}\nfunction _assignMapValue(theMap, key, value, writable) {\n    objDefineProp(theMap, key, {\n        value: value,\n        enumerable: true,\n        writable: !!writable\n    });\n}\n\nvar asString = ( /* #__PURE__ */_pureAssign(StrCls));\n\nvar ERROR_TYPE = \"[object Error]\";\n/*#__NO_SIDE_EFFECTS__*/\nfunction dumpObj(object, format) {\n    var propertyValueDump = EMPTY;\n    var objType = ObjProto[TO_STRING][CALL](object);\n    if (objType === ERROR_TYPE) {\n        object = { stack: asString(object.stack), message: asString(object.message), name: asString(object.name) };\n    }\n    try {\n        propertyValueDump = JSON.stringify(object, NULL_VALUE, format ? ((typeof format === \"number\") ? format : 4) : UNDEF_VALUE);\n        propertyValueDump = (propertyValueDump ? propertyValueDump.replace(/\"(\\w+)\"\\s*:\\s{0,1}/g, \"$1: \") : NULL_VALUE) || asString(object);\n    }\n    catch (e) {\n        propertyValueDump = \" - \" + dumpObj(e, format);\n    }\n    return objType + \": \" + propertyValueDump;\n}\n\nfunction throwError(message) {\n    throw new Error(message);\n}\nfunction throwTypeError(message) {\n    throw new TypeError(message);\n}\nfunction throwRangeError(message) {\n    throw new RangeError(message);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyObjKeys(obj) {\n    if (!isObject(obj) || obj === NULL_VALUE) {\n        throwTypeError(\"non-object \" + dumpObj(obj));\n    }\n    var result = [];\n    for (var prop in obj) {\n        if (objHasOwn(obj, prop)) {\n            result.push(prop);\n        }\n    }\n    return result;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyObjEntries(value) {\n    var result = [];\n    objForEachKey(value, function (key, value) {\n        result.push([key, value]);\n    });\n    return result;\n}\n\nvar _objFreeze = ( /* #__PURE__ */_pureRef(ObjClass, \"freeze\"));\nfunction _doNothing(value) {\n    return value;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _getProto(value) {\n    return value[__PROTO__] || NULL_VALUE;\n}\nvar objAssign = ( /*#__PURE__*/_pureRef(ObjClass, \"assign\"));\nvar objKeys = ( /*#__PURE__*/_pureRef(ObjClass, \"keys\"));\nfunction objDeepFreeze(value) {\n    if (_objFreeze) {\n        objForEachKey(value, function (key, value) {\n            if (isArray(value) || isObject(value)) {\n                objDeepFreeze(value);\n            }\n        });\n    }\n    return objFreeze(value);\n}\nvar objFreeze = ( /* #__PURE__*/_pureAssign(_objFreeze, _doNothing));\nvar objSeal = ( /* #__PURE__*/_pureAssign(( /* #__PURE__*/_pureRef(ObjClass, \"seal\")), _doNothing));\nvar objGetPrototypeOf = ( /* #__PURE__*/_pureAssign(( /* #__PURE__*/_pureRef(ObjClass, \"getPrototypeOf\")), _getProto));\nvar objEntries = ( /* #__PURE__*/_pureAssign(( /* #__PURE__*/_pureRef(ObjClass, \"entries\")), polyObjEntries));\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction createEnum(values) {\n    return _createKeyValueMap(values, 1 , 0 , objFreeze);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createEnumKeyMap(values) {\n    return _createKeyValueMap(values, 0 , 0 , objFreeze);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createEnumValueMap(values) {\n    return _createKeyValueMap(values, 1 , 1 , objFreeze);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createSimpleMap(values) {\n    var mapClass = {};\n    objForEachKey(values, function (key, value) {\n        _assignMapValue(mapClass, key, value[1]);\n        _assignMapValue(mapClass, value[0], value[1]);\n    });\n    return objFreeze(mapClass);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createTypeMap(values) {\n    return createSimpleMap(values);\n}\n\nvar _wellKnownSymbolMap = /*#__PURE__*/ createEnumKeyMap({\n    asyncIterator: 0 ,\n    hasInstance: 1 ,\n    isConcatSpreadable: 2 ,\n    iterator: 3 ,\n    match: 4 ,\n    matchAll: 5 ,\n    replace: 6 ,\n    search: 7 ,\n    species: 8 ,\n    split: 9 ,\n    toPrimitive: 10 ,\n    toStringTag: 11 ,\n    unscopables: 12\n});\n\nvar GLOBAL_CONFIG_KEY = \"__tsUtils$gblCfg\";\nvar _globalCfg;\n/*#__NO_SIDE_EFFECTS__*/\nfunction _getGlobalValue() {\n    var result;\n    if (typeof globalThis !== UNDEFINED) {\n        result = globalThis;\n    }\n    if (!result && typeof self !== UNDEFINED) {\n        result = self;\n    }\n    if (!result && typeof window !== UNDEFINED) {\n        result = window;\n    }\n    if (!result && typeof global !== UNDEFINED) {\n        result = global;\n    }\n    return result;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _getGlobalConfig() {\n    if (!_globalCfg) {\n        var gbl = safe(_getGlobalValue).v || {};\n        _globalCfg = gbl[GLOBAL_CONFIG_KEY] = gbl[GLOBAL_CONFIG_KEY] || {};\n    }\n    return _globalCfg;\n}\n\nvar _unwrapFunction = ( _unwrapFunctionWithPoly);\n/*#__NO_SIDE_EFFECTS__*/\nfunction _unwrapFunctionWithPoly(funcName, clsProto, polyFunc) {\n    var clsFn = clsProto ? clsProto[funcName] : NULL_VALUE;\n    return function (thisArg) {\n        var theFunc = (thisArg ? thisArg[funcName] : NULL_VALUE) || clsFn;\n        if (theFunc || polyFunc) {\n            var theArgs = arguments;\n            return (theFunc || polyFunc).apply(thisArg, theFunc ? ArrSlice[CALL](theArgs, 1) : theArgs);\n        }\n        throwTypeError(\"\\\"\" + asString(funcName) + \"\\\" not defined for \" + dumpObj(thisArg));\n    };\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _unwrapProp(propName) {\n    return function (thisArg) {\n        return thisArg[propName];\n    };\n}\n\nvar mathMin = ( /*#__PURE__*/_pureRef(MathCls, \"min\"));\nvar mathMax = ( /*#__PURE__*/_pureRef(MathCls, \"max\"));\n\nvar strSlice = ( /*#__PURE__*/_unwrapFunction(\"slice\", StrProto));\n\nvar strSubstring = ( /*#__PURE__*/_unwrapFunction(\"substring\", StrProto));\nvar strSubstr = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"substr\", StrProto, polyStrSubstr));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyStrSubstr(value, start, length) {\n    if (isNullOrUndefined(value)) {\n        throwTypeError(\"Invalid \" + dumpObj(value));\n    }\n    if (length < 0) {\n        return EMPTY;\n    }\n    start = start || 0;\n    if (start < 0) {\n        start = mathMax(start + value[LENGTH], 0);\n    }\n    if (isUndefined(length)) {\n        return strSlice(value, start);\n    }\n    return strSlice(value, start, start + length);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction strLeft(value, count) {\n    return strSubstring(value, 0, count);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction strRight(value, count) {\n    return count <= 0 ? EMPTY : (value[LENGTH] > count ? strSlice(value, -count) : value);\n}\n\nvar UNIQUE_REGISTRY_ID = \"_urid\";\nvar _polySymbols;\n/*#__NO_SIDE_EFFECTS__*/\nfunction _globalSymbolRegistry() {\n    if (!_polySymbols) {\n        var gblCfg = _getGlobalConfig();\n        _polySymbols = gblCfg.gblSym = gblCfg.gblSym || { k: {}, s: {} };\n    }\n    return _polySymbols;\n}\nvar _wellKnownSymbolCache;\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyNewSymbol(description) {\n    var theSymbol = {\n        description: asString(description),\n        toString: function () { return SYMBOL + \"(\" + description + \")\"; }\n    };\n    theSymbol[POLYFILL_TAG] = true;\n    return theSymbol;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction polySymbolFor(key) {\n    var registry = _globalSymbolRegistry();\n    if (!objHasOwn(registry.k, key)) {\n        var newSymbol_1 = polyNewSymbol(key);\n        var regId_1 = objKeys(registry.s).length;\n        newSymbol_1[UNIQUE_REGISTRY_ID] = function () { return regId_1 + \"_\" + newSymbol_1[TO_STRING](); };\n        registry.k[key] = newSymbol_1;\n        registry.s[newSymbol_1[UNIQUE_REGISTRY_ID]()] = asString(key);\n    }\n    return registry.k[key];\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction polySymbolKeyFor(sym) {\n    if (!sym || !sym[TO_STRING] || strSubstring(sym[TO_STRING](), 0, 6) != SYMBOL) {\n        throwTypeError(sym + \" is not a symbol\");\n    }\n    var regId = sym[POLYFILL_TAG] && sym[UNIQUE_REGISTRY_ID] && sym[UNIQUE_REGISTRY_ID]();\n    return regId ? _globalSymbolRegistry().s[regId] : undefined;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyGetKnownSymbol(name) {\n    !_wellKnownSymbolCache && (_wellKnownSymbolCache = {});\n    var result;\n    var knownName = _wellKnownSymbolMap[name];\n    if (knownName) {\n        result = _wellKnownSymbolCache[knownName] = _wellKnownSymbolCache[knownName] || polyNewSymbol(SYMBOL + \".\" + knownName);\n    }\n    return result;\n}\n\nvar _globalLazyTestHooks;\nfunction _initTestHooks() {\n    _globalLazyTestHooks = _getGlobalConfig();\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction getLazy(cb) {\n    var lazyValue = {};\n    !_globalLazyTestHooks && _initTestHooks();\n    lazyValue.b = _globalLazyTestHooks.lzy;\n    objDefineProp(lazyValue, \"v\", {\n        configurable: true,\n        get: function () {\n            var result = cb();\n            if (!_globalLazyTestHooks.lzy) {\n                objDefineProp(lazyValue, \"v\", {\n                    value: result\n                });\n            }\n            lazyValue.b = _globalLazyTestHooks.lzy;\n            return result;\n        }\n    });\n    return lazyValue;\n}\nfunction setBypassLazyCache(newValue) {\n    !_globalLazyTestHooks && _initTestHooks();\n    _globalLazyTestHooks.lzy = newValue;\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction createCachedValue(value) {\n    return objDefineProp({\n        toJSON: function () { return value; }\n    }, \"v\", { value: value });\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createDeferredCachedValue(cb) {\n    var theValue = {\n        toJSON: function () { return theValue.v; }\n    };\n    return objDefineProp(theValue, \"v\", {\n        get: function () {\n            var result = cb();\n            cb = NULL_VALUE;\n            objDefineProp(theValue, \"v\", { value: result });\n            return result;\n        },\n        configurable: true\n    });\n}\n\nvar WINDOW = \"window\";\nvar _cachedGlobal;\nfunction _getGlobalInstFn(getFn, theArgs) {\n    var cachedValue;\n    return function () {\n        !_globalLazyTestHooks && _initTestHooks();\n        if (!cachedValue || _globalLazyTestHooks.lzy) {\n            cachedValue = createCachedValue(safe(getFn, theArgs).v);\n        }\n        return cachedValue.v;\n    };\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction lazySafeGetInst(name) {\n    return getLazy(function () { return safe((getInst), [name]).v || UNDEF_VALUE; });\n}\nfunction getGlobal(useCached) {\n    !_globalLazyTestHooks && _initTestHooks();\n    if (!_cachedGlobal || useCached === false || _globalLazyTestHooks.lzy) {\n        _cachedGlobal = createCachedValue(safe(_getGlobalValue).v || NULL_VALUE);\n    }\n    return _cachedGlobal.v;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction getInst(name, useCached) {\n    var gbl;\n    if (!_cachedGlobal || useCached === false) {\n        gbl = getGlobal(useCached);\n    }\n    else {\n        gbl = _cachedGlobal.v;\n    }\n    if (gbl && gbl[name]) {\n        return gbl[name];\n    }\n    if (name === WINDOW) {\n        try {\n            return window;\n        }\n        catch (e) {\n        }\n    }\n    return NULL_VALUE;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction hasDocument() {\n    return !!( /*#__PURE__*/getDocument());\n}\nvar getDocument = ( /*#__PURE__*/_getGlobalInstFn(getInst, [\"document\"]));\n/*#__NO_SIDE_EFFECTS__*/\nfunction hasWindow() {\n    return !!( /*#__PURE__*/getWindow());\n}\nvar getWindow = ( /*#__PURE__*/_getGlobalInstFn(getInst, [WINDOW]));\n/*#__NO_SIDE_EFFECTS__*/\nfunction hasNavigator() {\n    return !!( /*#__PURE__*/getNavigator());\n}\nvar getNavigator = ( /*#__PURE__*/_getGlobalInstFn(getInst, [\"navigator\"]));\n/*#__NO_SIDE_EFFECTS__*/\nfunction hasHistory() {\n    return !!( /*#__PURE__*/getHistory());\n}\nvar getHistory = ( /*#__PURE__*/_getGlobalInstFn(getInst, [\"history\"]));\nvar isNode = ( /*#__PURE__*/_getGlobalInstFn(function () {\n    return !!( /*#__PURE__*/safe(function () { return (process && (process.versions || {}).node); }).v);\n}));\nvar isWebWorker = ( /*#__PURE__*/_getGlobalInstFn(function () {\n    return !!( /*#__PURE__*/safe(function () { return self && self instanceof WorkerGlobalScope; }).v);\n}));\n\nvar _symbol;\nvar _symbolFor;\nvar _symbolKeyFor;\n/*#__NO_SIDE_EFFECTS__*/\nfunction _initSymbol() {\n    _symbol = ( /*#__PURE__*/createCachedValue(safe((getInst), [SYMBOL]).v));\n    return _symbol;\n}\nfunction _getSymbolKey(key) {\n    var gblSym = ((!_globalLazyTestHooks.lzy ? _symbol : 0) || _initSymbol());\n    return (gblSym.v ? gblSym.v[key] : UNDEF_VALUE);\n}\nvar isSymbol = ( /*#__PURE__*/_createIs(\"symbol\"));\n/*#__NO_SIDE_EFFECTS__*/\nfunction hasSymbol() {\n    return !!( /*#__PURE__*/getSymbol());\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction getSymbol() {\n    !_globalLazyTestHooks && _initTestHooks();\n    return ((!_globalLazyTestHooks.lzy ? _symbol : 0) || _initSymbol()).v;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction getKnownSymbol(name, noPoly) {\n    var knownName = _wellKnownSymbolMap[name];\n    !_globalLazyTestHooks && _initTestHooks();\n    var sym = ((!_globalLazyTestHooks.lzy ? _symbol : 0) || _initSymbol());\n    return sym.v ? sym.v[knownName || name] : (!noPoly ? polyGetKnownSymbol(name) : UNDEF_VALUE);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction newSymbol(description, noPoly) {\n    !_globalLazyTestHooks && _initTestHooks();\n    var sym = ((!_globalLazyTestHooks.lzy ? _symbol : 0) || _initSymbol());\n    return sym.v ? sym.v(description) : (!noPoly ? polyNewSymbol(description) : NULL_VALUE);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction symbolFor(key) {\n    !_globalLazyTestHooks && _initTestHooks();\n    _symbolFor = ((!_globalLazyTestHooks.lzy ? _symbolFor : 0) || ( /*#__PURE__*/createCachedValue(safe((_getSymbolKey), [\"for\"]).v)));\n    return (_symbolFor.v || polySymbolFor)(key);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction symbolKeyFor(sym) {\n    !_globalLazyTestHooks && _initTestHooks();\n    _symbolKeyFor = ((!_globalLazyTestHooks.lzy ? _symbolKeyFor : 0) || ( /*#__PURE__*/createCachedValue(safe((_getSymbolKey), [\"keyFor\"]).v)));\n    return (_symbolKeyFor.v || polySymbolKeyFor)(sym);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction isIterator(value) {\n    return !!value && isFunction(value.next);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction isIterable(value) {\n    return !isStrictNullOrUndefined(value) && isFunction(value[getKnownSymbol(3 )]);\n}\n\nvar _iterSymbol$1;\nfunction iterForOf(iter, callbackfn, thisArg) {\n    if (iter) {\n        if (!isIterator(iter)) {\n            !_iterSymbol$1 && (_iterSymbol$1 = createCachedValue(getKnownSymbol(3 )));\n            iter = iter[_iterSymbol$1.v] ? iter[_iterSymbol$1.v]() : NULL_VALUE;\n        }\n        if (isIterator(iter)) {\n            var err = UNDEF_VALUE;\n            var iterResult = UNDEF_VALUE;\n            try {\n                var count = 0;\n                while (!(iterResult = iter.next()).done) {\n                    if (callbackfn[CALL](thisArg || iter, iterResult.value, count, iter) === -1) {\n                        break;\n                    }\n                    count++;\n                }\n            }\n            catch (failed) {\n                err = { e: failed };\n                if (iter.throw) {\n                    iterResult = NULL_VALUE;\n                    iter.throw(err);\n                }\n            }\n            finally {\n                try {\n                    if (iterResult && !iterResult.done) {\n                        iter.return && iter.return(iterResult);\n                    }\n                }\n                finally {\n                    if (err) {\n                        // eslint-disable-next-line no-unsafe-finally\n                        throw err.e;\n                    }\n                }\n            }\n        }\n    }\n}\n\nfunction fnApply(fn, thisArg, argArray) {\n    return fn.apply(thisArg, argArray);\n}\nfunction fnCall(fn, thisArg) {\n    return fn.apply(thisArg, ArrSlice[CALL](arguments, 2));\n}\nfunction fnBind(fn, thisArg) {\n    return fn.bind.apply(fn, ArrSlice[CALL](arguments, 1));\n}\n\nfunction arrAppend(target, elms) {\n    if (!isUndefined(elms) && target) {\n        if (isArray(elms)) {\n            fnApply(target.push, target, elms);\n        }\n        else if (isIterator(elms) || isIterable(elms)) {\n            iterForOf(elms, function (elm) {\n                target.push(elm);\n            });\n        }\n        else {\n            target.push(elms);\n        }\n    }\n    return target;\n}\n\nvar arrEvery = /*#__PURE__*/ _unwrapFunction(\"every\", ArrProto);\nvar arrFilter = /*#__PURE__*/ _unwrapFunction(\"filter\", ArrProto);\n\nfunction arrForEach(theArray, callbackfn, thisArg) {\n    if (theArray) {\n        var len = theArray[LENGTH] >>> 0;\n        for (var idx = 0; idx < len; idx++) {\n            if (idx in theArray) {\n                if (callbackfn[CALL](thisArg || theArray, theArray[idx], idx, theArray) === -1) {\n                    break;\n                }\n            }\n        }\n    }\n}\n\nvar arrIndexOf = ( /*#__PURE__*/_unwrapFunction(\"indexOf\", ArrProto));\nvar arrLastIndexOf = ( /*#__PURE__*/_unwrapFunction(\"lastIndexOf\", ArrProto));\n\nvar arrMap = ( /*#__PURE__*/_unwrapFunction(\"map\", ArrProto));\n\nfunction arrSlice(theArray, start, end) {\n    return ((theArray ? theArray[\"slice\"] : NULL_VALUE) || ArrSlice).apply(theArray, ArrSlice[CALL](arguments, 1));\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyIsArray(value) {\n    if (isNullOrUndefined(value)) {\n        return false;\n    }\n    return objToString(value) === \"[object Array]\";\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyArrIncludes(theArray, searchElement, fromIndex) {\n    return arrIndexOf(theArray, searchElement, fromIndex) !== -1;\n}\nfunction polyArrFind(theArray, callbackFn, thisArg) {\n    var result;\n    var idx = polyArrFindIndex(theArray, callbackFn, thisArg);\n    return idx !== -1 ? theArray[idx] : result;\n}\nfunction polyArrFindIndex(theArray, callbackFn, thisArg) {\n    var result = -1;\n    arrForEach(theArray, function (value, index) {\n        if (callbackFn[CALL](thisArg | theArray, value, index, theArray)) {\n            result = index;\n            return -1;\n        }\n    });\n    return result;\n}\nfunction polyArrFindLast(theArray, callbackFn, thisArg) {\n    var result;\n    var idx = polyArrFindLastIndex(theArray, callbackFn, thisArg);\n    return idx !== -1 ? theArray[idx] : result;\n}\nfunction polyArrFindLastIndex(theArray, callbackFn, thisArg) {\n    var result = -1;\n    var len = theArray[LENGTH] >>> 0;\n    for (var idx = len - 1; idx >= 0; idx--) {\n        if (idx in theArray && callbackFn[CALL](thisArg | theArray, theArray[idx], idx, theArray)) {\n            result = idx;\n            break;\n        }\n    }\n    return result;\n}\nfunction polyArrFrom(theValue, mapFn, thisArg) {\n    if (isArray(theValue)) {\n        var result_1 = arrSlice(theValue);\n        return mapFn ? arrMap(result_1, mapFn, thisArg) : result_1;\n    }\n    var result = [];\n    iterForOf(theValue, function (value, cnt) {\n        return result.push(mapFn ? mapFn[CALL](thisArg, value, cnt) : value);\n    });\n    return result;\n}\n\nvar arrFind = /*#__PURE__*/ _unwrapFunctionWithPoly(\"find\", ArrProto, polyArrFind);\nvar arrFindIndex = /*#__PURE__*/ _unwrapFunctionWithPoly(\"findIndex\", ArrProto, polyArrFindIndex);\nvar arrFindLast = /*#__PURE__*/ _unwrapFunctionWithPoly(\"findLast\", ArrProto, polyArrFindLast);\nvar arrFindLastIndex = /*#__PURE__*/ _unwrapFunctionWithPoly(\"findLastIndex\", ArrProto, polyArrFindLastIndex);\n\nvar arrFrom = ( /* #__PURE__*/_pureAssign(( /* #__PURE__*/_pureRef(ArrCls, \"from\")), polyArrFrom));\n\nvar arrIncludes = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"includes\", ArrProto, polyArrIncludes));\nvar arrContains = arrIncludes;\n\nvar arrReduce = ( /*#__PURE__*/_unwrapFunction(\"reduce\", ArrProto));\n\nvar arrSome = ( /*#__PURE__*/_unwrapFunction(\"some\", ArrProto));\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction createFnDeferredProxy(hostFn, funcName) {\n    return function () {\n        var theArgs = ArrSlice[CALL](arguments);\n        var theHost = hostFn();\n        return fnApply(theHost[funcName], theHost, theArgs);\n    };\n}\nfunction createProxyFuncs(target, host, funcDefs) {\n    if (target && host && isArray(funcDefs)) {\n        var isDeferred_1 = isFunction(host);\n        arrForEach(funcDefs, function (funcDef) {\n            var targetName = (funcDef.as || funcDef.n);\n            if (funcDef.rp === false && target[targetName]) {\n                return;\n            }\n            target[targetName] = isDeferred_1 ?\n                createFnDeferredProxy(host, funcDef.n) :\n                fnBind(host[funcDef.n], host);\n        });\n    }\n    return target;\n}\n\nvar _iterSymbol;\n/*#__NO_SIDE_EFFECTS__*/\nfunction readArgs(theArgs, start, end) {\n    if (!objHasOwn(theArgs, LENGTH)) {\n        !_iterSymbol && (_iterSymbol = createCachedValue(hasSymbol() && getKnownSymbol(3 )));\n        var iterFn = void 0;\n        if (_iterSymbol.v) {\n            iterFn = theArgs[_iterSymbol.v];\n        }\n        if (iterFn) {\n            var values_1 = [];\n            var from_1 = (start === UNDEF_VALUE || start < 0) ? 0 : start;\n            var to_1 = end < 0 || start < 0 ? UNDEF_VALUE : end;\n            iterForOf(iterFn[CALL](theArgs), function (value, cnt) {\n                if (to_1 !== UNDEF_VALUE && cnt >= to_1) {\n                    return -1;\n                }\n                if (cnt >= from_1) {\n                    values_1.push(value);\n                }\n            });\n            if ((start === UNDEF_VALUE || start >= 0) && (end === UNDEF_VALUE || end >= 0)) {\n                return values_1;\n            }\n            theArgs = values_1;\n        }\n    }\n    return arrSlice(theArgs, start, end);\n}\n\nvar objCreate = ( /* #__PURE__*/_pureAssign(( /* #__PURE__*/_pureRef(ObjClass, \"create\")), polyObjCreate));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyObjCreate(obj) {\n    if (!obj) {\n        return {};\n    }\n    var type = typeof obj;\n    if (type !== OBJECT && type !== FUNCTION) {\n        throwTypeError(\"Prototype must be an Object or function: \" + dumpObj(obj));\n    }\n    function tempFunc() { }\n    tempFunc[PROTOTYPE] = obj;\n    return new tempFunc();\n}\n\nvar _isProtoArray;\nfunction objSetPrototypeOf(obj, proto) {\n    var fn = ObjClass[\"setPrototypeOf\"] ||\n        function (d, b) {\n            var _a;\n            !_isProtoArray && (_isProtoArray = createCachedValue((_a = {}, _a[__PROTO__] = [], _a) instanceof Array));\n            _isProtoArray.v ? d[__PROTO__] = b : objForEachKey(b, function (key, value) { return d[key] = value; });\n        };\n    return fn(obj, proto);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createCustomError(name, d, b) {\n    safe(objDefine, [d, NAME, { v: name, c: true, e: false }]);\n    d = objSetPrototypeOf(d, b);\n    function __() {\n        this[CONSTRUCTOR] = d;\n        safe(objDefine, [this, NAME, { v: name, c: true, e: false }]);\n    }\n    d[PROTOTYPE] = b === NULL_VALUE ? objCreate(b) : (__[PROTOTYPE] = b[PROTOTYPE], new __());\n    return d;\n}\nfunction _setName(baseClass, name) {\n    name && (baseClass[NAME] = name);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createCustomError(name, constructCb, errorBase) {\n    var theBaseClass = errorBase || Error;\n    var orgName = theBaseClass[PROTOTYPE][NAME];\n    var captureFn = Error.captureStackTrace;\n    return _createCustomError(name, function () {\n        var _this = this;\n        var theArgs = arguments;\n        try {\n            safe(_setName, [theBaseClass, name]);\n            var _self = fnApply(theBaseClass, _this, ArrSlice[CALL](theArgs)) || _this;\n            if (_self !== _this) {\n                var orgProto = objGetPrototypeOf(_this);\n                if (orgProto !== objGetPrototypeOf(_self)) {\n                    objSetPrototypeOf(_self, orgProto);\n                }\n            }\n            captureFn && captureFn(_self, _this[CONSTRUCTOR]);\n            constructCb && constructCb(_self, theArgs);\n            return _self;\n        }\n        finally {\n            safe(_setName, [theBaseClass, orgName]);\n        }\n    }, theBaseClass);\n}\nvar _unsupportedError;\nfunction throwUnsupported(message) {\n    if (!_unsupportedError) {\n        _unsupportedError = createCustomError(\"UnsupportedError\");\n    }\n    throw new _unsupportedError(message);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction utcNow() {\n    return (Date.now || polyUtcNow)();\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyUtcNow() {\n    return new Date().getTime();\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createTrimFn(exp) {\n    return function _doTrim(value) {\n        if (isNullOrUndefined(value)) {\n            throwTypeError(\"strTrim called [\" + dumpObj(value) + \"]\");\n        }\n        if (value && value.replace) {\n            value = value.replace(exp, EMPTY);\n        }\n        return value;\n    };\n}\nvar polyStrTrim = ( /*#__PURE__*/_createTrimFn(/^\\s+|(?=\\s)\\s+$/g));\nvar polyStrTrimStart = ( /*#__PURE__*/_createTrimFn(/^\\s+/g));\nvar polyStrTrimEnd = ( /*#__PURE__*/_createTrimFn(/(?=\\s)\\s+$/g));\n\nvar strTrim = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"trim\", StrProto, polyStrTrim));\nvar strTrimStart = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"trimStart\", StrProto, polyStrTrimStart));\nvar strTrimLeft = ( /*#__PURE__*/_pureAssign(strTrimStart));\nvar strTrimEnd = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"trimEnd\", StrProto, polyStrTrimEnd));\nvar strTrimRight = ( /*#__PURE__*/_pureAssign(strTrimEnd));\n\nvar strUpper = ( /*#__PURE__*/_unwrapFunction(\"toUpperCase\", StrProto));\nvar strLower = ( /*#__PURE__*/_unwrapFunction(\"toLowerCase\", StrProto));\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction _convertCase(value, newPrefix, upperWord) {\n    return strTrim(asString(value)).replace(/((_|\\W)+(\\w){0,1}|([a-z])([A-Z]))/g, function (_match, _g1, _g2, wordStart, upperPrefix, upperLetter) {\n        var convertMatch = wordStart || upperLetter || EMPTY;\n        if (upperWord) {\n            convertMatch = strUpper(convertMatch);\n        }\n        return (upperPrefix || EMPTY) + newPrefix + convertMatch;\n    });\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction strLetterCase(value) {\n    return asString(value).replace(/(_|\\b)\\w/g, strUpper);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction strCamelCase(value, upperFirst) {\n    var result = _convertCase(value, \"\", true);\n    return result.replace(/^\\w/, upperFirst ? strUpper : strLower);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction strKebabCase(value, scream) {\n    var result = _convertCase(value, \"-\");\n    return (scream ? strUpper : strLower)(result);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction strSnakeCase(value, scream) {\n    var result = _convertCase(value, \"_\");\n    return (scream ? strUpper : strLower)(result);\n}\n\nvar mathFloor = ( /*#__PURE__*/_pureRef(MathCls, \"floor\"));\nvar mathCeil = ( /*#__PURE__*/_pureRef(MathCls, \"ceil\"));\n\nvar mathTrunc = ( /* #__PURE__*/_pureAssign(( /* #__PURE__*/_pureRef(MathCls, \"trunc\")), polyMathTrunc));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyMathTrunc(value) {\n    var theValue = +value;\n    return (theValue > 0 ? mathFloor : mathCeil)(theValue);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction mathToInt(value, throwInfinity) {\n    var result = +value;\n    if (result == Infinity && throwInfinity) {\n        throwRangeError(\"invalid value [\" + dumpObj(value) + \"]\");\n    }\n    return result !== result || result === 0 ? 0 : mathTrunc(result);\n}\n\nvar strRepeat = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"repeat\", StrProto, polyStrRepeat));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyStrRepeat(value, count) {\n    if (isNullOrUndefined(value)) {\n        throwTypeError(\"can't convert [\" + dumpObj(value) + \"]\");\n    }\n    count = mathToInt(count, true);\n    if (count < 0) {\n        throwRangeError(\"invalid count must be >= 0 && < Infinity\");\n    }\n    var pad = isString(value) ? value : asString(value);\n    var result = EMPTY;\n    for (; count > 0; (count >>>= 1) && (pad += pad)) {\n        if (count & 1) {\n            result += pad;\n        }\n    }\n    return result;\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction _padValue(value, targetLength, padString) {\n    var result = EMPTY;\n    targetLength = mathToInt(targetLength, true);\n    targetLength >>= 0;\n    var len = value[LENGTH];\n    if (len < targetLength) {\n        result = isNullOrUndefined(padString) ? \" \" : asString(padString);\n        targetLength = targetLength - len;\n        if (targetLength > result[LENGTH]) {\n            result = strRepeat(result, mathCeil(targetLength / result[LENGTH]));\n        }\n        if (result[LENGTH] > targetLength) {\n            result = strSubstring(result, 0, targetLength);\n        }\n    }\n    return result;\n}\nvar strPadStart = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"padStart\", StrProto, polyStrPadStart));\nvar strPadEnd = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"padEnd\", StrProto, polyStrPadEnd));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyStrPadStart(value, targetLength, padString) {\n    return _padValue(value, targetLength, padString) + value;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyStrPadEnd(value, targetLength, padString) {\n    return value + _padValue(value, targetLength, padString);\n}\n\nvar DBL_QUOTE = \"\\\"\";\nvar INVALID_JS_NAME = /([^\\w\\d_$])/g;\nvar _htmlEntityCache;\n/*#__NO_SIDE_EFFECTS__*/\nfunction normalizeJsName(jsName, camelCase) {\n    var result = asString(jsName).replace(INVALID_JS_NAME, \"_\");\n    return !isUndefined(camelCase) ? strCamelCase(result, !camelCase) : result;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction encodeAsJson(value, format) {\n    var result;\n    if (isString(value)) {\n        result = DBL_QUOTE + value.replace(/[^\\w .,\\-!@#$%\\^&*\\(\\)_+={}\\[\\]:;|<>?]/g, function (match) {\n            if (match === DBL_QUOTE || match === \"\\\\\") {\n                return \"\\\\\" + match;\n            }\n            var hex = match.charCodeAt(0)[TO_STRING](16);\n            return \"\\\\u\" + strPadStart(strUpper(hex), 4, \"0\");\n        }) + DBL_QUOTE;\n    }\n    else {\n        try {\n            result = JSON.stringify(value, NULL_VALUE, format ? (isNumber(format) ? format : 4) : UNDEF_VALUE);\n        }\n        catch (e) {\n            result = DBL_QUOTE + dumpObj(e) + DBL_QUOTE;\n        }\n    }\n    return result;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction encodeAsHtml(value) {\n    !_htmlEntityCache && (_htmlEntityCache = {\n        \"&\": \"amp\",\n        \"<\": \"lt\",\n        \">\": \"gt\",\n        \"\\\"\": \"quot\",\n        \"'\": \"#39\"\n    });\n    return asString(value).replace(/[&<>\"']/g, function (match) { return \"&\" + _htmlEntityCache[match] + \";\"; });\n}\n\nvar _fnToString;\nvar _objCtrFnString;\nvar _gblWindow;\n/*#__NO_SIDE_EFFECTS__*/\nfunction isPlainObject(value) {\n    if (!value || typeof value !== OBJECT) {\n        return false;\n    }\n    if (!_gblWindow) {\n        _gblWindow = hasWindow() ? getWindow() : true;\n    }\n    var result = false;\n    if (value !== _gblWindow) {\n        if (!_objCtrFnString) {\n            _fnToString = Function[PROTOTYPE][TO_STRING];\n            _objCtrFnString = _fnToString[CALL](ObjClass);\n        }\n        try {\n            var proto = objGetPrototypeOf(value);\n            result = !proto;\n            if (!result) {\n                if (objHasOwnProperty(proto, CONSTRUCTOR)) {\n                    proto = proto[CONSTRUCTOR];\n                }\n                result = !!(proto && typeof proto === FUNCTION && _fnToString[CALL](proto) === _objCtrFnString);\n            }\n        }\n        catch (ex) {\n        }\n    }\n    return result;\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction _defaultDeepCopyHandler(details) {\n    details.value && plainObjDeepCopyHandler(details);\n    return true;\n}\nvar defaultDeepCopyHandlers = [\n    arrayDeepCopyHandler,\n    plainObjDeepCopyHandler,\n    functionDeepCopyHandler,\n    dateDeepCopyHandler\n];\n/*#__NO_SIDE_EFFECTS__*/\nfunction _getSetVisited(visitMap, source, newPath, cb) {\n    var theEntry;\n    arrForEach(visitMap, function (entry) {\n        if (entry.k === source) {\n            theEntry = entry;\n            return -1;\n        }\n    });\n    if (!theEntry) {\n        theEntry = { k: source, v: source };\n        visitMap.push(theEntry);\n        cb(theEntry);\n    }\n    return theEntry.v;\n}\nfunction _deepCopy(visitMap, value, ctx, key) {\n    var userHandler = ctx.handler;\n    var newPath = ctx.path ? (key ? ctx.path.concat(key) : ctx.path) : [];\n    var newCtx = {\n        handler: ctx.handler,\n        src: ctx.src,\n        path: newPath\n    };\n    var theType = typeof value;\n    var isPlain = false;\n    var isPrim = value === NULL_VALUE;\n    if (!isPrim) {\n        if (value && theType === OBJECT) {\n            isPlain = isPlainObject(value);\n        }\n        else {\n            isPrim = isPrimitiveType(theType);\n        }\n    }\n    var details = {\n        type: theType,\n        isPrim: isPrim,\n        isPlain: isPlain,\n        value: value,\n        result: value,\n        path: newPath,\n        origin: ctx.src,\n        copy: function (source, newKey) {\n            return _deepCopy(visitMap, source, newKey ? newCtx : ctx, newKey);\n        },\n        copyTo: function (target, source) {\n            return _copyProps(visitMap, target, source, newCtx);\n        }\n    };\n    if (!details.isPrim) {\n        return _getSetVisited(visitMap, value, newPath, function (newEntry) {\n            objDefine(details, \"result\", {\n                g: function () {\n                    return newEntry.v;\n                },\n                s: function (newValue) {\n                    newEntry.v = newValue;\n                }\n            });\n            var idx = 0;\n            var handler = userHandler;\n            while (!(handler || (idx < defaultDeepCopyHandlers.length ? defaultDeepCopyHandlers[idx++] : _defaultDeepCopyHandler))[CALL](ctx, details)) {\n                handler = NULL_VALUE;\n            }\n        });\n    }\n    if (userHandler && userHandler[CALL](ctx, details)) {\n        return details.result;\n    }\n    return value;\n}\nfunction _copyProps(visitMap, target, source, ctx) {\n    if (!isNullOrUndefined(source)) {\n        for (var key in source) {\n            target[key] = _deepCopy(visitMap, source[key], ctx, key);\n        }\n    }\n    return target;\n}\nfunction objCopyProps(target, source, handler) {\n    var ctx = {\n        handler: handler,\n        src: source,\n        path: []\n    };\n    return _copyProps([], target, source, ctx);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction objDeepCopy(source, handler) {\n    var ctx = {\n        handler: handler,\n        src: source\n    };\n    return _deepCopy([], source, ctx);\n}\nfunction arrayDeepCopyHandler(details) {\n    var value = details.value;\n    if (isArray(value)) {\n        var target = details.result = [];\n        target.length = value.length;\n        details.copyTo(target, value);\n        return true;\n    }\n    return false;\n}\nfunction dateDeepCopyHandler(details) {\n    var value = details.value;\n    if (isDate(value)) {\n        details.result = new Date(value.getTime());\n        return true;\n    }\n    return false;\n}\nfunction functionDeepCopyHandler(details) {\n    if (details.type === FUNCTION) {\n        return true;\n    }\n    return false;\n}\nfunction plainObjDeepCopyHandler(details) {\n    var value = details.value;\n    if (value && details.isPlain) {\n        var target = details.result = {};\n        details.copyTo(target, value);\n        return true;\n    }\n    return false;\n}\n\nfunction _doExtend(target, theArgs) {\n    arrForEach(theArgs, function (theArg) {\n        objCopyProps(target, theArg);\n    });\n    return target;\n}\nfunction deepExtend(target, obj1, obj2, obj3, obj4, obj5, obj6) {\n    return _doExtend(objDeepCopy(target) || {}, ArrSlice[CALL](arguments));\n}\nfunction objExtend(target, obj1, obj2, obj3, obj4, obj5, obj6) {\n    return _doExtend(target || {}, ArrSlice[CALL](arguments));\n}\n\nvar getLength = ( /*#__PURE__*/_unwrapProp(LENGTH));\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction getIntValue(value, defValue) {\n    if (!isNullOrUndefined(value)) {\n        if (isNumber(value)) {\n            return value;\n        }\n        var theValue = parseInt(value, 10);\n        return isNaN(theValue) ? defValue : theValue;\n    }\n    return defValue;\n}\n\nvar _perf;\n/*#__NO_SIDE_EFFECTS__*/\nfunction hasPerformance() {\n    return !!getPerformance();\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction getPerformance() {\n    !_globalLazyTestHooks && _initTestHooks();\n    if (!_perf || _globalLazyTestHooks.lzy) {\n        _perf = createCachedValue(safe((getInst), [\"performance\"]).v);\n    }\n    return _perf.v;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction perfNow() {\n    var perf = getPerformance();\n    if (perf && perf.now) {\n        return perf.now();\n    }\n    return utcNow();\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction elapsedTime(startTime) {\n    return perfNow() - startTime;\n}\n\nvar MATCH_ANY = \"(.*)\";\nvar MATCH_SINGLE = \"(.)\";\nfunction _createRegExp(value, escapeRgx, replaceFn, ignoreCase, fullMatch) {\n    // eslint-disable-next-line security/detect-non-literal-regexp\n    return new RegExp((fullMatch ? \"^\" : EMPTY) + replaceFn(value.replace(escapeRgx, \"\\\\$1\")) + (fullMatch ? \"$\" : EMPTY), ignoreCase ? \"i\" : \"\");\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createWildcardRegex(value, ignoreCase, fullMatch) {\n    return _createRegExp(asString(value), /([-+|^$#.\\?{}()\\[\\]\\\\/\\\"\\'])/g, function (value) {\n        return value.replace(/\\*/g, MATCH_ANY);\n    }, !!ignoreCase, fullMatch);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createFilenameRegex(value, ignoreCase, fullMatch) {\n    return _createRegExp(asString(value), /([-+|^$#.{}()\\\\\\/\\[\\]\\\"\\'])/g, function (value) {\n        return value.replace(/(\\\\\\\\|\\\\\\/|\\*|\\?)/g, function (_all, g1) {\n            if (g1 == \"\\\\/\" || g1 == \"\\\\\\\\\") {\n                return \"[\\\\\\\\\\\\/]{1}\";\n            }\n            return g1 == \"*\" ? MATCH_ANY : MATCH_SINGLE;\n        });\n    }, !!ignoreCase, fullMatch);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction makeGlobRegex(value, ignoreCase, fullMatch) {\n    return _createRegExp(asString(value), /([-+|^$#.{}()\\\\\\/\\[\\]\\\"\\'])/g, function (value) {\n        return value.replace(/(\\*\\*\\\\[\\\\\\/]|\\\\\\\\|\\\\\\/|\\*\\*|\\*|\\?)/g, function (_all, g1) {\n            if (g1 == \"**\\\\/\" || g1 == \"**\\\\\\\\\") {\n                return \"(.*[\\\\\\\\\\\\/])*\";\n            }\n            if (g1 === \"\\\\/\" || g1 == \"\\\\\\\\\") {\n                return \"[\\\\\\\\\\\\/]{1}\";\n            }\n            if (g1 === \"**\") {\n                return MATCH_ANY;\n            }\n            return g1 === \"*\" ? \"([^\\\\\\\\\\\\/]*)\" : \"([^\\\\\\\\\\\\/]{1})\";\n        });\n    }, !!ignoreCase, fullMatch);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction safeGetLazy(cb, defValue) {\n    return getLazy(function () {\n        var result = safe(cb);\n        return result.e ? defValue : result.v;\n    });\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction _checkLength(value, props) {\n    var result;\n    arrForEach(props, function (prop) {\n        if (prop in value) {\n            var propValue = value[prop];\n            result = (isFunction(propValue) ? propValue() : propValue) > 0;\n            return -1;\n        }\n    });\n    return result;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _hasValue(value, depth) {\n    var result = value === false || value === 0;\n    if (!result && !isNullOrUndefined(value)) {\n        if (isArray(value)) {\n            result = value[LENGTH] > 0;\n        }\n        else if (isDate(value)) {\n            result = !isNaN(value.getTime());\n        }\n        else if (isBoolean(value)) {\n            return true;\n        }\n        else if (isObject(value)) {\n            try {\n                var chkValue = _checkLength(value, [LENGTH, \"byteLength\", \"size\", \"count\"]);\n                if (isBoolean(chkValue)) {\n                    return chkValue;\n                }\n                if (isFunction(value.valueOf) && depth < 5) {\n                    return _hasValue(value.valueOf(), ++depth);\n                }\n            }\n            catch (e) {\n            }\n            return !!objKeys(value)[LENGTH];\n        }\n        else {\n            result = isTruthy(value);\n        }\n    }\n    return result;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction hasValue(value) {\n    return _hasValue(value, 0);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction createIterable(ctx) {\n    return makeIterable({}, ctx);\n}\nfunction makeIterable(target, ctx) {\n    var itSymbol = getKnownSymbol(3 );\n    function _createIterator() {\n        return createIterator(ctx);\n    }\n    target[itSymbol] = _createIterator;\n    return target;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction createIterator(ctx) {\n    var isDone = false;\n    function _value() {\n        return ctx.v;\n    }\n    function _next() {\n        if (!isDone) {\n            isDone = (ctx.n ? ctx.n(arguments) : true);\n        }\n        var result = {\n            done: isDone\n        };\n        if (!isDone) {\n            objDefine(result, \"value\", { g: _value });\n        }\n        return result;\n    }\n    function _return(value) {\n        isDone = true;\n        return {\n            done: true,\n            value: ctx.r && ctx.r(value)\n        };\n    }\n    function _throw(e) {\n        isDone = true;\n        return {\n            done: true,\n            value: ctx.t && ctx.t(e)\n        };\n    }\n    var theIterator = {\n        next: _next\n    };\n    if (ctx.r) {\n        theIterator.return = _return;\n    }\n    if (ctx.t) {\n        theIterator.throw = _throw;\n    }\n    return theIterator;\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction createArrayIterator(values) {\n    var idx = -1;\n    var theValues = values ? values.slice() : [];\n    var len = theValues[LENGTH];\n    function _value() {\n        if (idx >= 0 && idx < len) {\n            return theValues[idx];\n        }\n    }\n    function _getNext() {\n        idx++;\n        return idx >= len;\n    }\n    var ctx = {\n        n: _getNext\n    };\n    objDefine(ctx, \"v\", { g: _value });\n    return createIterator(ctx);\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction createRangeIterator(start, end, step) {\n    var nextValue = start;\n    var theValue = UNDEF_VALUE;\n    if (isNullOrUndefined(end)) {\n        end = start;\n    }\n    var theStep = step;\n    if (!theStep) {\n        theStep = (start <= end) ? 1 : -1;\n    }\n    function _value() {\n        return theValue;\n    }\n    function _getNext() {\n        var isDone = (theStep > 0) ? (nextValue > end) : (nextValue < end);\n        if (!isDone) {\n            theValue = nextValue;\n            nextValue += theStep;\n        }\n        return isDone;\n    }\n    return createIterator(objDefine({\n        n: _getNext\n    }, \"v\", { g: _value }));\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyStrSymSplit(value, splitter, limit) {\n    var splitFn = splitter ? splitter[getKnownSymbol(9 )] : UNDEF_VALUE;\n    return splitFn ? splitFn(value, limit) : [value];\n}\n\nvar strSplit = ( /*#__PURE__*/_unwrapFunction(\"split\", StrProto));\nvar strSymSplit = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"split\", StrProto, !hasSymbol() ? polyStrSymSplit : NULL_VALUE));\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction getValueByKey(target, path, defValue) {\n    if (!path || !target) {\n        return defValue;\n    }\n    var parts = strSplit(path, \".\");\n    var cnt = parts.length;\n    for (var lp = 0; lp < cnt && !isNullOrUndefined(target); lp++) {\n        target = target[parts[lp]];\n    }\n    return (!isNullOrUndefined(target) ? target : defValue);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction getValueByIter(target, iter, defValue) {\n    if (!iter || !target) {\n        return defValue;\n    }\n    iterForOf(iter, function (value) {\n        if (isNullOrUndefined(target)) {\n            return -1;\n        }\n        target = target[value];\n    });\n    return (!isNullOrUndefined(target) ? target : defValue);\n}\nfunction setValueByKey(target, path, value) {\n    if (target && path) {\n        var parts = strSplit(path, \".\");\n        var lastKey = parts.pop();\n        arrForEach(parts, function (key) {\n            if (isNullOrUndefined(target[key])) {\n                target[key] = {};\n            }\n            target = target[key];\n        });\n        target[lastKey] = value;\n    }\n}\nfunction setValueByIter(target, iter, value) {\n    if (target && iter) {\n        var lastKey_1;\n        iterForOf(iter, function (key) {\n            if (lastKey_1) {\n                if (isNullOrUndefined(target[lastKey_1])) {\n                    target[lastKey_1] = {};\n                }\n                target = target[lastKey_1];\n            }\n            lastKey_1 = key;\n        });\n        target[lastKey_1] = value;\n    }\n}\n\nvar strEndsWith = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"endsWith\", StrProto, polyStrEndsWith));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyStrEndsWith(value, searchString, length) {\n    if (!isString(value)) {\n        throwTypeError(\"'\" + dumpObj(value) + \"' is not a string\");\n    }\n    var searchValue = isString(searchString) ? searchString : asString(searchString);\n    var end = (!isUndefined(length) && length < value[LENGTH]) ? length : value[LENGTH];\n    return strSubstring(value, end - searchValue[LENGTH], end) === searchValue;\n}\n\nvar strIndexOf = ( /*#__PURE__*/_unwrapFunction(\"indexOf\", StrProto));\nvar strLastIndexOf = ( /*#__PURE__*/_unwrapFunction(\"lastIndexOf\", StrProto));\n\nvar strIncludes = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"includes\", StrProto, polyStrIncludes));\nvar strContains = ( /*#__PURE__*/_pureAssign(strIncludes));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyStrIncludes(value, searchString, position) {\n    if (isRegExp(searchString)) {\n        throwTypeError(\"'searchString' must not be a regular expression\" + dumpObj(searchString));\n    }\n    return strIndexOf(value, asString(searchString), position) !== -1;\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction strIsNullOrWhiteSpace(value) {\n    if (isString(value)) {\n        return value.replace(/[\\s\\t\\r\\n\\f]+/g, EMPTY) === EMPTY;\n    }\n    return isNullOrUndefined(value);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction strIsNullOrEmpty(value) {\n    if (isString(value)) {\n        return value === EMPTY;\n    }\n    return isNullOrUndefined(value);\n}\n\nvar strStartsWith = ( /*#__PURE__*/_unwrapFunctionWithPoly(\"startsWith\", StrProto, polyStrStartsWith));\n/*#__NO_SIDE_EFFECTS__*/\nfunction polyStrStartsWith(value, searchString, position) {\n    if (!isString(value)) {\n        throwTypeError(\"'\" + dumpObj(value) + \"' is not a string\");\n    }\n    var searchValue = isString(searchString) ? searchString : asString(searchString);\n    var pos = position > 0 ? position : 0;\n    return strSubstring(value, pos, pos + searchValue[LENGTH]) === searchValue;\n}\n\nvar REF = \"ref\";\nvar UNREF = \"unref\";\nvar HAS_REF = \"hasRef\";\nvar ENABLED = \"enabled\";\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createTimerHandler(startTimer, refreshFn, cancelFn) {\n    var ref = true;\n    var timerId = startTimer ? refreshFn(NULL_VALUE) : NULL_VALUE;\n    var theTimerHandler;\n    function _unref() {\n        ref = false;\n        timerId && timerId[UNREF] && timerId[UNREF]();\n        return theTimerHandler;\n    }\n    function _cancel() {\n        timerId && cancelFn(timerId);\n        timerId = NULL_VALUE;\n    }\n    function _refresh() {\n        timerId = refreshFn(timerId);\n        if (!ref) {\n            _unref();\n        }\n        return theTimerHandler;\n    }\n    function _setEnabled(value) {\n        !value && timerId && _cancel();\n        value && !timerId && _refresh();\n    }\n    theTimerHandler = {\n        cancel: _cancel,\n        refresh: _refresh\n    };\n    theTimerHandler[HAS_REF] = function () {\n        if (timerId && timerId[HAS_REF]) {\n            return timerId[HAS_REF]();\n        }\n        return ref;\n    };\n    theTimerHandler[REF] = function () {\n        ref = true;\n        timerId && timerId[REF] && timerId[REF]();\n        return theTimerHandler;\n    };\n    theTimerHandler[UNREF] = _unref;\n    theTimerHandler = objDefineProp(theTimerHandler, ENABLED, {\n        get: function () { return !!timerId; },\n        set: _setEnabled\n    });\n    return {\n        h: theTimerHandler,\n        dn: function () {\n            timerId = NULL_VALUE;\n        }\n    };\n}\n\nfunction _createTimeoutWith(startTimer, overrideFn, theArgs) {\n    var isArr = isArray(overrideFn);\n    var len = isArr ? overrideFn.length : 0;\n    var setFn = (len > 0 ? overrideFn[0] : (!isArr ? overrideFn : UNDEF_VALUE)) || setTimeout;\n    var clearFn = (len > 1 ? overrideFn[1] : UNDEF_VALUE) || clearTimeout;\n    var timerFn = theArgs[0];\n    theArgs[0] = function () {\n        handler.dn();\n        fnApply(timerFn, UNDEF_VALUE, ArrSlice[CALL](arguments));\n    };\n    var handler = _createTimerHandler(startTimer, function (timerId) {\n        if (timerId) {\n            if (timerId.refresh) {\n                timerId.refresh();\n                return timerId;\n            }\n            fnApply(clearFn, UNDEF_VALUE, [timerId]);\n        }\n        return fnApply(setFn, UNDEF_VALUE, theArgs);\n    }, function (timerId) {\n        fnApply(clearFn, UNDEF_VALUE, [timerId]);\n    });\n    return handler.h;\n}\nfunction scheduleTimeout(callback, timeout) {\n    return _createTimeoutWith(true, UNDEF_VALUE, ArrSlice[CALL](arguments));\n}\nfunction scheduleTimeoutWith(overrideFn, callback, timeout) {\n    return _createTimeoutWith(true, overrideFn, ArrSlice[CALL](arguments, 1));\n}\nfunction createTimeout(callback, timeout) {\n    return _createTimeoutWith(false, UNDEF_VALUE, ArrSlice[CALL](arguments));\n}\nfunction createTimeoutWith(overrideFn, callback, timeout) {\n    return _createTimeoutWith(false, overrideFn, ArrSlice[CALL](arguments, 1));\n}\n\nvar _defaultIdleTimeout = 100;\nvar _maxExecutionTime = 50;\n/*#__NO_SIDE_EFFECTS__*/\nfunction hasIdleCallback() {\n    return !!( /*#__PURE__*/getIdleCallback());\n}\nvar getIdleCallback = ( /*#__PURE__*/_getGlobalInstFn(getInst, [\"requestIdleCallback\"]));\nvar getCancelIdleCallback = ( /*#__PURE__*/_getGlobalInstFn(getInst, [\"cancelIdleCallback\"]));\nfunction setDefaultIdleTimeout(timeout) {\n    _defaultIdleTimeout = timeout;\n}\nfunction setDefaultMaxExecutionTime(maxTime) {\n    _maxExecutionTime = maxTime;\n}\nfunction scheduleIdleCallback(callback, options) {\n    function _createDeadline(timedOut) {\n        var startTime = perfNow();\n        return {\n            didTimeout: timedOut,\n            timeRemaining: function () {\n                return _maxExecutionTime - elapsedTime(startTime);\n            }\n        };\n    }\n    if (hasIdleCallback()) {\n        var handler_1 = _createTimerHandler(true, function (idleId) {\n            idleId && getCancelIdleCallback()(idleId);\n            return getIdleCallback()(function (deadline) {\n                handler_1.dn();\n                callback(deadline || _createDeadline(false));\n            }, options);\n        }, function (idleId) {\n            getCancelIdleCallback()(idleId);\n        });\n        return handler_1.h;\n    }\n    var timeout = (options || {}).timeout;\n    if (isUndefined(timeout)) {\n        timeout = _defaultIdleTimeout;\n    }\n    return scheduleTimeout(function () {\n        callback(_createDeadline(true));\n    }, timeout);\n}\n\nfunction scheduleInterval(callback, timeout) {\n    var theArguments = ArrSlice[CALL](arguments);\n    var handler = _createTimerHandler(true, function (intervalId) {\n        intervalId && clearInterval(intervalId);\n        return fnApply(setInterval, UNDEF_VALUE, theArguments);\n    }, function (intervalId) {\n        fnApply(clearInterval, UNDEF_VALUE, [intervalId]);\n    });\n    return handler.h;\n}\n\nexport { arrAppend, arrContains, arrEvery, arrFilter, arrFind, arrFindIndex, arrFindLast, arrFindLastIndex, arrForEach, arrFrom, arrIncludes, arrIndexOf, arrLastIndexOf, arrMap, arrReduce, arrSlice, arrSome, arrayDeepCopyHandler, asString, createArrayIterator, createCachedValue, createCustomError, createDeferredCachedValue, createEnum, createEnumKeyMap, createEnumValueMap, createFilenameRegex, createFnDeferredProxy, createIterable, createIterator, createProxyFuncs, createRangeIterator, createSimpleMap, createTimeout, createTimeoutWith, createTypeMap, createWildcardRegex, dateDeepCopyHandler, deepExtend, dumpObj, elapsedTime, encodeAsHtml, encodeAsJson, fnApply, fnBind, fnCall, functionDeepCopyHandler, getCancelIdleCallback, getDocument, getGlobal, getHistory, getIdleCallback, getInst, getIntValue, getKnownSymbol, getLazy, getLength, getNavigator, getPerformance, getSymbol, getValueByIter, getValueByKey, getWindow, hasDocument, hasHistory, hasIdleCallback, hasNavigator, hasPerformance, hasSymbol, hasValue, hasWindow, isArray, isArrayBuffer, isBlob, isBoolean, isDate, isDefined, isError, isFile, isFormData, isFunction, isIterable, isIterator, isNode, isNotTruthy, isNullOrUndefined, isNumber, isObject, isPlainObject, isPrimitive, isPrimitiveType, isPromise, isPromiseLike, isRegExp, isStrictNullOrUndefined, isStrictUndefined, isString, isSymbol, isThenable, isTruthy, isTypeof, isUndefined, isWebWorker, iterForOf, lazySafeGetInst, makeGlobRegex, makeIterable, mathCeil, mathFloor, mathMax, mathMin, mathToInt, mathTrunc, newSymbol, normalizeJsName, objAssign, objCopyProps, objCreate, objDeepCopy, objDeepFreeze, objDefine, objDefineAccessors, objDefineGet, objDefineProp, objDefineProperties, objDefineProps, objEntries, objExtend, objForEachKey, objFreeze, objGetOwnPropertyDescriptor, objGetPrototypeOf, objHasOwn, objHasOwnProperty, objKeys, objSeal, objSetPrototypeOf, objToString, perfNow, plainObjDeepCopyHandler, polyArrFind, polyArrFindIndex, polyArrFindLast, polyArrFindLastIndex, polyArrFrom, polyArrIncludes, polyGetKnownSymbol, polyIsArray, polyNewSymbol, polyObjEntries, polyObjHasOwn, polyObjKeys, polyStrIncludes, polyStrSubstr, polyStrSymSplit, polyStrTrim, polyStrTrimEnd, polyStrTrimStart, polySymbolFor, polySymbolKeyFor, polyUtcNow, readArgs, safe, safeGet, safeGetLazy, scheduleIdleCallback, scheduleInterval, scheduleTimeout, scheduleTimeoutWith, setBypassLazyCache, setDefaultIdleTimeout, setDefaultMaxExecutionTime, setValueByIter, setValueByKey, strCamelCase, strContains, strEndsWith, strIncludes, strIndexOf, strIsNullOrEmpty, strIsNullOrWhiteSpace, strKebabCase, strLastIndexOf, strLeft, strLetterCase, strLower, strPadEnd, strPadStart, strRepeat, strRight, strSlice, strSnakeCase, strSplit, strStartsWith, strSubstr, strSubstring, strSymSplit, strTrim, strTrimEnd, strTrimLeft, strTrimRight, strTrimStart, strUpper, symbolFor, symbolKeyFor, throwError, throwRangeError, throwTypeError, throwUnsupported, utcNow };\n//# sourceMappingURL=ts-utils.js.map\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar _a;\r\nimport { getGlobal, objCreate, objHasOwnProperty, throwTypeError } from \"@nevware21/ts-utils\";\r\n;\r\nvar UNDEFINED = \"undefined\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Constructor = 'constructor';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Prototype = 'prototype';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strFunction = 'function';\r\n/**\r\n * Used to define the name of the instance function lookup table\r\n * @ignore\r\n */\r\nvar DynInstFuncTable = '_dynInstFuncs';\r\n/**\r\n * Name used to tag the dynamic prototype function\r\n * @ignore\r\n */\r\nvar DynProxyTag = '_isDynProxy';\r\n/**\r\n * Name added to a prototype to define the dynamic prototype \"class\" name used to lookup the function table\r\n * @ignore\r\n */\r\nvar DynClassName = '_dynClass';\r\n/**\r\n * Prefix added to the classname to avoid any name clashes with other instance level properties\r\n * @ignore\r\n */\r\nvar DynClassNamePrefix = '_dynCls$';\r\n/**\r\n * A tag which is used to check if we have already to attempted to set the instance function if one is not present\r\n * @ignore\r\n */\r\nvar DynInstChkTag = '_dynInstChk';\r\n/**\r\n * A tag which is used to check if we are allows to try and set an instance function is one is not present. Using the same\r\n * tag name as the function level but a different const name for readability only.\r\n */\r\nvar DynAllowInstChkTag = DynInstChkTag;\r\n/**\r\n * The global (imported) instances where the global performance options are stored\r\n */\r\nvar DynProtoDefaultOptions = '_dfOpts';\r\n/**\r\n * Value used as the name of a class when it cannot be determined\r\n * @ignore\r\n */\r\nvar UnknownValue = '_unknown_';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * The polyfill version of __proto__ so that it doesn't cause issues for anyone not expecting it to exist\r\n */\r\nvar DynProtoBaseProto = \"_dyn\" + str__Proto;\r\n/**\r\n * Runtime Global holder for dynamicProto settings\r\n */\r\nvar DynProtoGlobalSettings = \"__dynProto$Gbl\";\r\n/**\r\n * Track the current prototype for IE8 as you can't look back to get the prototype\r\n */\r\nvar DynProtoCurrent = \"_dynInstProto\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strUseBaseInst = 'useBaseInst';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strSetInstFuncs = 'setInstFuncs';\r\nvar Obj = Object;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Obj[\"getPrototypeOf\"];\r\n/**\r\n * Pre-lookup to check for the existence of this function\r\n */\r\nvar _objGetOwnProps = Obj[\"getOwnPropertyNames\"];\r\n// Since 1.1.7 moving these to the runtime global to work around mixed version and module issues\r\n// See Issue https://github.com/microsoft/DynamicProto-JS/issues/57 for details\r\nvar _gbl = getGlobal();\r\nvar _gblInst = _gbl[DynProtoGlobalSettings] || (_gbl[DynProtoGlobalSettings] = {\r\n    o: (_a = {},\r\n        _a[strSetInstFuncs] = true,\r\n        _a[strUseBaseInst] = true,\r\n        _a),\r\n    n: 1000 // Start new global index @ 1000 so we \"fix\" some cases when mixed with 1.1.6 or earlier\r\n});\r\n/**\r\n * Helper used to check whether the target is an Object prototype or Array prototype\r\n * @ignore\r\n */\r\nfunction _isObjectOrArrayPrototype(target) {\r\n    return target && (target === Obj[Prototype] || target === Array[Prototype]);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype, Array prototype or Function prototype\r\n * @ignore\r\n */\r\nfunction _isObjectArrayOrFunctionPrototype(target) {\r\n    return _isObjectOrArrayPrototype(target) || target === Function[Prototype];\r\n}\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nfunction _getObjProto(target) {\r\n    var newProto;\r\n    if (target) {\r\n        // This method doesn't exist in older browsers (e.g. IE8)\r\n        if (_objGetPrototypeOf) {\r\n            return _objGetPrototypeOf(target);\r\n        }\r\n        var curProto = target[str__Proto] || target[Prototype] || (target[Constructor] ? target[Constructor][Prototype] : null);\r\n        // Using the pre-calculated value as IE8 doesn't support looking up the prototype of a prototype and thus fails for more than 1 base class\r\n        newProto = target[DynProtoBaseProto] || curProto;\r\n        if (!objHasOwnProperty(target, DynProtoBaseProto)) {\r\n            // As this prototype doesn't have this property then this is from an inherited class so newProto is the base to return so save it\r\n            // so we can look it up value (which for a multiple hierarchy dynamicProto will be the base class)\r\n            delete target[DynProtoCurrent]; // Delete any current value allocated to this instance so we pick up the value from prototype hierarchy\r\n            newProto = target[DynProtoBaseProto] = target[DynProtoCurrent] || target[DynProtoBaseProto];\r\n            target[DynProtoCurrent] = curProto;\r\n        }\r\n    }\r\n    return newProto;\r\n}\r\n/**\r\n * Helper to get the properties of an object, including none enumerable ones as functions on a prototype in ES6\r\n * are not enumerable.\r\n * @param target\r\n */\r\nfunction _forEachProp(target, func) {\r\n    var props = [];\r\n    if (_objGetOwnProps) {\r\n        props = _objGetOwnProps(target);\r\n    }\r\n    else {\r\n        for (var name_1 in target) {\r\n            if (typeof name_1 === \"string\" && objHasOwnProperty(target, name_1)) {\r\n                props.push(name_1);\r\n            }\r\n        }\r\n    }\r\n    if (props && props.length > 0) {\r\n        for (var lp = 0; lp < props.length; lp++) {\r\n            func(props[lp]);\r\n        }\r\n    }\r\n}\r\n/**\r\n * Helper function to check whether the provided function name is a potential candidate for dynamic\r\n * callback and prototype generation.\r\n * @param target The target object, may be a prototype or class object\r\n * @param funcName The function name\r\n * @param skipOwn Skips the check for own property\r\n * @ignore\r\n */\r\nfunction _isDynamicCandidate(target, funcName, skipOwn) {\r\n    return (funcName !== Constructor && typeof target[funcName] === strFunction && (skipOwn || objHasOwnProperty(target, funcName)) && funcName !== str__Proto && funcName !== Prototype);\r\n}\r\n/**\r\n * Helper to throw a TypeError exception\r\n * @param message the message\r\n * @ignore\r\n */\r\nfunction _throwTypeError(message) {\r\n    throwTypeError(\"DynamicProto: \" + message);\r\n}\r\n/**\r\n * Returns a collection of the instance functions that are defined directly on the thisTarget object, it does\r\n * not return any inherited functions\r\n * @param thisTarget The object to get the instance functions from\r\n * @ignore\r\n */\r\nfunction _getInstanceFuncs(thisTarget) {\r\n    // Get the base proto\r\n    var instFuncs = objCreate(null);\r\n    // Save any existing instance functions\r\n    _forEachProp(thisTarget, function (name) {\r\n        // Don't include any dynamic prototype instances - as we only want the real functions\r\n        if (!instFuncs[name] && _isDynamicCandidate(thisTarget, name, false)) {\r\n            // Create an instance callback for passing the base function to the caller\r\n            instFuncs[name] = thisTarget[name];\r\n        }\r\n    });\r\n    return instFuncs;\r\n}\r\n/**\r\n * Returns whether the value is included in the array\r\n * @param values The array of values\r\n * @param value  The value\r\n */\r\nfunction _hasVisited(values, value) {\r\n    for (var lp = values.length - 1; lp >= 0; lp--) {\r\n        if (values[lp] === value) {\r\n            return true;\r\n        }\r\n    }\r\n    return false;\r\n}\r\n/**\r\n * Returns an object that contains callback functions for all \"base/super\" functions, this is used to \"save\"\r\n * enabling calling super.xxx() functions without requiring that the base \"class\" has defined a prototype references\r\n * @param target The current instance\r\n * @ignore\r\n */\r\nfunction _getBaseFuncs(classProto, thisTarget, instFuncs, useBaseInst) {\r\n    function _instFuncProxy(target, funcHost, funcName) {\r\n        var theFunc = funcHost[funcName];\r\n        if (theFunc[DynProxyTag] && useBaseInst) {\r\n            // grab and reuse the hosted looking function (if available) otherwise the original passed function\r\n            var instFuncTable = target[DynInstFuncTable] || {};\r\n            if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n                theFunc = (instFuncTable[funcHost[DynClassName]] || {})[funcName] || theFunc;\r\n            }\r\n        }\r\n        return function () {\r\n            // eslint-disable-next-line prefer-rest-params\r\n            return theFunc.apply(target, arguments);\r\n        };\r\n    }\r\n    // Start creating a new baseFuncs by creating proxies for the instance functions (as they may get replaced)\r\n    var baseFuncs = objCreate(null);\r\n    _forEachProp(instFuncs, function (name) {\r\n        // Create an instance callback for passing the base function to the caller\r\n        baseFuncs[name] = _instFuncProxy(thisTarget, instFuncs, name);\r\n    });\r\n    // Get the base prototype functions\r\n    var baseProto = _getObjProto(classProto);\r\n    var visited = [];\r\n    // Don't include base object functions for Object, Array or Function\r\n    while (baseProto && !_isObjectArrayOrFunctionPrototype(baseProto) && !_hasVisited(visited, baseProto)) {\r\n        // look for prototype functions\r\n        _forEachProp(baseProto, function (name) {\r\n            // Don't include any dynamic prototype instances - as we only want the real functions\r\n            // For IE 7/8 the prototype lookup doesn't provide the full chain so we need to bypass the \r\n            // hasOwnProperty check we get all of the methods, main difference is that IE7/8 doesn't return\r\n            // the Object prototype methods while bypassing the check\r\n            if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf)) {\r\n                // Create an instance callback for passing the base function to the caller\r\n                baseFuncs[name] = _instFuncProxy(thisTarget, baseProto, name);\r\n            }\r\n        });\r\n        // We need to find all possible functions that might be overloaded by walking the entire prototype chain\r\n        // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n        // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n        visited.push(baseProto);\r\n        baseProto = _getObjProto(baseProto);\r\n    }\r\n    return baseFuncs;\r\n}\r\nfunction _getInstFunc(target, funcName, proto, currentDynProtoProxy) {\r\n    var instFunc = null;\r\n    // We need to check whether the class name is defined directly on this prototype otherwise\r\n    // it will walk the proto chain and return any parent proto classname.\r\n    if (target && objHasOwnProperty(proto, DynClassName)) {\r\n        var instFuncTable = target[DynInstFuncTable] || objCreate(null);\r\n        instFunc = (instFuncTable[proto[DynClassName]] || objCreate(null))[funcName];\r\n        if (!instFunc) {\r\n            // Avoid stack overflow from recursive calling the same function\r\n            _throwTypeError(\"Missing [\" + funcName + \"] \" + strFunction);\r\n        }\r\n        // We have the instance function, lets check it we can speed up further calls\r\n        // by adding the instance function back directly on the instance (avoiding the dynamic func lookup)\r\n        if (!instFunc[DynInstChkTag] && instFuncTable[DynAllowInstChkTag] !== false) {\r\n            // If the instance already has an instance function we can't replace it\r\n            var canAddInst = !objHasOwnProperty(target, funcName);\r\n            // Get current prototype\r\n            var objProto = _getObjProto(target);\r\n            var visited = [];\r\n            // Lookup the function starting at the top (instance level prototype) and traverse down, if the first matching function\r\n            // if nothing is found or if the first hit is a dynamic proto instance then we can safely add an instance shortcut\r\n            while (canAddInst && objProto && !_isObjectArrayOrFunctionPrototype(objProto) && !_hasVisited(visited, objProto)) {\r\n                var protoFunc = objProto[funcName];\r\n                if (protoFunc) {\r\n                    canAddInst = (protoFunc === currentDynProtoProxy);\r\n                    break;\r\n                }\r\n                // We need to find all possible initial functions to ensure that we don't bypass a valid override function\r\n                visited.push(objProto);\r\n                objProto = _getObjProto(objProto);\r\n            }\r\n            try {\r\n                if (canAddInst) {\r\n                    // This instance doesn't have an instance func and the class hierarchy does have a higher level prototype version\r\n                    // so it's safe to directly assign for any subsequent calls (for better performance)\r\n                    target[funcName] = instFunc;\r\n                }\r\n                // Block further attempts to set the instance function for any\r\n                instFunc[DynInstChkTag] = 1;\r\n            }\r\n            catch (e) {\r\n                // Don't crash if the object is readonly or the runtime doesn't allow changing this\r\n                // And set a flag so we don't try again for any function\r\n                instFuncTable[DynAllowInstChkTag] = false;\r\n            }\r\n        }\r\n    }\r\n    return instFunc;\r\n}\r\nfunction _getProtoFunc(funcName, proto, currentDynProtoProxy) {\r\n    var protoFunc = proto[funcName];\r\n    // Check that the prototype function is not a self reference -- try to avoid stack overflow!\r\n    if (protoFunc === currentDynProtoProxy) {\r\n        // It is so lookup the base prototype\r\n        protoFunc = _getObjProto(proto)[funcName];\r\n    }\r\n    if (typeof protoFunc !== strFunction) {\r\n        _throwTypeError(\"[\" + funcName + \"] is not a \" + strFunction);\r\n    }\r\n    return protoFunc;\r\n}\r\n/**\r\n * Add the required dynamic prototype methods to the the class prototype\r\n * @param proto - The class prototype\r\n * @param className - The instance classname\r\n * @param target - The target instance\r\n * @param baseInstFuncs - The base instance functions\r\n * @param setInstanceFunc - Flag to allow prototype function to reset the instance function if one does not exist\r\n * @ignore\r\n */\r\nfunction _populatePrototype(proto, className, target, baseInstFuncs, setInstanceFunc) {\r\n    function _createDynamicPrototype(proto, funcName) {\r\n        var dynProtoProxy = function () {\r\n            // Use the instance or prototype function\r\n            var instFunc = _getInstFunc(this, funcName, proto, dynProtoProxy) || _getProtoFunc(funcName, proto, dynProtoProxy);\r\n            // eslint-disable-next-line prefer-rest-params\r\n            return instFunc.apply(this, arguments);\r\n        };\r\n        // Tag this function as a proxy to support replacing dynamic proxy elements (primary use case is for unit testing\r\n        // via which can dynamically replace the prototype function reference)\r\n        dynProtoProxy[DynProxyTag] = 1;\r\n        return dynProtoProxy;\r\n    }\r\n    if (!_isObjectOrArrayPrototype(proto)) {\r\n        var instFuncTable = target[DynInstFuncTable] = target[DynInstFuncTable] || objCreate(null);\r\n        if (!_isObjectOrArrayPrototype(instFuncTable)) {\r\n            var instFuncs_1 = instFuncTable[className] = (instFuncTable[className] || objCreate(null)); // fetch and assign if as it may not exist yet\r\n            // Set whether we are allow to lookup instances, if someone has set to false then do not re-enable\r\n            if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n                instFuncTable[DynAllowInstChkTag] = !!setInstanceFunc;\r\n            }\r\n            if (!_isObjectOrArrayPrototype(instFuncs_1)) {\r\n                _forEachProp(target, function (name) {\r\n                    // Only add overridden functions\r\n                    if (_isDynamicCandidate(target, name, false) && target[name] !== baseInstFuncs[name]) {\r\n                        // Save the instance Function to the lookup table and remove it from the instance as it's not a dynamic proto function\r\n                        instFuncs_1[name] = target[name];\r\n                        delete target[name];\r\n                        // Add a dynamic proto if one doesn't exist or if a prototype function exists and it's not a dynamic one\r\n                        if (!objHasOwnProperty(proto, name) || (proto[name] && !proto[name][DynProxyTag])) {\r\n                            proto[name] = _createDynamicPrototype(proto, name);\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n        }\r\n    }\r\n}\r\n/**\r\n * Checks whether the passed prototype object appears to be correct by walking the prototype hierarchy of the instance\r\n * @param classProto The class prototype instance\r\n * @param thisTarget The current instance that will be checked whether the passed prototype instance is in the hierarchy\r\n * @ignore\r\n */\r\nfunction _checkPrototype(classProto, thisTarget) {\r\n    // This method doesn't existing in older browsers (e.g. IE8)\r\n    if (_objGetPrototypeOf) {\r\n        // As this is primarily a coding time check, don't bother checking if running in IE8 or lower\r\n        var visited = [];\r\n        var thisProto = _getObjProto(thisTarget);\r\n        while (thisProto && !_isObjectArrayOrFunctionPrototype(thisProto) && !_hasVisited(visited, thisProto)) {\r\n            if (thisProto === classProto) {\r\n                return true;\r\n            }\r\n            // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n            // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n            visited.push(thisProto);\r\n            thisProto = _getObjProto(thisProto);\r\n        }\r\n        return false;\r\n    }\r\n    // If objGetPrototypeOf doesn't exist then just assume everything is ok.\r\n    return true;\r\n}\r\n/**\r\n * Gets the current prototype name using the ES6 name if available otherwise falling back to a use unknown as the name.\r\n * It's not critical for this to return a name, it's used to decorate the generated unique name for easier debugging only.\r\n * @param target\r\n * @param unknownValue\r\n * @ignore\r\n */\r\nfunction _getObjName(target, unknownValue) {\r\n    if (objHasOwnProperty(target, Prototype)) {\r\n        // Look like a prototype\r\n        return target.name || unknownValue || UnknownValue;\r\n    }\r\n    return (((target || {})[Constructor]) || {}).name || unknownValue || UnknownValue;\r\n}\r\n/**\r\n * Helper function when creating dynamic (inline) functions for classes, this helper performs the following tasks :-\r\n * - Saves references to all defined base class functions\r\n * - Calls the delegateFunc with the current target (this) and a base object reference that can be used to call all \"super\" functions.\r\n * - Will populate the class prototype for all overridden functions to support class extension that call the prototype instance.\r\n * Callers should use this helper when declaring all function within the constructor of a class, as mentioned above the delegateFunc is\r\n * passed both the target \"this\" and an object that can be used to call any base (super) functions, using this based object in place of\r\n * super.XXX() (which gets expanded to _super.prototype.XXX()) provides a better minification outcome and also ensures the correct \"this\"\r\n * context is maintained as TypeScript creates incorrect references using super.XXXX() for dynamically defined functions i.e. Functions\r\n * defined in the constructor or some other function (rather than declared as complete typescript functions).\r\n * ### Usage\r\n * ```typescript\r\n * import dynamicProto from \"@microsoft/dynamicproto-js\";\r\n * class ExampleClass extends BaseClass {\r\n *     constructor() {\r\n *         dynamicProto(ExampleClass, this, (_self, base) => {\r\n *             // This will define a function that will be converted to a prototype function\r\n *             _self.newFunc = () => {\r\n *                 // Access any \"this\" instance property\r\n *                 if (_self.someProperty) {\r\n *                     ...\r\n *                 }\r\n *             }\r\n *             // This will define a function that will be converted to a prototype function\r\n *             _self.myFunction = () => {\r\n *                 // Access any \"this\" instance property\r\n *                 if (_self.someProperty) {\r\n *                     // Call the base version of the function that we are overriding\r\n *                     base.myFunction();\r\n *                 }\r\n *                 ...\r\n *             }\r\n *             _self.initialize = () => {\r\n *                 ...\r\n *             }\r\n *             // Warnings: While the following will work as _self is simply a reference to\r\n *             // this, if anyone overrides myFunction() the overridden will be called first\r\n *             // as the normal JavaScript method resolution will occur and the defined\r\n *             // _self.initialize() function is actually gets removed from the instance and\r\n *             // a proxy prototype version is created to reference the created method.\r\n *             _self.initialize();\r\n *         });\r\n *     }\r\n * }\r\n * ```\r\n * @typeparam DPType This is the generic type of the class, used to keep intellisense valid\r\n * @typeparam DPCls The type that contains the prototype of the current class\r\n * @param theClass - This is the current class instance which contains the prototype for the current class\r\n * @param target - The current \"this\" (target) reference, when the class has been extended this.prototype will not be the 'theClass' value.\r\n * @param delegateFunc - The callback function (closure) that will create the dynamic function\r\n * @param options - Additional options to configure how the dynamic prototype operates\r\n */\r\nexport default function dynamicProto(theClass, target, delegateFunc, options) {\r\n    // Make sure that the passed theClass argument looks correct\r\n    if (!objHasOwnProperty(theClass, Prototype)) {\r\n        _throwTypeError(\"theClass is an invalid class definition.\");\r\n    }\r\n    // Quick check to make sure that the passed theClass argument looks correct (this is a common copy/paste error)\r\n    var classProto = theClass[Prototype];\r\n    if (!_checkPrototype(classProto, target)) {\r\n        _throwTypeError(\"[\" + _getObjName(theClass) + \"] not in hierarchy of [\" + _getObjName(target) + \"]\");\r\n    }\r\n    var className = null;\r\n    if (objHasOwnProperty(classProto, DynClassName)) {\r\n        // Only grab the class name if it's defined on this prototype (i.e. don't walk the prototype chain)\r\n        className = classProto[DynClassName];\r\n    }\r\n    else {\r\n        // As not all browser support name on the prototype creating a unique dynamic one if we have not already\r\n        // assigned one, so we can use a simple string as the lookup rather than an object for the dynamic instance\r\n        // function table lookup.\r\n        className = DynClassNamePrefix + _getObjName(theClass, \"_\") + \"$\" + _gblInst.n;\r\n        _gblInst.n++;\r\n        classProto[DynClassName] = className;\r\n    }\r\n    var perfOptions = dynamicProto[DynProtoDefaultOptions];\r\n    var useBaseInst = !!perfOptions[strUseBaseInst];\r\n    if (useBaseInst && options && options[strUseBaseInst] !== undefined) {\r\n        useBaseInst = !!options[strUseBaseInst];\r\n    }\r\n    // Get the current instance functions\r\n    var instFuncs = _getInstanceFuncs(target);\r\n    // Get all of the functions for any base instance (before they are potentially overridden)\r\n    var baseFuncs = _getBaseFuncs(classProto, target, instFuncs, useBaseInst);\r\n    // Execute the delegate passing in both the current target \"this\" and \"base\" function references\r\n    // Note casting the same type as we don't actually have the base class here and this will provide some intellisense support\r\n    delegateFunc(target, baseFuncs);\r\n    // Don't allow setting instance functions for older IE instances\r\n    var setInstanceFunc = !!_objGetPrototypeOf && !!perfOptions[strSetInstFuncs];\r\n    if (setInstanceFunc && options) {\r\n        setInstanceFunc = !!options[strSetInstFuncs];\r\n    }\r\n    // Populate the Prototype for any overridden instance functions\r\n    _populatePrototype(classProto, className, target, instFuncs, setInstanceFunc !== false);\r\n}\r\n/**\r\n * Exposes the default global options to allow global configuration, if the global values are disabled these will override\r\n * any passed values. This is primarily exposed to support unit-testing without the need for individual classes to expose\r\n * their internal usage of dynamic proto.\r\n */\r\ndynamicProto[DynProtoDefaultOptions] = _gblInst.o;\r\n//# sourceMappingURL=DynamicProto.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport var strShimFunction = \"function\";\r\nexport var strShimObject = \"object\";\r\nexport var strShimUndefined = \"undefined\";\r\nexport var strShimPrototype = \"prototype\";\r\nexport var strDefault = \"default\";\r\nexport var ObjClass = Object;\r\nexport var ObjProto = ObjClass[strShimPrototype];\r\n//# sourceMappingURL=Constants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { getGlobal, objAssign, objCreate, objDefineProp, objHasOwnProperty, throwTypeError } from \"@nevware21/ts-utils\";\r\nimport { ObjClass, ObjProto, strDefault, strShimFunction, strShimPrototype } from \"./Constants\";\r\n// Most of these functions have been directly shamelessly \"lifted\" from the https://github.com/@microsoft/tslib and\r\n// modified to be ES5 compatible and applying several minification and tree-shaking techniques so that Application Insights\r\n// can successfully use TypeScript \"importHelpers\" which imports tslib during compilation but it will use these at runtime\r\n// Which is also why all of the functions have not been included as Application Insights currently doesn't use or require\r\n// them.\r\nexport var SymbolObj = (getGlobal() || {})[\"Symbol\"];\r\nexport var ReflectObj = (getGlobal() || {})[\"Reflect\"];\r\nexport var __hasReflect = !!ReflectObj;\r\nvar strDecorate = \"decorate\";\r\nvar strMetadata = \"metadata\";\r\nvar strGetOwnPropertySymbols = \"getOwnPropertySymbols\";\r\nvar strIterator = \"iterator\";\r\nvar strHasOwnProperty = \"hasOwnProperty\";\r\nexport var __objAssignFnImpl = function (t) {\r\n    // tslint:disable-next-line: ban-comma-operator\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) {\r\n            if (ObjProto[strHasOwnProperty].call(s, p)) {\r\n                t[p] = s[p];\r\n            }\r\n        }\r\n    }\r\n    return t;\r\n};\r\nexport var __assignFn = objAssign || __objAssignFnImpl;\r\n// tslint:disable-next-line: only-arrow-functions\r\nvar extendStaticsFn = function (d, b) {\r\n    extendStaticsFn = ObjClass[\"setPrototypeOf\"] ||\r\n        // tslint:disable-next-line: only-arrow-functions\r\n        ({ __proto__: [] } instanceof Array && function (d, b) {\r\n            d.__proto__ = b;\r\n        }) ||\r\n        // tslint:disable-next-line: only-arrow-functions\r\n        function (d, b) {\r\n            for (var p in b) {\r\n                if (b[strHasOwnProperty](p)) {\r\n                    d[p] = b[p];\r\n                }\r\n            }\r\n        };\r\n    return extendStaticsFn(d, b);\r\n};\r\nexport function __extendsFn(d, b) {\r\n    if (typeof b !== strShimFunction && b !== null) {\r\n        throwTypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    }\r\n    extendStaticsFn(d, b);\r\n    function __() {\r\n        this.constructor = d;\r\n    }\r\n    // tslint:disable-next-line: ban-comma-operator\r\n    d[strShimPrototype] = b === null ? objCreate(b) : (__[strShimPrototype] = b[strShimPrototype], new __());\r\n}\r\nexport function __restFn(s, e) {\r\n    var t = {};\r\n    for (var k in s) {\r\n        if (objHasOwnProperty(s, k) && e.indexOf(k) < 0) {\r\n            t[k] = s[k];\r\n        }\r\n    }\r\n    if (s != null && typeof ObjClass[strGetOwnPropertySymbols] === strShimFunction) {\r\n        for (var i = 0, p = ObjClass[strGetOwnPropertySymbols](s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && ObjProto[\"propertyIsEnumerable\"].call(s, p[i])) {\r\n                t[p[i]] = s[p[i]];\r\n            }\r\n        }\r\n    }\r\n    return t;\r\n}\r\nexport function __decorateFn(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = ObjClass[\"getOwnPropertyDescriptor\"](target, key) : desc, d;\r\n    if (__hasReflect && typeof ReflectObj[strDecorate] === strShimFunction) {\r\n        r = ReflectObj[strDecorate](decorators, target, key, desc);\r\n    }\r\n    else {\r\n        for (var i = decorators.length - 1; i >= 0; i--) {\r\n            // eslint-disable-next-line no-cond-assign\r\n            if (d = decorators[i]) {\r\n                r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n            }\r\n        }\r\n    }\r\n    // tslint:disable-next-line:ban-comma-operator\r\n    return c > 3 && r && objDefineProp(target, key, r), r;\r\n}\r\nexport function __paramFn(paramIndex, decorator) {\r\n    return function (target, key) {\r\n        decorator(target, key, paramIndex);\r\n    };\r\n}\r\nexport function __metadataFn(metadataKey, metadataValue) {\r\n    if (__hasReflect && ReflectObj[strMetadata] === strShimFunction) {\r\n        return ReflectObj[strMetadata](metadataKey, metadataValue);\r\n    }\r\n}\r\nexport function __exportStarFn(m, o) {\r\n    for (var p in m) {\r\n        if (p !== strDefault && !objHasOwnProperty(o, p)) {\r\n            __createBindingFn(o, m, p);\r\n        }\r\n    }\r\n}\r\nexport function __createBindingFn(o, m, k, k2) {\r\n    if (k2 === undefined) {\r\n        k2 = k;\r\n    }\r\n    if (!!objDefineProp) {\r\n        objDefineProp(o, k2, {\r\n            enumerable: true,\r\n            get: function () {\r\n                return m[k];\r\n            }\r\n        });\r\n    }\r\n    else {\r\n        o[k2] = m[k];\r\n    }\r\n}\r\nexport function __valuesFn(o) {\r\n    var s = typeof SymbolObj === strShimFunction && SymbolObj[strIterator], m = s && o[s], i = 0;\r\n    if (m) {\r\n        return m.call(o);\r\n    }\r\n    if (o && typeof o.length === \"number\") {\r\n        return {\r\n            next: function () {\r\n                if (o && i >= o.length) {\r\n                    o = void 0;\r\n                }\r\n                return { value: o && o[i++], done: !o };\r\n            }\r\n        };\r\n    }\r\n    throwTypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\nexport function __readFn(o, n) {\r\n    var m = typeof SymbolObj === strShimFunction && o[SymbolObj[strIterator]];\r\n    if (!m) {\r\n        return o;\r\n    }\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) {\r\n            ar.push(r.value);\r\n        }\r\n    }\r\n    catch (error) {\r\n        e = {\r\n            error: error\r\n        };\r\n    }\r\n    finally {\r\n        try {\r\n            // tslint:disable-next-line:no-conditional-assignment\r\n            if (r && !r.done && (m = i[\"return\"])) {\r\n                m.call(i);\r\n            }\r\n        }\r\n        finally {\r\n            if (e) {\r\n                // eslint-disable-next-line no-unsafe-finally\r\n                throw e.error;\r\n            }\r\n        }\r\n    }\r\n    return ar;\r\n}\r\n/** @deprecated */\r\nexport function __spreadArraysFn() {\r\n    var theArgs = arguments;\r\n    // Calculate new total size\r\n    for (var s = 0, i = 0, il = theArgs.length; i < il; i++) {\r\n        s += theArgs[i].length;\r\n    }\r\n    // Create new full array\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++) {\r\n        for (var a = theArgs[i], j = 0, jl = a.length; j < jl; j++, k++) {\r\n            r[k] = a[j];\r\n        }\r\n    }\r\n    return r;\r\n}\r\nexport function __spreadArrayFn(to, from) {\r\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\r\n        to[j] = from[i];\r\n    }\r\n    return to;\r\n}\r\nexport function __makeTemplateObjectFn(cooked, raw) {\r\n    if (objDefineProp) {\r\n        objDefineProp(cooked, \"raw\", { value: raw });\r\n    }\r\n    else {\r\n        cooked.raw = raw;\r\n    }\r\n    return cooked;\r\n}\r\nexport function __importStarFn(mod) {\r\n    if (mod && mod.__esModule) {\r\n        return mod;\r\n    }\r\n    var result = {};\r\n    if (mod != null) {\r\n        for (var k in mod) {\r\n            if (k !== strDefault && Object.prototype.hasOwnProperty.call(mod, k)) {\r\n                __createBindingFn(result, mod, k);\r\n            }\r\n        }\r\n    }\r\n    // Set default module\r\n    if (!!objDefineProp) {\r\n        objDefineProp(result, strDefault, { enumerable: true, value: mod });\r\n    }\r\n    else {\r\n        result[strDefault] = mod;\r\n    }\r\n    return result;\r\n}\r\nexport function __importDefaultFn(mod) {\r\n    return (mod && mod.__esModule) ? mod : { strDefault: mod };\r\n}\r\n//# sourceMappingURL=TsLibShims.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 11\r\nexport var _DYN_BLK_VAL = \"blkVal\"; // Count: 5\r\nexport var _DYN_LENGTH = \"length\"; // Count: 55\r\nexport var _DYN_RD_ONLY = \"rdOnly\"; // Count: 4\r\nexport var _DYN_NOTIFY = \"notify\"; // Count: 4\r\nexport var _DYN_WARN_TO_CONSOLE = \"warnToConsole\"; // Count: 4\r\nexport var _DYN_THROW_INTERNAL = \"throwInternal\"; // Count: 5\r\nexport var _DYN_SET_DF = \"setDf\"; // Count: 6\r\nexport var _DYN_WATCH = \"watch\"; // Count: 8\r\nexport var _DYN_LOGGER = \"logger\"; // Count: 21\r\nexport var _DYN_APPLY = \"apply\"; // Count: 7\r\nexport var _DYN_PUSH = \"push\"; // Count: 35\r\nexport var _DYN_SPLICE = \"splice\"; // Count: 8\r\nexport var _DYN_HDLR = \"hdlr\"; // Count: 6\r\nexport var _DYN_CANCEL = \"cancel\"; // Count: 6\r\nexport var _DYN_INITIALIZE = \"initialize\"; // Count: 5\r\nexport var _DYN_IDENTIFIER = \"identifier\"; // Count: 8\r\nexport var _DYN_REMOVE_NOTIFICATION_0 = \"removeNotificationListener\"; // Count: 4\r\nexport var _DYN_ADD_NOTIFICATION_LIS1 = \"addNotificationListener\"; // Count: 4\r\nexport var _DYN_IS_INITIALIZED = \"isInitialized\"; // Count: 10\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 2\r\nexport var _DYN__INACTIVE = \"INACTIVE\"; // Count: 3\r\nexport var _DYN_VALUE = \"value\"; // Count: 5\r\nexport var _DYN_GET_NOTIFY_MGR = \"getNotifyMgr\"; // Count: 5\r\nexport var _DYN_GET_PLUGIN = \"getPlugin\"; // Count: 6\r\nexport var _DYN_NAME = \"name\"; // Count: 12\r\nexport var _DYN_I_KEY = \"iKey\"; // Count: 5\r\nexport var _DYN_TIME = \"time\"; // Count: 6\r\nexport var _DYN_PROCESS_NEXT = \"processNext\"; // Count: 15\r\nexport var _DYN_GET_PROCESS_TEL_CONT2 = \"getProcessTelContext\"; // Count: 2\r\nexport var _DYN_POLL_INTERNAL_LOGS = \"pollInternalLogs\"; // Count: 2\r\nexport var _DYN_ENABLED = \"enabled\"; // Count: 6\r\nexport var _DYN_STOP_POLLING_INTERNA3 = \"stopPollingInternalLogs\"; // Count: 2\r\nexport var _DYN_UNLOAD = \"unload\"; // Count: 9\r\nexport var _DYN_ON_COMPLETE = \"onComplete\"; // Count: 5\r\nexport var _DYN_VERSION = \"version\"; // Count: 6\r\nexport var _DYN_LOGGING_LEVEL_CONSOL4 = \"loggingLevelConsole\"; // Count: 2\r\nexport var _DYN_CREATE_NEW = \"createNew\"; // Count: 7\r\nexport var _DYN_TEARDOWN = \"teardown\"; // Count: 9\r\nexport var _DYN_MESSAGE_ID = \"messageId\"; // Count: 4\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 7\r\nexport var _DYN_IS_ASYNC = \"isAsync\"; // Count: 6\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 10\r\nexport var _DYN__DO_TEARDOWN = \"_doTeardown\"; // Count: 5\r\nexport var _DYN_UPDATE = \"update\"; // Count: 6\r\nexport var _DYN_GET_NEXT = \"getNext\"; // Count: 12\r\nexport var _DYN_SET_NEXT_PLUGIN = \"setNextPlugin\"; // Count: 5\r\nexport var _DYN_PROTOCOL = \"protocol\"; // Count: 3\r\nexport var _DYN_USER_AGENT = \"userAgent\"; // Count: 5\r\nexport var _DYN_SPLIT = \"split\"; // Count: 7\r\nexport var _DYN_NODE_TYPE = \"nodeType\"; // Count: 3\r\nexport var _DYN_REPLACE = \"replace\"; // Count: 9\r\nexport var _DYN_LOG_INTERNAL_MESSAGE = \"logInternalMessage\"; // Count: 2\r\nexport var _DYN_TYPE = \"type\"; // Count: 14\r\nexport var _DYN_HANDLER = \"handler\"; // Count: 5\r\nexport var _DYN_STATUS = \"status\"; // Count: 5\r\nexport var _DYN_GET_RESPONSE_HEADER = \"getResponseHeader\"; // Count: 2\r\nexport var _DYN_GET_ALL_RESPONSE_HEA5 = \"getAllResponseHeaders\"; // Count: 2\r\nexport var _DYN_IS_CHILD_EVT = \"isChildEvt\"; // Count: 3\r\nexport var _DYN_DATA = \"data\"; // Count: 7\r\nexport var _DYN_GET_CTX = \"getCtx\"; // Count: 6\r\nexport var _DYN_SET_CTX = \"setCtx\"; // Count: 10\r\nexport var _DYN_COMPLETE = \"complete\"; // Count: 3\r\nexport var _DYN_ITEMS_RECEIVED = \"itemsReceived\"; // Count: 3\r\nexport var _DYN_URL_STRING = \"urlString\"; // Count: 5\r\nexport var _DYN_SEND_POST = \"sendPOST\"; // Count: 3\r\nexport var _DYN_HEADERS = \"headers\"; // Count: 5\r\nexport var _DYN_TIMEOUT = \"timeout\"; // Count: 6\r\nexport var _DYN_SET_REQUEST_HEADER = \"setRequestHeader\"; // Count: 2\r\nexport var _DYN_TRACE_ID = \"traceId\"; // Count: 5\r\nexport var _DYN_SPAN_ID = \"spanId\"; // Count: 5\r\nexport var _DYN_TRACE_FLAGS = \"traceFlags\"; // Count: 6\r\nexport var _DYN_GET_ATTRIBUTE = \"getAttribute\"; // Count: 3\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// ###################################################################################################################################################\r\n// Note: DON'T Export these const from the package as we are still targeting IE/ES5 this will export a mutable variables that someone could change ###\r\n// ###################################################################################################################################################\r\nexport var UNDEFINED_VALUE = undefined;\r\nexport var STR_EMPTY = \"\";\r\nexport var STR_CHANNELS = \"channels\";\r\nexport var STR_CORE = \"core\";\r\nexport var STR_CREATE_PERF_MGR = \"createPerfMgr\";\r\nexport var STR_DISABLED = \"disabled\";\r\nexport var STR_EXTENSION_CONFIG = \"extensionConfig\";\r\nexport var STR_EXTENSIONS = \"extensions\";\r\nexport var STR_PROCESS_TELEMETRY = \"processTelemetry\";\r\nexport var STR_PRIORITY = \"priority\";\r\nexport var STR_EVENTS_SENT = \"eventsSent\";\r\nexport var STR_EVENTS_DISCARDED = \"eventsDiscarded\";\r\nexport var STR_EVENTS_SEND_REQUEST = \"eventsSendRequest\";\r\nexport var STR_PERF_EVENT = \"perfEvent\";\r\nexport var STR_OFFLINE_STORE = \"offlineEventsStored\";\r\nexport var STR_OFFLINE_SENT = \"offlineBatchSent\";\r\nexport var STR_OFFLINE_DROP = \"offlineBatchDrop\";\r\nexport var STR_GET_PERF_MGR = \"getPerfMgr\";\r\nexport var STR_DOMAIN = \"domain\";\r\nexport var STR_PATH = \"path\";\r\nexport var STR_NOT_DYNAMIC_ERROR = \"Not dynamic - \";\r\n//# sourceMappingURL=InternalConstants.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { ObjAssign, ObjClass } from \"@microsoft/applicationinsights-shims\";\r\nimport { arrForEach, asString as asString21, isArray, isBoolean, isError, isFunction, isNullOrUndefined, isNumber, isObject, isPlainObject, isString, isUndefined, objDeepFreeze, objDefine, objForEachKey, objHasOwn, strIndexOf, strTrim } from \"@nevware21/ts-utils\";\r\nimport { _DYN_APPLY, _DYN_GET_ALL_RESPONSE_HEA5, _DYN_GET_RESPONSE_HEADER, _DYN_LENGTH, _DYN_NAME, _DYN_REPLACE, _DYN_SPLIT, _DYN_STATUS, _DYN_TO_LOWER_CASE } from \"../__DynamicConstants\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// RESTRICT and AVOID circular dependencies you should not import other contained modules or export the contents of this file directly\r\n// Added to help with minification\r\nvar strGetPrototypeOf = \"getPrototypeOf\";\r\nvar rCamelCase = /-([a-z])/g;\r\nvar rNormalizeInvalid = /([^\\w\\d_$])/g;\r\nvar rLeadingNumeric = /^(\\d+[\\w\\d_$])/;\r\nexport var _getObjProto = Object[strGetPrototypeOf];\r\nexport function isNotUndefined(value) {\r\n    return !isUndefined(value);\r\n}\r\nexport function isNotNullOrUndefined(value) {\r\n    return !isNullOrUndefined(value);\r\n}\r\n/**\r\n * Validates that the string name conforms to the JS IdentifierName specification and if not\r\n * normalizes the name so that it would. This method does not identify or change any keywords\r\n * meaning that if you pass in a known keyword the same value will be returned.\r\n * This is a simplified version\r\n * @param name - The name to validate\r\n */\r\nexport function normalizeJsName(name) {\r\n    var value = name;\r\n    if (value && isString(value)) {\r\n        // CamelCase everything after the \"-\" and remove the dash\r\n        value = value[_DYN_REPLACE /* @min:%2ereplace */](rCamelCase, function (_all, letter) {\r\n            return letter.toUpperCase();\r\n        });\r\n        value = value[_DYN_REPLACE /* @min:%2ereplace */](rNormalizeInvalid, \"_\");\r\n        value = value[_DYN_REPLACE /* @min:%2ereplace */](rLeadingNumeric, function (_all, match) {\r\n            return \"_\" + match;\r\n        });\r\n    }\r\n    return value;\r\n}\r\n/**\r\n * A simple wrapper (for minification support) to check if the value contains the search string.\r\n * @param value - The string value to check for the existence of the search value\r\n * @param search - The value search within the value\r\n */\r\nexport function strContains(value, search) {\r\n    if (value && search) {\r\n        return strIndexOf(value, search) !== -1;\r\n    }\r\n    return false;\r\n}\r\n/**\r\n * Convert a date to I.S.O. format in IE8\r\n */\r\nexport function toISOString(date) {\r\n    return date && date.toISOString() || \"\";\r\n}\r\nexport var deepFreeze = objDeepFreeze;\r\n/**\r\n * Returns the name of object if it's an Error. Otherwise, returns empty string.\r\n */\r\nexport function getExceptionName(object) {\r\n    if (isError(object)) {\r\n        return object[_DYN_NAME /* @min:%2ename */];\r\n    }\r\n    return STR_EMPTY;\r\n}\r\n/**\r\n * Sets the provided value on the target instance using the field name when the provided chk function returns true, the chk\r\n * function will only be called if the new value is no equal to the original value.\r\n * @param target - The target object\r\n * @param field - The key of the target\r\n * @param value - The value to set\r\n * @param valChk - [Optional] Callback to check the value that if supplied will be called check if the new value can be set\r\n * @param srcChk - [Optional] Callback to check to original value that if supplied will be called if the new value should be set (if allowed)\r\n * @returns The existing or new value, depending what was set\r\n */\r\nexport function setValue(target, field, value, valChk, srcChk) {\r\n    var theValue = value;\r\n    if (target) {\r\n        theValue = target[field];\r\n        if (theValue !== value && (!srcChk || srcChk(theValue)) && (!valChk || valChk(value))) {\r\n            theValue = value;\r\n            target[field] = theValue;\r\n        }\r\n    }\r\n    return theValue;\r\n}\r\n/**\r\n * Returns the current value from the target object if not null or undefined otherwise sets the new value and returns it\r\n * @param target - The target object to return or set the default value\r\n * @param field - The key for the field to set on the target\r\n * @param defValue - [Optional] The value to set if not already present, when not provided a empty object will be added\r\n */\r\nexport function getSetValue(target, field, defValue) {\r\n    var theValue;\r\n    if (target) {\r\n        theValue = target[field];\r\n        if (!theValue && isNullOrUndefined(theValue)) {\r\n            // Supports having the default as null\r\n            theValue = !isUndefined(defValue) ? defValue : {};\r\n            target[field] = theValue;\r\n        }\r\n    }\r\n    else {\r\n        // Expanded for performance so we only check defValue if required\r\n        theValue = !isUndefined(defValue) ? defValue : {};\r\n    }\r\n    return theValue;\r\n}\r\nfunction _createProxyFunction(source, funcName) {\r\n    var srcFunc = null;\r\n    var src = null;\r\n    if (isFunction(source)) {\r\n        srcFunc = source;\r\n    }\r\n    else {\r\n        src = source;\r\n    }\r\n    return function () {\r\n        // Capture the original arguments passed to the method\r\n        var originalArguments = arguments;\r\n        if (srcFunc) {\r\n            src = srcFunc();\r\n        }\r\n        if (src) {\r\n            return src[funcName][_DYN_APPLY /* @min:%2eapply */](src, originalArguments);\r\n        }\r\n    };\r\n}\r\n/**\r\n * Effectively assigns all enumerable properties (not just own properties) and functions (including inherited prototype) from\r\n * the source object to the target, it attempts to use proxy getters / setters (if possible) and proxy functions to avoid potential\r\n * implementation issues by assigning prototype functions as instance ones\r\n *\r\n * This method is the primary method used to \"update\" the snippet proxy with the ultimate implementations.\r\n *\r\n * Special ES3 Notes:\r\n * Updates (setting) of direct property values on the target or indirectly on the source object WILL NOT WORK PROPERLY, updates to the\r\n * properties of \"referenced\" object will work (target.context.newValue = 10 => will be reflected in the source.context as it's the\r\n * same object). ES3 Failures: assigning target.myProp = 3 -> Won't change source.myProp = 3, likewise the reverse would also fail.\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param chkSet - An optional callback to determine whether a specific property/function should be proxied\r\n */\r\nexport function proxyAssign(target, source, chkSet) {\r\n    if (target && source && isObject(target) && isObject(source)) {\r\n        var _loop_1 = function (field) {\r\n            if (isString(field)) {\r\n                var value = source[field];\r\n                if (isFunction(value)) {\r\n                    if (!chkSet || chkSet(field, true, source, target)) {\r\n                        // Create a proxy function rather than just copying the (possible) prototype to the new object as an instance function\r\n                        target[field] = _createProxyFunction(source, field);\r\n                    }\r\n                }\r\n                else if (!chkSet || chkSet(field, false, source, target)) {\r\n                    if (objHasOwn(target, field)) {\r\n                        // Remove any previous instance property\r\n                        delete target[field];\r\n                    }\r\n                    objDefine(target, field, {\r\n                        g: function () {\r\n                            return source[field];\r\n                        },\r\n                        s: function (theValue) {\r\n                            source[field] = theValue;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n        };\r\n        // effectively apply/proxy full source to the target instance\r\n        for (var field in source) {\r\n            _loop_1(field);\r\n        }\r\n    }\r\n    return target;\r\n}\r\n/**\r\n * Creates a proxy function on the target which internally will call the source version with all arguments passed to the target method.\r\n *\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param name - The function name that will be added on the target\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param theFunc - The function name on the source that will be proxied on the target\r\n * @param overwriteTarget - If `false` this will not replace any pre-existing name otherwise (the default) it will overwrite any existing name\r\n */\r\nexport function proxyFunctionAs(target, name, source, theFunc, overwriteTarget) {\r\n    if (target && name && source) {\r\n        if (overwriteTarget !== false || isUndefined(target[name])) {\r\n            target[name] = _createProxyFunction(source, theFunc);\r\n        }\r\n    }\r\n}\r\n/**\r\n * Creates proxy functions on the target which internally will call the source version with all arguments passed to the target method.\r\n *\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param functionsToProxy - An array of function names that will be proxied on the target\r\n * @param overwriteTarget - If false this will not replace any pre-existing name otherwise (the default) it will overwrite any existing name\r\n */\r\nexport function proxyFunctions(target, source, functionsToProxy, overwriteTarget) {\r\n    if (target && source && isObject(target) && isArray(functionsToProxy)) {\r\n        arrForEach(functionsToProxy, function (theFuncName) {\r\n            if (isString(theFuncName)) {\r\n                proxyFunctionAs(target, theFuncName, source, theFuncName, overwriteTarget);\r\n            }\r\n        });\r\n    }\r\n    return target;\r\n}\r\n/**\r\n * Simpler helper to create a dynamic class that implements the interface and populates the values with the defaults.\r\n * Only instance properties (hasOwnProperty) values are copied from the defaults to the new instance\r\n * @param defaults - Simple helper\r\n */\r\nexport function createClassFromInterface(defaults) {\r\n    return /** @class */ (function () {\r\n        function class_1() {\r\n            var _this = this;\r\n            if (defaults) {\r\n                objForEachKey(defaults, function (field, value) {\r\n                    _this[field] = value;\r\n                });\r\n            }\r\n        }\r\n        return class_1;\r\n    }());\r\n}\r\n/**\r\n * A helper function to assist with JIT performance for objects that have properties added / removed dynamically\r\n * this is primarily for chromium based browsers and has limited effects on Firefox and none of IE. Only call this\r\n * function after you have finished \"updating\" the object, calling this within loops reduces or defeats the benefits.\r\n * This helps when iterating using for..in, objKeys() and objForEach()\r\n * @param theObject - The object to be optimized if possible\r\n */\r\nexport function optimizeObject(theObject) {\r\n    // V8 Optimization to cause the JIT compiler to create a new optimized object for looking up the own properties\r\n    // primarily for object with <= 19 properties for >= 20 the effect is reduced or non-existent\r\n    if (theObject && ObjAssign) {\r\n        theObject = ObjClass(ObjAssign({}, theObject));\r\n    }\r\n    return theObject;\r\n}\r\nexport function objExtend(obj1, obj2, obj3, obj4, obj5, obj6) {\r\n    // Variables\r\n    var theArgs = arguments;\r\n    var extended = theArgs[0] || {};\r\n    var argLen = theArgs[_DYN_LENGTH /* @min:%2elength */];\r\n    var deep = false;\r\n    var idx = 1;\r\n    // Check for \"Deep\" flag\r\n    if (argLen > 0 && isBoolean(extended)) {\r\n        deep = extended;\r\n        extended = theArgs[idx] || {};\r\n        idx++;\r\n    }\r\n    // Handle case when target is a string or something (possible in deep copy)\r\n    if (!isObject(extended)) {\r\n        extended = {};\r\n    }\r\n    // Loop through each remaining object and conduct a merge\r\n    for (; idx < argLen; idx++) {\r\n        var arg = theArgs[idx];\r\n        var isArgArray = isArray(arg);\r\n        var isArgObj = isObject(arg);\r\n        for (var prop in arg) {\r\n            var propOk = (isArgArray && (prop in arg)) || (isArgObj && objHasOwn(arg, prop));\r\n            if (!propOk) {\r\n                continue;\r\n            }\r\n            var newValue = arg[prop];\r\n            var isNewArray = void 0;\r\n            // If deep merge and property is an object, merge properties\r\n            if (deep && newValue && ((isNewArray = isArray(newValue)) || isPlainObject(newValue))) {\r\n                // Grab the current value of the extended object\r\n                var clone = extended[prop];\r\n                if (isNewArray) {\r\n                    if (!isArray(clone)) {\r\n                        // We can't \"merge\" an array with a non-array so overwrite the original\r\n                        clone = [];\r\n                    }\r\n                }\r\n                else if (!isPlainObject(clone)) {\r\n                    // We can't \"merge\" an object with a non-object\r\n                    clone = {};\r\n                }\r\n                // Never move the original objects always clone them\r\n                newValue = objExtend(deep, clone, newValue);\r\n            }\r\n            // Assign the new (or previous) value (unless undefined)\r\n            if (newValue !== undefined) {\r\n                extended[prop] = newValue;\r\n            }\r\n        }\r\n    }\r\n    return extended;\r\n}\r\nexport var asString = asString21;\r\nexport function isFeatureEnabled(feature, cfg) {\r\n    var rlt = false;\r\n    var ft = cfg && cfg.featureOptIn && cfg.featureOptIn[feature];\r\n    if (feature && ft) {\r\n        var mode = ft.mode;\r\n        // NOTE: None will be considered as true\r\n        rlt = (mode == 3 /* FeatureOptInMode.enable */) || (mode == 1 /* FeatureOptInMode.none */);\r\n    }\r\n    return rlt;\r\n}\r\nexport function getResponseText(xhr) {\r\n    try {\r\n        return xhr.responseText;\r\n    }\r\n    catch (e) {\r\n        // Best effort, as XHR may throw while XDR wont so just ignore\r\n    }\r\n    return null;\r\n}\r\nexport function formatErrorMessageXdr(xdr, message) {\r\n    if (xdr) {\r\n        return \"XDomainRequest,Response:\" + getResponseText(xdr) || \"\";\r\n    }\r\n    return message;\r\n}\r\nexport function formatErrorMessageXhr(xhr, message) {\r\n    if (xhr) {\r\n        return \"XMLHttpRequest,Status:\" + xhr[_DYN_STATUS /* @min:%2estatus */] + \",Response:\" + getResponseText(xhr) || xhr.response || \"\";\r\n    }\r\n    return message;\r\n}\r\nexport function prependTransports(theTransports, newTransports) {\r\n    if (newTransports) {\r\n        if (isNumber(newTransports)) {\r\n            theTransports = [newTransports].concat(theTransports);\r\n        }\r\n        else if (isArray(newTransports)) {\r\n            theTransports = newTransports.concat(theTransports);\r\n        }\r\n    }\r\n    return theTransports;\r\n}\r\nvar strDisabledPropertyName = \"Microsoft_ApplicationInsights_BypassAjaxInstrumentation\";\r\nvar strWithCredentials = \"withCredentials\";\r\nvar strTimeout = \"timeout\";\r\n/**\r\n * Create and open an XMLHttpRequest object\r\n * @param method - The request method\r\n * @param urlString - The url\r\n * @param withCredentials - Option flag indicating that credentials should be sent\r\n * @param disabled - Optional flag indicating that the XHR object should be marked as disabled and not tracked (default is false)\r\n * @param isSync - Optional flag indicating if the instance should be a synchronous request (defaults to false)\r\n * @param timeout - Optional value identifying the timeout value that should be assigned to the XHR request\r\n * @returns A new opened XHR request\r\n */\r\nexport function openXhr(method, urlString, withCredentials, disabled, isSync, timeout) {\r\n    if (disabled === void 0) { disabled = false; }\r\n    if (isSync === void 0) { isSync = false; }\r\n    function _wrapSetXhrProp(xhr, prop, value) {\r\n        try {\r\n            xhr[prop] = value;\r\n        }\r\n        catch (e) {\r\n            // - Wrapping as depending on the environment setting the property may fail (non-terminally)\r\n        }\r\n    }\r\n    var xhr = new XMLHttpRequest();\r\n    if (disabled) {\r\n        // Tag the instance so it's not tracked (trackDependency)\r\n        // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n        // cause the request to fail and we no telemetry would be sent\r\n        _wrapSetXhrProp(xhr, strDisabledPropertyName, disabled);\r\n    }\r\n    if (withCredentials) {\r\n        // Some libraries require that the withCredentials flag is set \"before\" open and\r\n        // - Wrapping as IE 10 has started throwing when setting before open\r\n        _wrapSetXhrProp(xhr, strWithCredentials, withCredentials);\r\n    }\r\n    xhr.open(method, urlString, !isSync);\r\n    if (withCredentials) {\r\n        // withCredentials should be set AFTER open (https://xhr.spec.whatwg.org/#the-withcredentials-attribute)\r\n        // And older firefox instances from 11+ will throw for sync events (current versions don't) which happens during unload processing\r\n        _wrapSetXhrProp(xhr, strWithCredentials, withCredentials);\r\n    }\r\n    // Only set the timeout for asynchronous requests as\r\n    // \"Timeout shouldn't be used for synchronous XMLHttpRequests requests used in a document environment or it will throw an InvalidAccessError exception.\"\"\r\n    // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/timeout\r\n    if (!isSync && timeout) {\r\n        _wrapSetXhrProp(xhr, strTimeout, timeout);\r\n    }\r\n    return xhr;\r\n}\r\n/**\r\n* Converts the XHR getAllResponseHeaders to a map containing the header key and value.\r\n* @internal\r\n*/\r\n// tslint:disable-next-line: align\r\nexport function convertAllHeadersToMap(headersString) {\r\n    var headers = {};\r\n    if (isString(headersString)) {\r\n        var headersArray = strTrim(headersString)[_DYN_SPLIT /* @min:%2esplit */](/[\\r\\n]+/);\r\n        arrForEach(headersArray, function (headerEntry) {\r\n            if (headerEntry) {\r\n                var idx = headerEntry.indexOf(\": \");\r\n                if (idx !== -1) {\r\n                    // The new spec has the headers returning all as lowercase -- but not all browsers do this yet\r\n                    var header = strTrim(headerEntry.substring(0, idx))[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n                    var value = strTrim(headerEntry.substring(idx + 1));\r\n                    headers[header] = value;\r\n                }\r\n                else {\r\n                    headers[strTrim(headerEntry)] = 1;\r\n                }\r\n            }\r\n        });\r\n    }\r\n    return headers;\r\n}\r\n/**\r\n* append the XHR headers.\r\n* @internal\r\n*/\r\nexport function _appendHeader(theHeaders, xhr, name) {\r\n    if (!theHeaders[name] && xhr && xhr[_DYN_GET_RESPONSE_HEADER /* @min:%2egetResponseHeader */]) {\r\n        var value = xhr[_DYN_GET_RESPONSE_HEADER /* @min:%2egetResponseHeader */](name);\r\n        if (value) {\r\n            theHeaders[name] = strTrim(value);\r\n        }\r\n    }\r\n    return theHeaders;\r\n}\r\nvar STR_KILL_DURATION_HEADER = \"kill-duration\";\r\nvar STR_KILL_DURATION_SECONDS_HEADER = \"kill-duration-seconds\";\r\nvar STR_TIME_DELTA_HEADER = \"time-delta-millis\";\r\n/**\r\n* get the XHR getAllResponseHeaders.\r\n* @internal\r\n*/\r\nexport function _getAllResponseHeaders(xhr, isOneDs) {\r\n    var theHeaders = {};\r\n    if (!xhr[_DYN_GET_ALL_RESPONSE_HEA5 /* @min:%2egetAllResponseHeaders */]) {\r\n        // Firefox 2-63 doesn't have getAllResponseHeaders function but it does have getResponseHeader\r\n        // Only call these if getAllResponseHeaders doesn't exist, otherwise we can get invalid response errors\r\n        // as collector is not currently returning the correct header to allow JS to access these headers\r\n        if (!!isOneDs) {\r\n            theHeaders = _appendHeader(theHeaders, xhr, STR_TIME_DELTA_HEADER);\r\n            theHeaders = _appendHeader(theHeaders, xhr, STR_KILL_DURATION_HEADER);\r\n            theHeaders = _appendHeader(theHeaders, xhr, STR_KILL_DURATION_SECONDS_HEADER);\r\n        }\r\n    }\r\n    else {\r\n        theHeaders = convertAllHeadersToMap(xhr[_DYN_GET_ALL_RESPONSE_HEA5 /* @min:%2egetAllResponseHeaders */]());\r\n    }\r\n    return theHeaders;\r\n}\r\n//# sourceMappingURL=HelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { getGlobal, strShimObject, strShimPrototype, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { getDocument, getInst, getNavigator, getPerformance, hasNavigator, isFunction, isString, isUndefined, strIndexOf } from \"@nevware21/ts-utils\";\r\nimport { _DYN_LENGTH, _DYN_NAME, _DYN_SPLIT, _DYN_TO_LOWER_CASE, _DYN_USER_AGENT } from \"../__DynamicConstants\";\r\nimport { strContains } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n/**\r\n * This file exists to hold environment utilities that are required to check and\r\n * validate the current operating environment. Unless otherwise required, please\r\n * only use defined methods (functions) in this class so that users of these\r\n * functions/properties only need to include those that are used within their own modules.\r\n */\r\nvar strDocumentMode = \"documentMode\";\r\nvar strLocation = \"location\";\r\nvar strConsole = \"console\";\r\nvar strJSON = \"JSON\";\r\nvar strCrypto = \"crypto\";\r\nvar strMsCrypto = \"msCrypto\";\r\nvar strReactNative = \"ReactNative\";\r\nvar strMsie = \"msie\";\r\nvar strTrident = \"trident/\";\r\nvar strXMLHttpRequest = \"XMLHttpRequest\";\r\nvar _isTrident = null;\r\nvar _navUserAgentCheck = null;\r\nvar _enableMocks = false;\r\nvar _useXDomainRequest = null;\r\nvar _beaconsSupported = null;\r\nfunction _hasProperty(theClass, property) {\r\n    var supported = false;\r\n    if (theClass) {\r\n        try {\r\n            supported = property in theClass;\r\n            if (!supported) {\r\n                var proto = theClass[strShimPrototype];\r\n                if (proto) {\r\n                    supported = property in proto;\r\n                }\r\n            }\r\n        }\r\n        catch (e) {\r\n            // Do Nothing\r\n        }\r\n        if (!supported) {\r\n            try {\r\n                var tmp = new theClass();\r\n                supported = !isUndefined(tmp[property]);\r\n            }\r\n            catch (e) {\r\n                // Do Nothing\r\n            }\r\n        }\r\n    }\r\n    return supported;\r\n}\r\n/**\r\n * Enable the lookup of test mock objects if requested\r\n * @param enabled\r\n */\r\nexport function setEnableEnvMocks(enabled) {\r\n    _enableMocks = enabled;\r\n}\r\n/**\r\n * Returns the global location object if it is present otherwise null.\r\n * This helper is used to access the location object without causing an exception\r\n * \"Uncaught ReferenceError: location is not defined\"\r\n */\r\nexport function getLocation(checkForMock) {\r\n    if (checkForMock && _enableMocks) {\r\n        var mockLocation = getInst(\"__mockLocation\");\r\n        if (mockLocation) {\r\n            return mockLocation;\r\n        }\r\n    }\r\n    if (typeof location === strShimObject && location) {\r\n        return location;\r\n    }\r\n    return getInst(strLocation);\r\n}\r\n/**\r\n * Returns the global console object\r\n */\r\nexport function getConsole() {\r\n    if (typeof console !== strShimUndefined) {\r\n        return console;\r\n    }\r\n    return getInst(strConsole);\r\n}\r\n/**\r\n * Checks if JSON object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: JSON is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasJSON() {\r\n    return Boolean((typeof JSON === strShimObject && JSON) || getInst(strJSON) !== null);\r\n}\r\n/**\r\n * Returns the global JSON object if it is present otherwise null.\r\n * This helper is used to access the JSON object without causing an exception\r\n * \"Uncaught ReferenceError: JSON is not defined\"\r\n */\r\nexport function getJSON() {\r\n    if (hasJSON()) {\r\n        return JSON || getInst(strJSON);\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getCrypto() {\r\n    return getInst(strCrypto);\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getMsCrypto() {\r\n    return getInst(strMsCrypto);\r\n}\r\n/**\r\n * Returns whether the environment is reporting that we are running in a React Native Environment\r\n */\r\nexport function isReactNative() {\r\n    // If running in React Native, navigator.product will be populated\r\n    var nav = getNavigator();\r\n    if (nav && nav.product) {\r\n        return nav.product === strReactNative;\r\n    }\r\n    return false;\r\n}\r\n/**\r\n * Identifies whether the current environment appears to be IE\r\n */\r\nexport function isIE() {\r\n    var nav = getNavigator();\r\n    if (nav && (nav[_DYN_USER_AGENT /* @min:%2euserAgent */] !== _navUserAgentCheck || _isTrident === null)) {\r\n        // Added to support test mocking of the user agent\r\n        _navUserAgentCheck = nav[_DYN_USER_AGENT /* @min:%2euserAgent */];\r\n        var userAgent = (_navUserAgentCheck || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n        _isTrident = (strContains(userAgent, strMsie) || strContains(userAgent, strTrident));\r\n    }\r\n    return _isTrident;\r\n}\r\n/**\r\n * Gets IE version returning the document emulation mode if we are running on IE, or null otherwise\r\n */\r\nexport function getIEVersion(userAgentStr) {\r\n    if (userAgentStr === void 0) { userAgentStr = null; }\r\n    if (!userAgentStr) {\r\n        var navigator_1 = getNavigator() || {};\r\n        userAgentStr = navigator_1 ? (navigator_1.userAgent || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() : STR_EMPTY;\r\n    }\r\n    var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n    // Also check for documentMode in case X-UA-Compatible meta tag was included in HTML.\r\n    if (strContains(ua, strMsie)) {\r\n        var doc = getDocument() || {};\r\n        return Math.max(parseInt(ua[_DYN_SPLIT /* @min:%2esplit */](strMsie)[1]), (doc[strDocumentMode] || 0));\r\n    }\r\n    else if (strContains(ua, strTrident)) {\r\n        var tridentVer = parseInt(ua[_DYN_SPLIT /* @min:%2esplit */](strTrident)[1]);\r\n        if (tridentVer) {\r\n            return tridentVer + 4;\r\n        }\r\n    }\r\n    return null;\r\n}\r\nexport function isSafari(userAgentStr) {\r\n    if (!userAgentStr || !isString(userAgentStr)) {\r\n        var navigator_2 = getNavigator() || {};\r\n        userAgentStr = navigator_2 ? (navigator_2.userAgent || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() : STR_EMPTY;\r\n    }\r\n    var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n    return (strIndexOf(ua, \"safari\") >= 0);\r\n}\r\n/**\r\n * Checks if HTML5 Beacons are supported in the current environment.\r\n * @param useCached - [Optional] used for testing to bypass the cached lookup, when `true` this will\r\n * cause the cached global to be reset.\r\n * @returns True if supported, false otherwise.\r\n */\r\nexport function isBeaconsSupported(useCached) {\r\n    if (_beaconsSupported === null || useCached === false) {\r\n        _beaconsSupported = hasNavigator() && Boolean(getNavigator().sendBeacon);\r\n    }\r\n    return _beaconsSupported;\r\n}\r\n/**\r\n * Checks if the Fetch API is supported in the current environment.\r\n * @param withKeepAlive - [Optional] If True, check if fetch is available and it supports the keepalive feature, otherwise only check if fetch is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isFetchSupported(withKeepAlive) {\r\n    var isSupported = false;\r\n    try {\r\n        isSupported = !!getInst(\"fetch\");\r\n        var request = getInst(\"Request\");\r\n        if (isSupported && withKeepAlive && request) {\r\n            isSupported = _hasProperty(request, \"keepalive\");\r\n        }\r\n    }\r\n    catch (e) {\r\n        // Just Swallow any failure during availability checks\r\n    }\r\n    return isSupported;\r\n}\r\nexport function useXDomainRequest() {\r\n    if (_useXDomainRequest === null) {\r\n        _useXDomainRequest = (typeof XDomainRequest !== strShimUndefined);\r\n        if (_useXDomainRequest && isXhrSupported()) {\r\n            _useXDomainRequest = _useXDomainRequest && !_hasProperty(getInst(strXMLHttpRequest), \"withCredentials\");\r\n        }\r\n    }\r\n    return _useXDomainRequest;\r\n}\r\n/**\r\n * Checks if XMLHttpRequest is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isXhrSupported() {\r\n    var isSupported = false;\r\n    try {\r\n        var xmlHttpRequest = getInst(strXMLHttpRequest);\r\n        isSupported = !!xmlHttpRequest;\r\n    }\r\n    catch (e) {\r\n        // Just Swallow any failure during availability checks\r\n    }\r\n    return isSupported;\r\n}\r\nfunction _getNamedValue(values, name) {\r\n    if (values) {\r\n        for (var i = 0; i < values[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n            var value = values[i];\r\n            if (value[_DYN_NAME /* @min:%2ename */]) {\r\n                if (value[_DYN_NAME /* @min:%2ename */] === name) {\r\n                    return value;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return {};\r\n}\r\n/**\r\n * Helper function to fetch the named meta-tag from the page.\r\n * @param name\r\n */\r\nexport function findMetaTag(name) {\r\n    var doc = getDocument();\r\n    if (doc && name) {\r\n        // Look for a meta-tag\r\n        return _getNamedValue(doc.querySelectorAll(\"meta\"), name).content;\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Helper function to fetch the named server timing value from the page response (first navigation event).\r\n * @param name\r\n */\r\nexport function findNamedServerTiming(name) {\r\n    var value;\r\n    var perf = getPerformance();\r\n    if (perf) {\r\n        // Try looking for a server-timing header\r\n        var navPerf = perf.getEntriesByType(\"navigation\") || [];\r\n        value = _getNamedValue((navPerf[_DYN_LENGTH /* @min:%2elength */] > 0 ? navPerf[0] : {}).serverTiming, name).description;\r\n    }\r\n    return value;\r\n}\r\n// TODO: should reuse this method for analytics plugin\r\nexport function dispatchEvent(target, evnt) {\r\n    if (target && target.dispatchEvent && evnt) {\r\n        target.dispatchEvent(evnt);\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\nexport function createCustomDomEvent(eventName, details) {\r\n    var event = null;\r\n    var detail = { detail: details || null };\r\n    if (isFunction(CustomEvent)) { // Use CustomEvent constructor when available\r\n        event = new CustomEvent(eventName, detail);\r\n    }\r\n    else { // CustomEvent has no constructor in IE\r\n        var doc = getDocument();\r\n        if (doc && doc.createEvent) {\r\n            event = doc.createEvent(\"CustomEvent\");\r\n            event.initCustomEvent(eventName, true, true, detail);\r\n        }\r\n    }\r\n    return event;\r\n}\r\nexport function sendCustomEvent(evtName, cfg, customDetails) {\r\n    var global = getGlobal();\r\n    if (global && global.CustomEvent) {\r\n        try {\r\n            var details = { cfg: cfg || null, customDetails: customDetails || null };\r\n            return dispatchEvent(global, createCustomDomEvent(evtName, details));\r\n        }\r\n        catch (e) {\r\n            // eslint-disable-next-line no-empty\r\n        }\r\n    }\r\n    return false;\r\n}\r\n//# sourceMappingURL=EnvUtils.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { utcNow } from \"@nevware21/ts-utils\";\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { getCrypto, getMsCrypto, isIE } from \"./EnvUtils\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nvar UInt32Mask = 0x100000000;\r\nvar MaxUInt32 = 0xffffffff;\r\nvar SEED1 = 123456789;\r\nvar SEED2 = 987654321;\r\n// MWC based Random generator (for IE)\r\nvar _mwcSeeded = false;\r\nvar _mwcW = SEED1;\r\nvar _mwcZ = SEED2;\r\n// Takes any integer\r\nfunction _mwcSeed(seedValue) {\r\n    if (seedValue < 0) {\r\n        // Make sure we end up with a positive number and not -ve one.\r\n        seedValue >>>= 0;\r\n    }\r\n    _mwcW = (SEED1 + seedValue) & MaxUInt32;\r\n    _mwcZ = (SEED2 - seedValue) & MaxUInt32;\r\n    _mwcSeeded = true;\r\n}\r\nfunction _autoSeedMwc() {\r\n    // Simple initialization using default Math.random() - So we inherit any entropy from the browser\r\n    // and bitwise XOR with the current milliseconds\r\n    try {\r\n        var now = utcNow() & 0x7fffffff;\r\n        _mwcSeed(((Math.random() * UInt32Mask) ^ now) + now);\r\n    }\r\n    catch (e) {\r\n        // Don't crash if something goes wrong\r\n    }\r\n}\r\n/**\r\n * Generate a random value between 0 and maxValue, max value should be limited to a 32-bit maximum.\r\n * So maxValue(16) will produce a number from 0..16 (range of 17)\r\n * @param maxValue\r\n */\r\nexport function randomValue(maxValue) {\r\n    if (maxValue > 0) {\r\n        return Math.floor((random32() / MaxUInt32) * (maxValue + 1)) >>> 0;\r\n    }\r\n    return 0;\r\n}\r\n/**\r\n * generate a random 32-bit number (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), defaults un-unsigned.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function random32(signed) {\r\n    var value = 0;\r\n    var c = getCrypto() || getMsCrypto();\r\n    if (c && c.getRandomValues) {\r\n        // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n        value = c.getRandomValues(new Uint32Array(1))[0] & MaxUInt32;\r\n    }\r\n    if (value === 0 && isIE()) {\r\n        // For IE 6, 7, 8 (especially on XP) Math.random is not very random\r\n        if (!_mwcSeeded) {\r\n            // Set the seed for the Mwc algorithm\r\n            _autoSeedMwc();\r\n        }\r\n        // Don't use Math.random for IE\r\n        // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n        value = mwcRandom32() & MaxUInt32;\r\n    }\r\n    if (value === 0) {\r\n        // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n        value = Math.floor((UInt32Mask * Math.random()) | 0);\r\n    }\r\n    if (!signed) {\r\n        // Make sure we end up with a positive number and not -ve one.\r\n        value >>>= 0;\r\n    }\r\n    return value;\r\n}\r\n/**\r\n * Seed the MWC random number generator with the specified seed or a random value\r\n * @param value - optional the number to used as the seed, if undefined, null or zero a random value will be chosen\r\n */\r\nexport function mwcRandomSeed(value) {\r\n    if (!value) {\r\n        _autoSeedMwc();\r\n    }\r\n    else {\r\n        _mwcSeed(value);\r\n    }\r\n}\r\n/**\r\n * Generate a random 32-bit number between (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), using MWC (Multiply with carry)\r\n * instead of Math.random() defaults to un-signed.\r\n * Used as a replacement random generator for IE to avoid issues with older IE instances.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function mwcRandom32(signed) {\r\n    _mwcZ = (36969 * (_mwcZ & 0xFFFF) + (_mwcZ >> 16)) & MaxUInt32;\r\n    _mwcW = (18000 * (_mwcW & 0xFFFF) + (_mwcW >> 16)) & MaxUInt32;\r\n    var value = (((_mwcZ << 16) + (_mwcW & 0xFFFF)) >>> 0) & MaxUInt32 | 0;\r\n    if (!signed) {\r\n        // Make sure we end up with a positive number and not -ve one.\r\n        value >>>= 0;\r\n    }\r\n    return value;\r\n}\r\n/**\r\n * Generate random base64 id string.\r\n * The default length is 22 which is 132-bits so almost the same as a GUID but as base64 (the previous default was 5)\r\n * @param maxLength - Optional value to specify the length of the id to be generated, defaults to 22\r\n */\r\nexport function newId(maxLength) {\r\n    if (maxLength === void 0) { maxLength = 22; }\r\n    var base64chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n    // Start with an initial random number, consuming the value in reverse byte order\r\n    var number = random32() >>> 0; // Make sure it's a +ve number\r\n    var chars = 0;\r\n    var result = STR_EMPTY;\r\n    while (result[_DYN_LENGTH /* @min:%2elength */] < maxLength) {\r\n        chars++;\r\n        result += base64chars.charAt(number & 0x3F);\r\n        number >>>= 6; // Zero fill with right shift\r\n        if (chars === 5) {\r\n            // 5 base64 characters === 30 bits so we don't have enough bits for another base64 char\r\n            // So add on another 30 bits and make sure it's +ve\r\n            number = (((random32() << 2) & 0xFFFFFFFF) | (number & 0x03)) >>> 0;\r\n            chars = 0; // We need to reset the number every 5 chars (30 bits)\r\n        }\r\n    }\r\n    return result;\r\n}\r\n//# sourceMappingURL=RandomHelper.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { objDefine } from \"@nevware21/ts-utils\";\r\nimport { _DYN_NODE_TYPE } from \"../__DynamicConstants\";\r\nimport { normalizeJsName } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nimport { newId } from \"./RandomHelper\";\r\nvar version = '3.3.4';\r\nvar instanceName = \".\" + newId(6);\r\nvar _dataUid = 0;\r\n// Accepts only:\r\n//  - Node\r\n//    - Node.ELEMENT_NODE\r\n//    - Node.DOCUMENT_NODE\r\n//  - Object\r\n//    - Any\r\nfunction _canAcceptData(target) {\r\n    return target[_DYN_NODE_TYPE /* @min:%2enodeType */] === 1 || target[_DYN_NODE_TYPE /* @min:%2enodeType */] === 9 || !(+target[_DYN_NODE_TYPE /* @min:%2enodeType */]);\r\n}\r\nfunction _getCache(data, target) {\r\n    var theCache = target[data.id];\r\n    if (!theCache) {\r\n        theCache = {};\r\n        try {\r\n            if (_canAcceptData(target)) {\r\n                objDefine(target, data.id, {\r\n                    e: false,\r\n                    v: theCache\r\n                });\r\n            }\r\n        }\r\n        catch (e) {\r\n            // Not all environments allow extending all objects, so just ignore the cache in those cases\r\n        }\r\n    }\r\n    return theCache;\r\n}\r\nexport function createUniqueNamespace(name, includeVersion) {\r\n    if (includeVersion === void 0) { includeVersion = false; }\r\n    return normalizeJsName(name + (_dataUid++) + (includeVersion ? \".\" + version : STR_EMPTY) + instanceName);\r\n}\r\nexport function createElmNodeData(name) {\r\n    var data = {\r\n        id: createUniqueNamespace(\"_aiData-\" + (name || STR_EMPTY) + \".\" + version),\r\n        accept: function (target) {\r\n            return _canAcceptData(target);\r\n        },\r\n        get: function (target, name, defValue, addDefault) {\r\n            var theCache = target[data.id];\r\n            if (!theCache) {\r\n                if (addDefault) {\r\n                    // Side effect is adds the cache\r\n                    theCache = _getCache(data, target);\r\n                    theCache[normalizeJsName(name)] = defValue;\r\n                }\r\n                return defValue;\r\n            }\r\n            return theCache[normalizeJsName(name)];\r\n        },\r\n        kill: function (target, name) {\r\n            if (target && target[name]) {\r\n                try {\r\n                    delete target[name];\r\n                }\r\n                catch (e) {\r\n                    // Just cleaning up, so if this fails -- ignore\r\n                }\r\n            }\r\n        }\r\n    };\r\n    return data;\r\n}\r\n//# sourceMappingURL=DataCacheHelper.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { asString, isArray, isDefined, isNullOrUndefined, isObject, isPlainObject, isUndefined, objForEachKey, objHasOwn } from \"@nevware21/ts-utils\";\r\nimport { _DYN_BLK_VAL, _DYN_LENGTH, _DYN_RD_ONLY } from \"../__DynamicConstants\";\r\nfunction _isConfigDefaults(value) {\r\n    return (value && isObject(value) && (value.isVal || value.fb || objHasOwn(value, \"v\") || objHasOwn(value, \"mrg\") || objHasOwn(value, \"ref\") || value.set));\r\n}\r\nfunction _getDefault(dynamicHandler, theConfig, cfgDefaults) {\r\n    var defValue;\r\n    var isDefaultValid = cfgDefaults.dfVal || isDefined;\r\n    // There is a fallback config key so try and grab that first\r\n    if (theConfig && cfgDefaults.fb) {\r\n        var fallbacks = cfgDefaults.fb;\r\n        if (!isArray(fallbacks)) {\r\n            fallbacks = [fallbacks];\r\n        }\r\n        for (var lp = 0; lp < fallbacks[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n            var fallback = fallbacks[lp];\r\n            var fbValue = theConfig[fallback];\r\n            if (isDefaultValid(fbValue)) {\r\n                defValue = fbValue;\r\n            }\r\n            else if (dynamicHandler) {\r\n                // Needed to ensure that the fallback value (and potentially) new field is also dynamic even if null/undefined\r\n                fbValue = dynamicHandler.cfg[fallback];\r\n                if (isDefaultValid(fbValue)) {\r\n                    defValue = fbValue;\r\n                }\r\n                // Needed to ensure that the fallback value (and potentially) new field is also dynamic even if null/undefined\r\n                dynamicHandler.set(dynamicHandler.cfg, asString(fallback), fbValue);\r\n            }\r\n            if (isDefaultValid(defValue)) {\r\n                // We have a valid default so break out of the look\r\n                break;\r\n            }\r\n        }\r\n    }\r\n    // If the value is still not defined and we have a default value then use that\r\n    if (!isDefaultValid(defValue) && isDefaultValid(cfgDefaults.v)) {\r\n        defValue = cfgDefaults.v;\r\n    }\r\n    return defValue;\r\n}\r\n/**\r\n * Recursively resolve the default value\r\n * @param dynamicHandler\r\n * @param theConfig\r\n * @param cfgDefaults\r\n * @returns\r\n */\r\nfunction _resolveDefaultValue(dynamicHandler, theConfig, cfgDefaults) {\r\n    var theValue = cfgDefaults;\r\n    if (cfgDefaults && _isConfigDefaults(cfgDefaults)) {\r\n        theValue = _getDefault(dynamicHandler, theConfig, cfgDefaults);\r\n    }\r\n    if (theValue) {\r\n        if (_isConfigDefaults(theValue)) {\r\n            theValue = _resolveDefaultValue(dynamicHandler, theConfig, theValue);\r\n        }\r\n        var newValue_1;\r\n        if (isArray(theValue)) {\r\n            newValue_1 = [];\r\n            newValue_1[_DYN_LENGTH /* @min:%2elength */] = theValue[_DYN_LENGTH /* @min:%2elength */];\r\n        }\r\n        else if (isPlainObject(theValue)) {\r\n            newValue_1 = {};\r\n        }\r\n        if (newValue_1) {\r\n            objForEachKey(theValue, function (key, value) {\r\n                if (value && _isConfigDefaults(value)) {\r\n                    value = _resolveDefaultValue(dynamicHandler, theConfig, value);\r\n                }\r\n                newValue_1[key] = value;\r\n            });\r\n            theValue = newValue_1;\r\n        }\r\n    }\r\n    return theValue;\r\n}\r\n/**\r\n * Applies the default value on the config property and makes sure that it's dynamic\r\n * @param theConfig\r\n * @param name\r\n * @param defaultValue\r\n */\r\nexport function _applyDefaultValue(dynamicHandler, theConfig, name, defaultValue) {\r\n    // Resolve the initial config value from the provided value or use the defined default\r\n    var isValid;\r\n    var setFn;\r\n    var defValue;\r\n    var cfgDefaults = defaultValue;\r\n    var mergeDf;\r\n    var reference;\r\n    var readOnly;\r\n    var blkDynamicValue;\r\n    if (_isConfigDefaults(cfgDefaults)) {\r\n        // looks like a IConfigDefault\r\n        isValid = cfgDefaults.isVal;\r\n        setFn = cfgDefaults.set;\r\n        readOnly = cfgDefaults[_DYN_RD_ONLY /* @min:%2erdOnly */];\r\n        blkDynamicValue = cfgDefaults[_DYN_BLK_VAL /* @min:%2eblkVal */];\r\n        mergeDf = cfgDefaults.mrg;\r\n        reference = cfgDefaults.ref;\r\n        if (!reference && isUndefined(reference)) {\r\n            reference = !!mergeDf;\r\n        }\r\n        defValue = _getDefault(dynamicHandler, theConfig, cfgDefaults);\r\n    }\r\n    else {\r\n        defValue = defaultValue;\r\n    }\r\n    if (blkDynamicValue) {\r\n        // Mark the property so that any value assigned will be blocked from conversion, we need to do this\r\n        // before assigning or fetching the value to ensure it's not converted\r\n        dynamicHandler[_DYN_BLK_VAL /* @min:%2eblkVal */](theConfig, name);\r\n    }\r\n    // Set the value to the default value;\r\n    var theValue;\r\n    var usingDefault = true;\r\n    var cfgValue = theConfig[name];\r\n    // try and get and user provided values\r\n    if (cfgValue || !isNullOrUndefined(cfgValue)) {\r\n        // Use the defined theConfig[name] value\r\n        theValue = cfgValue;\r\n        usingDefault = false;\r\n        // The values are different and we have a special default value check, which is used to\r\n        // override config values like empty strings to continue using the default\r\n        if (isValid && theValue !== defValue && !isValid(theValue)) {\r\n            theValue = defValue;\r\n            usingDefault = true;\r\n        }\r\n        if (setFn) {\r\n            theValue = setFn(theValue, defValue, theConfig);\r\n            usingDefault = theValue === defValue;\r\n        }\r\n    }\r\n    if (!usingDefault) {\r\n        if (isPlainObject(theValue) || isArray(defValue)) {\r\n            // we are using the user supplied value and it's an object\r\n            if (mergeDf && defValue && (isPlainObject(defValue) || isArray(defValue))) {\r\n                // Resolve/apply the defaults\r\n                objForEachKey(defValue, function (dfName, dfValue) {\r\n                    // Sets the value and makes it dynamic (if it doesn't already exist)\r\n                    _applyDefaultValue(dynamicHandler, theValue, dfName, dfValue);\r\n                });\r\n            }\r\n        }\r\n    }\r\n    else if (defValue) {\r\n        // Just resolve the default\r\n        theValue = _resolveDefaultValue(dynamicHandler, theConfig, defValue);\r\n    }\r\n    else {\r\n        theValue = defValue;\r\n    }\r\n    // if (theValue && usingDefault && (isPlainObject(theValue) || isArray(theValue))) {\r\n    //     theValue = _cfgDeepCopy(theValue);\r\n    // }\r\n    // Needed to ensure that the (potentially) new field is dynamic even if null/undefined\r\n    dynamicHandler.set(theConfig, name, theValue);\r\n    if (reference) {\r\n        dynamicHandler.ref(theConfig, name);\r\n    }\r\n    if (readOnly) {\r\n        dynamicHandler[_DYN_RD_ONLY /* @min:%2erdOnly */](theConfig, name);\r\n    }\r\n}\r\n//# sourceMappingURL=ConfigDefaults.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { isArray, isPlainObject, objForEachKey, symbolFor, throwTypeError } from \"@nevware21/ts-utils\";\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\n// Using Symbol.for so that if the same symbol was already created it would be returned\r\n// To handle multiple instances using potentially different versions we are not using\r\n// createUniqueNamespace()\r\nexport var CFG_HANDLER_LINK = symbolFor(\"[[ai_dynCfg_1]]\");\r\n/**\r\n * @internal\r\n * @ignore\r\n * The symbol to tag objects / arrays with if they should not be converted\r\n */\r\nvar BLOCK_DYNAMIC = symbolFor(\"[[ai_blkDynCfg_1]]\");\r\n/**\r\n * @internal\r\n * @ignore\r\n * The symbol to tag objects to indicate that when included into the configuration that\r\n * they should be converted into a trackable dynamic object.\r\n */\r\nvar FORCE_DYNAMIC = symbolFor(\"[[ai_frcDynCfg_1]]\");\r\nexport function _cfgDeepCopy(source) {\r\n    if (source) {\r\n        var target_1;\r\n        if (isArray(source)) {\r\n            target_1 = [];\r\n            target_1[_DYN_LENGTH /* @min:%2elength */] = source[_DYN_LENGTH /* @min:%2elength */];\r\n        }\r\n        else if (isPlainObject(source)) {\r\n            target_1 = {};\r\n        }\r\n        if (target_1) {\r\n            // Copying index values by property name as the extensionConfig can be an array or object\r\n            objForEachKey(source, function (key, value) {\r\n                // Perform a deep copy of the object\r\n                target_1[key] = _cfgDeepCopy(value);\r\n            });\r\n            return target_1;\r\n        }\r\n    }\r\n    return source;\r\n}\r\n/**\r\n * @internal\r\n * Get the dynamic config handler if the value is already dynamic\r\n * @param value\r\n * @returns\r\n */\r\nexport function getDynamicConfigHandler(value) {\r\n    if (value) {\r\n        var handler = value[CFG_HANDLER_LINK] || value;\r\n        if (handler.cfg && (handler.cfg === value || handler.cfg[CFG_HANDLER_LINK] === handler)) {\r\n            return handler;\r\n        }\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Mark the provided value so that if it's included into the configuration it will NOT have\r\n * its properties converted into a dynamic (reactive) object. If the object is not a plain object\r\n * or an array (ie. a class) this function has not affect as only Objects and Arrays are converted\r\n * into dynamic objects in the dynamic configuration.\r\n *\r\n * When you have tagged a value as both {@link forceDynamicConversion} and blocked force will take precedence.\r\n *\r\n * You should only need to use this function, if you are creating dynamic \"classes\" from objects\r\n * which confirm to the require interface. A common case for this is during unit testing where it's\r\n * easier to create mock extensions.\r\n *\r\n * If `value` is falsy (null / undefined / 0 / empty string etc) it will not be tagged and\r\n * if there is an exception adding the property to the value (because its frozen etc) the\r\n * exception will be swallowed\r\n *\r\n * @example\r\n * ```ts\r\n * // This is a valid \"extension\", but it is technically an object\r\n * // So when included in the config.extensions it WILL be cloned and then\r\n * // converted into a dynamic object, where all of its properties will become\r\n * // get/set object properties and will be tracked. While this WILL still\r\n * // function, when attempt to use a mocking framework on top of this the\r\n * // functions are now technically get accessors which return a function\r\n * // and this can cause some mocking frameworks to fail.\r\n * let mockChannel = {\r\n *      pause: () => { },\r\n*      resume: () => { },\r\n*      teardown: () => { },\r\n*      flush: (async: any, callBack: any) => { },\r\n*      processTelemetry: (env: any) => { },\r\n*      setNextPlugin: (next: any) => { },\r\n*      initialize: (config: any, core: any, extensions: any) => { },\r\n*      identifier: \"testChannel\",\r\n*      priority: 1003\r\n* };\r\n * ```\r\n * @param value - The object that you want to block from being converted into a\r\n * trackable dynamic object\r\n * @returns The original value\r\n */\r\nexport function blockDynamicConversion(value) {\r\n    if (value && (isPlainObject(value) || isArray(value))) {\r\n        try {\r\n            value[BLOCK_DYNAMIC] = true;\r\n        }\r\n        catch (e) {\r\n            // Don't throw for this case as it's an ask only\r\n        }\r\n    }\r\n    return value;\r\n}\r\n/**\r\n * This is the reverse case of {@link blockDynamicConversion} in that this will tag an\r\n * object to indicate that it should always be converted into a dynamic trackable object\r\n * even when not an object or array. So all properties of this object will become\r\n * get / set accessor functions.\r\n *\r\n * When you have tagged a value as both {@link forceDynamicConversion} and blocked force will take precedence.\r\n *\r\n * If `value` is falsy (null / undefined / 0 / empty string etc) it will not be tagged and\r\n * if there is an exception adding the property to the value (because its frozen etc) the\r\n * exception will be swallowed.\r\n * @param value - The object that should be tagged and converted if included into a dynamic\r\n * configuration.\r\n * @returns The original value\r\n */\r\nexport function forceDynamicConversion(value) {\r\n    if (value) {\r\n        try {\r\n            value[FORCE_DYNAMIC] = true;\r\n        }\r\n        catch (e) {\r\n            // Don't throw for this case as it's an ask only\r\n        }\r\n    }\r\n    return value;\r\n}\r\n/**\r\n * @internal\r\n * @ignore\r\n * Helper function to check whether an object can or should be converted into a dynamic\r\n * object.\r\n * @param value - The object to check whether it should be converted\r\n * @returns `true` if the value should be converted otherwise `false`.\r\n */\r\nexport function _canMakeDynamic(getFunc, state, value) {\r\n    var result = false;\r\n    // Object must exist and be truthy\r\n    if (value && !getFunc[state.blkVal]) {\r\n        // Tagged as always convert\r\n        result = value[FORCE_DYNAMIC];\r\n        // Check that it's not explicitly tagged as blocked\r\n        if (!result && !value[BLOCK_DYNAMIC]) {\r\n            // Only convert plain objects or arrays by default\r\n            result = isPlainObject(value) || isArray(value);\r\n        }\r\n    }\r\n    return result;\r\n}\r\n/**\r\n * Throws an invalid access exception\r\n * @param message - The message to include in the exception\r\n */\r\nexport function throwInvalidAccess(message) {\r\n    throwTypeError(\"InvalidAccess:\" + message);\r\n}\r\n//# sourceMappingURL=DynamicSupport.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, arrIndexOf, dumpObj, isArray, objDefine, objDefineProp, objForEachKey, objGetOwnPropertyDescriptor } from \"@nevware21/ts-utils\";\r\nimport { UNDEFINED_VALUE } from \"../JavaScriptSDK/InternalConstants\";\r\nimport { _DYN_APPLY, _DYN_HDLR, _DYN_LOGGER, _DYN_PUSH, _DYN_SPLICE, _DYN_THROW_INTERNAL } from \"../__DynamicConstants\";\r\nimport { CFG_HANDLER_LINK, _canMakeDynamic, blockDynamicConversion, throwInvalidAccess } from \"./DynamicSupport\";\r\nvar arrayMethodsToPatch = [\r\n    \"push\",\r\n    \"pop\",\r\n    \"shift\",\r\n    \"unshift\",\r\n    \"splice\"\r\n];\r\nexport var _throwDynamicError = function (logger, name, desc, e) {\r\n    logger && logger[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */](3 /* eLoggingSeverity.DEBUG */, 108 /* _eInternalMessageId.DynamicConfigException */, \"\".concat(desc, \" [\").concat(name, \"] failed - \") + dumpObj(e));\r\n};\r\nfunction _patchArray(state, target, name) {\r\n    if (isArray(target)) {\r\n        // Monkey Patch the methods that might change the array\r\n        arrForEach(arrayMethodsToPatch, function (method) {\r\n            var orgMethod = target[method];\r\n            target[method] = function () {\r\n                var args = [];\r\n                for (var _i = 0; _i < arguments.length; _i++) {\r\n                    args[_i] = arguments[_i];\r\n                }\r\n                var result = orgMethod[_DYN_APPLY /* @min:%2eapply */](this, args);\r\n                // items may be added, removed or moved so need to make some new dynamic properties\r\n                _makeDynamicObject(state, target, name, \"Patching\");\r\n                return result;\r\n            };\r\n        });\r\n    }\r\n}\r\nfunction _getOwnPropGetter(target, name) {\r\n    var propDesc = objGetOwnPropertyDescriptor(target, name);\r\n    return propDesc && propDesc.get;\r\n}\r\nfunction _createDynamicProperty(state, theConfig, name, value) {\r\n    // Does not appear to be dynamic so lets make it so\r\n    var detail = {\r\n        n: name,\r\n        h: [],\r\n        trk: function (handler) {\r\n            if (handler && handler.fn) {\r\n                if (arrIndexOf(detail.h, handler) === -1) {\r\n                    // Add this handler to the collection that should be notified when the value changes\r\n                    detail.h[_DYN_PUSH /* @min:%2epush */](handler);\r\n                }\r\n                state.trk(handler, detail);\r\n            }\r\n        },\r\n        clr: function (handler) {\r\n            var idx = arrIndexOf(detail.h, handler);\r\n            if (idx !== -1) {\r\n                detail.h[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n            }\r\n        }\r\n    };\r\n    // Flag to optimize lookup response time by avoiding additional function calls\r\n    var checkDynamic = true;\r\n    var isObjectOrArray = false;\r\n    function _getProperty() {\r\n        if (checkDynamic) {\r\n            isObjectOrArray = isObjectOrArray || _canMakeDynamic(_getProperty, state, value);\r\n            // Make sure that if it's an object that we make it dynamic\r\n            if (value && !value[CFG_HANDLER_LINK] && isObjectOrArray) {\r\n                // It doesn't look like it's already dynamic so lets make sure it's converted the object into a dynamic Config as well\r\n                value = _makeDynamicObject(state, value, name, \"Converting\");\r\n            }\r\n            // If it needed to be converted it now has been\r\n            checkDynamic = false;\r\n        }\r\n        // If there is an active handler then add it to the tracking set of handlers\r\n        var activeHandler = state.act;\r\n        if (activeHandler) {\r\n            detail.trk(activeHandler);\r\n        }\r\n        return value;\r\n    }\r\n    // Tag this getter as our dynamic property and provide shortcut for notifying a change\r\n    _getProperty[state.prop] = {\r\n        chng: function () {\r\n            state.add(detail);\r\n        }\r\n    };\r\n    function _setProperty(newValue) {\r\n        if (value !== newValue) {\r\n            if (!!_getProperty[state.ro] && !state.upd) {\r\n                // field is marked as readonly so return false\r\n                throwInvalidAccess(\"[\" + name + \"] is read-only:\" + dumpObj(theConfig));\r\n            }\r\n            if (checkDynamic) {\r\n                isObjectOrArray = isObjectOrArray || _canMakeDynamic(_getProperty, state, value);\r\n                checkDynamic = false;\r\n            }\r\n            // The value must be a plain object or an array to enforce the reference (in-place updates)\r\n            var isReferenced = isObjectOrArray && _getProperty[state.rf];\r\n            if (isObjectOrArray) {\r\n                // We are about to replace a plain object or an array\r\n                if (isReferenced) {\r\n                    // Reassign the properties from the current value to the same properties from the newValue\r\n                    // This will set properties not in the newValue to undefined\r\n                    objForEachKey(value, function (key) {\r\n                        value[key] = newValue ? newValue[key] : UNDEFINED_VALUE;\r\n                    });\r\n                    // Now assign / re-assign value with all of the keys from newValue\r\n                    try {\r\n                        objForEachKey(newValue, function (key, theValue) {\r\n                            _setDynamicProperty(state, value, key, theValue);\r\n                        });\r\n                        // Now drop newValue so when we assign value later it keeps the existing reference\r\n                        newValue = value;\r\n                    }\r\n                    catch (e) {\r\n                        // Unable to convert to dynamic property so just leave as non-dynamic\r\n                        _throwDynamicError((state.hdlr || {})[_DYN_LOGGER /* @min:%2elogger */], name, \"Assigning\", e);\r\n                        // Mark as not an object or array so we don't try and do this again\r\n                        isObjectOrArray = false;\r\n                    }\r\n                }\r\n                else if (value && value[CFG_HANDLER_LINK]) {\r\n                    // As we are replacing the value, if it's already dynamic then we need to notify the listeners\r\n                    // for every property it has already\r\n                    objForEachKey(value, function (key) {\r\n                        // Check if the value is dynamic\r\n                        var getter = _getOwnPropGetter(value, key);\r\n                        if (getter) {\r\n                            // And if it is tell it's listeners that the value has changed\r\n                            var valueState = getter[state.prop];\r\n                            valueState && valueState.chng();\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            if (newValue !== value) {\r\n                var newIsObjectOrArray = newValue && _canMakeDynamic(_getProperty, state, newValue);\r\n                if (!isReferenced && newIsObjectOrArray) {\r\n                    // As the newValue is an object/array lets preemptively make it dynamic\r\n                    newValue = _makeDynamicObject(state, newValue, name, \"Converting\");\r\n                }\r\n                // Now assign the internal \"value\" to the newValue\r\n                value = newValue;\r\n                isObjectOrArray = newIsObjectOrArray;\r\n            }\r\n            // Cause any listeners to be scheduled for notification\r\n            state.add(detail);\r\n        }\r\n    }\r\n    objDefine(theConfig, detail.n, { g: _getProperty, s: _setProperty });\r\n}\r\nexport function _setDynamicProperty(state, target, name, value) {\r\n    if (target) {\r\n        // To be a dynamic property it needs to have a get function\r\n        var getter = _getOwnPropGetter(target, name);\r\n        var isDynamic = getter && !!getter[state.prop];\r\n        if (!isDynamic) {\r\n            _createDynamicProperty(state, target, name, value);\r\n        }\r\n        else {\r\n            // Looks like it's already dynamic just assign the new value\r\n            target[name] = value;\r\n        }\r\n    }\r\n    return target;\r\n}\r\nexport function _setDynamicPropertyState(state, target, name, flags) {\r\n    if (target) {\r\n        // To be a dynamic property it needs to have a get function\r\n        var getter = _getOwnPropGetter(target, name);\r\n        var isDynamic = getter && !!getter[state.prop];\r\n        var inPlace = flags && flags[0 /* _eSetDynamicPropertyFlags.inPlace */];\r\n        var rdOnly = flags && flags[1 /* _eSetDynamicPropertyFlags.readOnly */];\r\n        var blkProp = flags && flags[2 /* _eSetDynamicPropertyFlags.blockDynamicProperty */];\r\n        if (!isDynamic) {\r\n            if (blkProp) {\r\n                try {\r\n                    // Attempt to mark the target as blocked from conversion\r\n                    blockDynamicConversion(target);\r\n                }\r\n                catch (e) {\r\n                    _throwDynamicError((state.hdlr || {})[_DYN_LOGGER /* @min:%2elogger */], name, \"Blocking\", e);\r\n                }\r\n            }\r\n            try {\r\n                // Make sure it's dynamic so that we can tag the property as per the state\r\n                _setDynamicProperty(state, target, name, target[name]);\r\n                getter = _getOwnPropGetter(target, name);\r\n            }\r\n            catch (e) {\r\n                // Unable to convert to dynamic property so just leave as non-dynamic\r\n                _throwDynamicError((state.hdlr || {})[_DYN_LOGGER /* @min:%2elogger */], name, \"State\", e);\r\n            }\r\n        }\r\n        // Assign the optional flags if true\r\n        if (inPlace) {\r\n            getter[state.rf] = inPlace;\r\n        }\r\n        if (rdOnly) {\r\n            getter[state.ro] = rdOnly;\r\n        }\r\n        if (blkProp) {\r\n            getter[state.blkVal] = true;\r\n        }\r\n    }\r\n    return target;\r\n}\r\nexport function _makeDynamicObject(state, target, name, desc) {\r\n    try {\r\n        // Assign target with new value properties (converting into dynamic properties in the process)\r\n        objForEachKey(target, function (key, value) {\r\n            // Assign and/or make the property dynamic\r\n            _setDynamicProperty(state, target, key, value);\r\n        });\r\n        if (!target[CFG_HANDLER_LINK]) {\r\n            // Link the config back to the dynamic config details\r\n            objDefineProp(target, CFG_HANDLER_LINK, {\r\n                get: function () {\r\n                    return state[_DYN_HDLR /* @min:%2ehdlr */];\r\n                }\r\n            });\r\n            _patchArray(state, target, name);\r\n        }\r\n    }\r\n    catch (e) {\r\n        // Unable to convert to dynamic property so just leave as non-dynamic\r\n        _throwDynamicError((state.hdlr || {})[_DYN_LOGGER /* @min:%2elogger */], name, desc, e);\r\n    }\r\n    return target;\r\n}\r\n//# sourceMappingURL=DynamicProperty.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, createCustomError, dumpObj } from \"@nevware21/ts-utils\";\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\nvar aggregationErrorType;\r\n/**\r\n * Throws an Aggregation Error which includes all of the errors that led to this error occurring\r\n * @param message - The message describing the aggregation error (the sourceError details are added to this)\r\n * @param sourceErrors - An array of the errors that caused this situation\r\n */\r\nexport function throwAggregationError(message, sourceErrors) {\r\n    if (!aggregationErrorType) {\r\n        aggregationErrorType = createCustomError(\"AggregationError\", function (self, args) {\r\n            if (args[_DYN_LENGTH /* @min:%2elength */] > 1) {\r\n                // Save the provided errors\r\n                self.errors = args[1];\r\n            }\r\n        });\r\n    }\r\n    var theMessage = message || \"One or more errors occurred.\";\r\n    arrForEach(sourceErrors, function (srcError, idx) {\r\n        theMessage += \"\\n\".concat(idx, \" > \").concat(dumpObj(srcError));\r\n    });\r\n    throw new aggregationErrorType(theMessage, sourceErrors || []);\r\n}\r\n//# sourceMappingURL=AggregationError.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, arrIndexOf, dumpObj, newSymbol, scheduleTimeout } from \"@nevware21/ts-utils\";\r\nimport { throwAggregationError } from \"../JavaScriptSDK/AggregationError\";\r\nimport { _DYN_BLK_VAL, _DYN_CANCEL, _DYN_HDLR, _DYN_LENGTH, _DYN_LOGGER, _DYN_NOTIFY, _DYN_PUSH, _DYN_RD_ONLY, _DYN_SET_DF, _DYN_THROW_INTERNAL } from \"../__DynamicConstants\";\r\nvar symPrefix = \"[[ai_\";\r\nvar symPostfix = \"]]\";\r\nexport function _createState(cfgHandler) {\r\n    var _a;\r\n    var dynamicPropertySymbol = newSymbol(symPrefix + \"get\" + cfgHandler.uid + symPostfix);\r\n    var dynamicPropertyReadOnly = newSymbol(symPrefix + \"ro\" + cfgHandler.uid + symPostfix);\r\n    var dynamicPropertyReferenced = newSymbol(symPrefix + \"rf\" + cfgHandler.uid + symPostfix);\r\n    var dynamicPropertyBlockValue = newSymbol(symPrefix + \"blkVal\" + cfgHandler.uid + symPostfix);\r\n    var dynamicPropertyDetail = newSymbol(symPrefix + \"dtl\" + cfgHandler.uid + symPostfix);\r\n    var _waitingHandlers = null;\r\n    var _watcherTimer = null;\r\n    var theState;\r\n    function _useHandler(activeHandler, callback) {\r\n        var prevWatcher = theState.act;\r\n        try {\r\n            theState.act = activeHandler;\r\n            if (activeHandler && activeHandler[dynamicPropertyDetail]) {\r\n                // Clear out the previously tracked details for this handler, so that access are re-evaluated\r\n                arrForEach(activeHandler[dynamicPropertyDetail], function (detail) {\r\n                    detail.clr(activeHandler);\r\n                });\r\n                activeHandler[dynamicPropertyDetail] = [];\r\n            }\r\n            callback({\r\n                cfg: cfgHandler.cfg,\r\n                set: cfgHandler.set.bind(cfgHandler),\r\n                setDf: cfgHandler[_DYN_SET_DF /* @min:%2esetDf */].bind(cfgHandler),\r\n                ref: cfgHandler.ref.bind(cfgHandler),\r\n                rdOnly: cfgHandler[_DYN_RD_ONLY /* @min:%2erdOnly */].bind(cfgHandler)\r\n            });\r\n        }\r\n        catch (e) {\r\n            var logger = cfgHandler[_DYN_LOGGER /* @min:%2elogger */];\r\n            if (logger) {\r\n                // Don't let one individual failure break everyone\r\n                logger[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */](1 /* eLoggingSeverity.CRITICAL */, 107 /* _eInternalMessageId.ConfigWatcherException */, dumpObj(e));\r\n            }\r\n            // Re-throw the exception so that any true \"error\" is reported back to the called\r\n            throw e;\r\n        }\r\n        finally {\r\n            theState.act = prevWatcher || null;\r\n        }\r\n    }\r\n    function _notifyWatchers() {\r\n        if (_waitingHandlers) {\r\n            var notifyHandlers = _waitingHandlers;\r\n            _waitingHandlers = null;\r\n            // Stop any timer as we are running them now anyway\r\n            _watcherTimer && _watcherTimer[_DYN_CANCEL /* @min:%2ecancel */]();\r\n            _watcherTimer = null;\r\n            var watcherFailures_1 = [];\r\n            // Now run the handlers\r\n            arrForEach(notifyHandlers, function (handler) {\r\n                if (handler) {\r\n                    if (handler[dynamicPropertyDetail]) {\r\n                        arrForEach(handler[dynamicPropertyDetail], function (detail) {\r\n                            // Clear out this handler from  previously tracked details, so that access are re-evaluated\r\n                            detail.clr(handler);\r\n                        });\r\n                        handler[dynamicPropertyDetail] = null;\r\n                    }\r\n                    // The handler may have self removed as part of another handler so re-check\r\n                    if (handler.fn) {\r\n                        try {\r\n                            _useHandler(handler, handler.fn);\r\n                        }\r\n                        catch (e) {\r\n                            // Don't let a single failing watcher cause other watches to fail\r\n                            watcherFailures_1[_DYN_PUSH /* @min:%2epush */](e);\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n            // During notification we may have had additional updates -- so notify those updates as well\r\n            if (_waitingHandlers) {\r\n                try {\r\n                    _notifyWatchers();\r\n                }\r\n                catch (e) {\r\n                    watcherFailures_1[_DYN_PUSH /* @min:%2epush */](e);\r\n                }\r\n            }\r\n            if (watcherFailures_1[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                throwAggregationError(\"Watcher error(s): \", watcherFailures_1);\r\n            }\r\n        }\r\n    }\r\n    function _addWatcher(detail) {\r\n        if (detail && detail.h[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n            if (!_waitingHandlers) {\r\n                _waitingHandlers = [];\r\n            }\r\n            if (!_watcherTimer) {\r\n                _watcherTimer = scheduleTimeout(function () {\r\n                    _watcherTimer = null;\r\n                    _notifyWatchers();\r\n                }, 0);\r\n            }\r\n            // Add all of the handlers for this detail (if not already present) - using normal for-loop for performance\r\n            for (var idx = 0; idx < detail.h[_DYN_LENGTH /* @min:%2elength */]; idx++) {\r\n                var handler = detail.h[idx];\r\n                // Add this handler to the collection of handlers to re-execute\r\n                if (handler && arrIndexOf(_waitingHandlers, handler) === -1) {\r\n                    _waitingHandlers[_DYN_PUSH /* @min:%2epush */](handler);\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function _trackHandler(handler, detail) {\r\n        if (handler) {\r\n            var details = handler[dynamicPropertyDetail] = handler[dynamicPropertyDetail] || [];\r\n            if (arrIndexOf(details, detail) === -1) {\r\n                // If this detail is not already listed as tracked then add it so that we re-evaluate it's usage\r\n                details[_DYN_PUSH /* @min:%2epush */](detail);\r\n            }\r\n        }\r\n    }\r\n    theState = (_a = {\r\n            prop: dynamicPropertySymbol,\r\n            ro: dynamicPropertyReadOnly,\r\n            rf: dynamicPropertyReferenced\r\n        },\r\n        _a[_DYN_BLK_VAL /* @min:blkVal */] = dynamicPropertyBlockValue,\r\n        _a[_DYN_HDLR /* @min:hdlr */] = cfgHandler,\r\n        _a.add = _addWatcher,\r\n        _a[_DYN_NOTIFY /* @min:notify */] = _notifyWatchers,\r\n        _a.use = _useHandler,\r\n        _a.trk = _trackHandler,\r\n        _a);\r\n    return theState;\r\n}\r\n//# sourceMappingURL=DynamicState.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dumpObj, isUndefined, objDefine, objForEachKey } from \"@nevware21/ts-utils\";\r\nimport { createUniqueNamespace } from \"../JavaScriptSDK/DataCacheHelper\";\r\nimport { STR_NOT_DYNAMIC_ERROR } from \"../JavaScriptSDK/InternalConstants\";\r\nimport { _DYN_BLK_VAL, _DYN_LOGGER, _DYN_NOTIFY, _DYN_RD_ONLY, _DYN_SET_DF, _DYN_THROW_INTERNAL, _DYN_WARN_TO_CONSOLE, _DYN_WATCH } from \"../__DynamicConstants\";\r\nimport { _applyDefaultValue } from \"./ConfigDefaults\";\r\nimport { _makeDynamicObject, _setDynamicProperty, _setDynamicPropertyState, _throwDynamicError } from \"./DynamicProperty\";\r\nimport { _createState } from \"./DynamicState\";\r\nimport { CFG_HANDLER_LINK, _cfgDeepCopy, getDynamicConfigHandler, throwInvalidAccess } from \"./DynamicSupport\";\r\n/**\r\n * Identifies a function which will be re-called whenever any of it's accessed configuration values\r\n * change.\r\n * @param configHandler - The callback that will be called for the initial request and then whenever any\r\n * accessed configuration changes are identified.\r\n */\r\nfunction _createAndUseHandler(state, configHandler) {\r\n    var handler = {\r\n        fn: configHandler,\r\n        rm: function () {\r\n            // Clear all references to the handler so it can be garbage collected\r\n            // This will also cause this handler to never get called and eventually removed\r\n            handler.fn = null;\r\n            state = null;\r\n            configHandler = null;\r\n        }\r\n    };\r\n    objDefine(handler, \"toJSON\", { v: function () { return \"WatcherHandler\" + (handler.fn ? \"\" : \"[X]\"); } });\r\n    state.use(handler, configHandler);\r\n    return handler;\r\n}\r\n/**\r\n * Creates the dynamic config handler and associates with the target config as the root object\r\n * @param target - The config that you want to be root of the dynamic config\r\n * @param inPlace - Should the passed config be converted in-place or a new proxy returned\r\n * @returns The existing dynamic handler or a new instance with the provided config values\r\n */\r\nfunction _createDynamicHandler(logger, target, inPlace) {\r\n    var _a;\r\n    var dynamicHandler = getDynamicConfigHandler(target);\r\n    if (dynamicHandler) {\r\n        // The passed config is already dynamic so return it's tracker\r\n        return dynamicHandler;\r\n    }\r\n    var uid = createUniqueNamespace(\"dyncfg\", true);\r\n    var newTarget = (target && inPlace !== false) ? target : _cfgDeepCopy(target);\r\n    var theState;\r\n    function _notifyWatchers() {\r\n        theState[_DYN_NOTIFY /* @min:%2enotify */]();\r\n    }\r\n    function _setValue(target, name, value) {\r\n        try {\r\n            target = _setDynamicProperty(theState, target, name, value);\r\n        }\r\n        catch (e) {\r\n            // Unable to convert to dynamic property so just leave as non-dynamic\r\n            _throwDynamicError(logger, name, \"Setting value\", e);\r\n        }\r\n        return target[name];\r\n    }\r\n    function _watch(configHandler) {\r\n        return _createAndUseHandler(theState, configHandler);\r\n    }\r\n    function _block(configHandler, allowUpdate) {\r\n        theState.use(null, function (details) {\r\n            var prevUpd = theState.upd;\r\n            try {\r\n                if (!isUndefined(allowUpdate)) {\r\n                    theState.upd = allowUpdate;\r\n                }\r\n                configHandler(details);\r\n            }\r\n            finally {\r\n                theState.upd = prevUpd;\r\n            }\r\n        });\r\n    }\r\n    function _ref(target, name) {\r\n        var _a;\r\n        // Make sure it's dynamic and mark as referenced with it's current value\r\n        return _setDynamicPropertyState(theState, target, name, (_a = {}, _a[0 /* _eSetDynamicPropertyFlags.inPlace */] = true, _a))[name];\r\n    }\r\n    function _rdOnly(target, name) {\r\n        var _a;\r\n        // Make sure it's dynamic and mark as readonly with it's current value\r\n        return _setDynamicPropertyState(theState, target, name, (_a = {}, _a[1 /* _eSetDynamicPropertyFlags.readOnly */] = true, _a))[name];\r\n    }\r\n    function _blkPropValue(target, name) {\r\n        var _a;\r\n        // Make sure it's dynamic and mark as readonly with it's current value\r\n        return _setDynamicPropertyState(theState, target, name, (_a = {}, _a[2 /* _eSetDynamicPropertyFlags.blockDynamicProperty */] = true, _a))[name];\r\n    }\r\n    function _applyDefaults(theConfig, defaultValues) {\r\n        if (defaultValues) {\r\n            // Resolve/apply the defaults\r\n            objForEachKey(defaultValues, function (name, value) {\r\n                // Sets the value and makes it dynamic (if it doesn't already exist)\r\n                _applyDefaultValue(cfgHandler, theConfig, name, value);\r\n            });\r\n        }\r\n        return theConfig;\r\n    }\r\n    var cfgHandler = (_a = {\r\n            uid: null,\r\n            cfg: newTarget\r\n        },\r\n        _a[_DYN_LOGGER /* @min:logger */] = logger,\r\n        _a[_DYN_NOTIFY /* @min:notify */] = _notifyWatchers,\r\n        _a.set = _setValue,\r\n        _a[_DYN_SET_DF /* @min:setDf */] = _applyDefaults,\r\n        _a[_DYN_WATCH /* @min:watch */] = _watch,\r\n        _a.ref = _ref,\r\n        _a[_DYN_RD_ONLY /* @min:rdOnly */] = _rdOnly,\r\n        _a[_DYN_BLK_VAL /* @min:blkVal */] = _blkPropValue,\r\n        _a._block = _block,\r\n        _a);\r\n    objDefine(cfgHandler, \"uid\", {\r\n        c: false,\r\n        e: false,\r\n        w: false,\r\n        v: uid\r\n    });\r\n    theState = _createState(cfgHandler);\r\n    // Setup tracking for all defined default keys\r\n    _makeDynamicObject(theState, newTarget, \"config\", \"Creating\");\r\n    return cfgHandler;\r\n}\r\n/**\r\n * Log an invalid access message to the console\r\n * @param message\r\n */\r\nfunction _logInvalidAccess(logger, message) {\r\n    if (logger) {\r\n        logger[_DYN_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](message);\r\n        logger[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */](2 /* eLoggingSeverity.WARNING */, 108 /* _eInternalMessageId.DynamicConfigException */, message);\r\n    }\r\n    else {\r\n        // We don't have a logger so just throw an exception\r\n        throwInvalidAccess(message);\r\n    }\r\n}\r\n/**\r\n * Create or return a dynamic version of the passed config, if it is not already dynamic\r\n * @param config - The config to be converted into a dynamic config\r\n * @param defaultConfig - The default values to apply on the config if the properties don't already exist\r\n * @param inPlace - Should the config be converted in-place into a dynamic config or a new instance returned, defaults to true\r\n * @returns The dynamic config handler for the config (whether new or existing)\r\n */\r\nexport function createDynamicConfig(config, defaultConfig, logger, inPlace) {\r\n    var dynamicHandler = _createDynamicHandler(logger, config || {}, inPlace);\r\n    if (defaultConfig) {\r\n        dynamicHandler[_DYN_SET_DF /* @min:%2esetDf */](dynamicHandler.cfg, defaultConfig);\r\n    }\r\n    return dynamicHandler;\r\n}\r\n/**\r\n * Watch and track changes for accesses to the current config, the provided config MUST already be\r\n * a dynamic config or a child accessed via the dynamic config\r\n * @param config\r\n * @param configHandler\r\n * @param logger - The logger instance to use if there is no existing handler\r\n * @returns A watcher handler instance that can be used to remove itself when being unloaded\r\n * @throws TypeError if the provided config is not a dynamic config instance\r\n */\r\nexport function onConfigChange(config, configHandler, logger) {\r\n    var handler = config[CFG_HANDLER_LINK] || config;\r\n    if (handler.cfg && (handler.cfg === config || handler.cfg[CFG_HANDLER_LINK] === handler)) {\r\n        return handler[_DYN_WATCH /* @min:%2ewatch */](configHandler);\r\n    }\r\n    _logInvalidAccess(logger, STR_NOT_DYNAMIC_ERROR + dumpObj(config));\r\n    return createDynamicConfig(config, null, logger)[_DYN_WATCH /* @min:%2ewatch */](configHandler);\r\n}\r\n//# sourceMappingURL=DynamicConfig.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getInst } from \"@nevware21/ts-utils\";\r\nimport { _DYN_APPLY, _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_EVENTS_SENT, STR_PERF_EVENT } from \"./InternalConstants\";\r\nvar listenerFuncs = [STR_EVENTS_SENT, STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_PERF_EVENT];\r\nvar _aiNamespace = null;\r\nvar _debugListener;\r\nfunction _listenerProxyFunc(name, config) {\r\n    return function () {\r\n        var args = arguments;\r\n        var dbgExt = getDebugExt(config);\r\n        if (dbgExt) {\r\n            var listener = dbgExt.listener;\r\n            if (listener && listener[name]) {\r\n                listener[name][_DYN_APPLY /* @min:%2eapply */](listener, args);\r\n            }\r\n        }\r\n    };\r\n}\r\nfunction _getExtensionNamespace() {\r\n    // Cache the lookup of the global namespace object\r\n    var target = getInst(\"Microsoft\");\r\n    if (target) {\r\n        _aiNamespace = target[\"ApplicationInsights\"];\r\n    }\r\n    return _aiNamespace;\r\n}\r\nexport function getDebugExt(config) {\r\n    var ns = _aiNamespace;\r\n    if (!ns && config.disableDbgExt !== true) {\r\n        ns = _aiNamespace || _getExtensionNamespace();\r\n    }\r\n    return ns ? ns[\"ChromeDbgExt\"] : null;\r\n}\r\nexport function getDebugListener(config) {\r\n    if (!_debugListener) {\r\n        _debugListener = {};\r\n        for (var lp = 0; lp < listenerFuncs[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n            _debugListener[listenerFuncs[lp]] = _listenerProxyFunc(listenerFuncs[lp], config);\r\n        }\r\n    }\r\n    return _debugListener;\r\n}\r\n//# sourceMappingURL=DbgExtensionUtils.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nvar _a;\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dumpObj, isFunction, isUndefined } from \"@nevware21/ts-utils\";\r\nimport { createDynamicConfig, onConfigChange } from \"../Config/DynamicConfig\";\r\nimport { _DYN_DIAG_LOG, _DYN_LOGGER, _DYN_LOGGING_LEVEL_CONSOL4, _DYN_LOG_INTERNAL_MESSAGE, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_PUSH, _DYN_REPLACE, _DYN_THROW_INTERNAL, _DYN_UNLOAD, _DYN_WARN_TO_CONSOLE } from \"../__DynamicConstants\";\r\nimport { getDebugExt } from \"./DbgExtensionUtils\";\r\nimport { getConsole, getJSON, hasJSON } from \"./EnvUtils\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nvar STR_WARN_TO_CONSOLE = \"warnToConsole\";\r\n/**\r\n * For user non actionable traces use AI Internal prefix.\r\n */\r\nvar AiNonUserActionablePrefix = \"AI (Internal): \";\r\n/**\r\n * Prefix of the traces in portal.\r\n */\r\nvar AiUserActionablePrefix = \"AI: \";\r\n/**\r\n *  Session storage key for the prefix for the key indicating message type already logged\r\n */\r\nvar AIInternalMessagePrefix = \"AITR_\";\r\nvar defaultValues = {\r\n    loggingLevelConsole: 0,\r\n    loggingLevelTelemetry: 1,\r\n    maxMessageLimit: 25,\r\n    enableDebug: false\r\n};\r\nvar _logFuncs = (_a = {},\r\n    _a[0 /* eLoggingSeverity.DISABLED */] = null,\r\n    _a[1 /* eLoggingSeverity.CRITICAL */] = \"errorToConsole\",\r\n    _a[2 /* eLoggingSeverity.WARNING */] = STR_WARN_TO_CONSOLE,\r\n    _a[3 /* eLoggingSeverity.DEBUG */] = \"debugToConsole\",\r\n    _a);\r\nfunction _sanitizeDiagnosticText(text) {\r\n    if (text) {\r\n        return \"\\\"\" + text[_DYN_REPLACE /* @min:%2ereplace */](/\\\"/g, STR_EMPTY) + \"\\\"\";\r\n    }\r\n    return STR_EMPTY;\r\n}\r\nfunction _logToConsole(func, message) {\r\n    var theConsole = getConsole();\r\n    if (!!theConsole) {\r\n        var logFunc = \"log\";\r\n        if (theConsole[func]) {\r\n            logFunc = func;\r\n        }\r\n        if (isFunction(theConsole[logFunc])) {\r\n            theConsole[logFunc](message);\r\n        }\r\n    }\r\n}\r\nvar _InternalLogMessage = /** @class */ (function () {\r\n    function _InternalLogMessage(msgId, msg, isUserAct, properties) {\r\n        if (isUserAct === void 0) { isUserAct = false; }\r\n        var _self = this;\r\n        _self[_DYN_MESSAGE_ID /* @min:%2emessageId */] = msgId;\r\n        _self[_DYN_MESSAGE /* @min:%2emessage */] =\r\n            (isUserAct ? AiUserActionablePrefix : AiNonUserActionablePrefix) +\r\n                msgId;\r\n        var strProps = STR_EMPTY;\r\n        if (hasJSON()) {\r\n            strProps = getJSON().stringify(properties);\r\n        }\r\n        var diagnosticText = (msg ? \" message:\" + _sanitizeDiagnosticText(msg) : STR_EMPTY) +\r\n            (properties ? \" props:\" + _sanitizeDiagnosticText(strProps) : STR_EMPTY);\r\n        _self[_DYN_MESSAGE /* @min:%2emessage */] += diagnosticText;\r\n    }\r\n    _InternalLogMessage.dataType = \"MessageData\";\r\n    return _InternalLogMessage;\r\n}());\r\nexport { _InternalLogMessage };\r\nexport function safeGetLogger(core, config) {\r\n    return (core || {})[_DYN_LOGGER /* @min:%2elogger */] || new DiagnosticLogger(config);\r\n}\r\nvar DiagnosticLogger = /** @class */ (function () {\r\n    function DiagnosticLogger(config) {\r\n        this.identifier = \"DiagnosticLogger\";\r\n        /**\r\n         * The internal logging queue\r\n         */\r\n        this.queue = [];\r\n        /**\r\n         * Count of internal messages sent\r\n         */\r\n        var _messageCount = 0;\r\n        /**\r\n         * Holds information about what message types were already logged to console or sent to server.\r\n         */\r\n        var _messageLogged = {};\r\n        var _loggingLevelConsole;\r\n        var _loggingLevelTelemetry;\r\n        var _maxInternalMessageLimit;\r\n        var _enableDebug;\r\n        var _unloadHandler;\r\n        dynamicProto(DiagnosticLogger, this, function (_self) {\r\n            _unloadHandler = _setDefaultsFromConfig(config || {});\r\n            _self.consoleLoggingLevel = function () { return _loggingLevelConsole; };\r\n            /**\r\n             * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n             * @param severity - {LoggingSeverity} - The severity of the log message\r\n             * @param message - {_InternalLogMessage} - The log message.\r\n             */\r\n            _self[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */] = function (severity, msgId, msg, properties, isUserAct) {\r\n                if (isUserAct === void 0) { isUserAct = false; }\r\n                var message = new _InternalLogMessage(msgId, msg, isUserAct, properties);\r\n                if (_enableDebug) {\r\n                    throw dumpObj(message);\r\n                }\r\n                else {\r\n                    // Get the logging function and fallback to warnToConsole of for some reason errorToConsole doesn't exist\r\n                    var logFunc = _logFuncs[severity] || STR_WARN_TO_CONSOLE;\r\n                    if (!isUndefined(message[_DYN_MESSAGE /* @min:%2emessage */])) {\r\n                        if (isUserAct) {\r\n                            // check if this message type was already logged to console for this page view and if so, don't log it again\r\n                            var messageKey = +message[_DYN_MESSAGE_ID /* @min:%2emessageId */];\r\n                            if (!_messageLogged[messageKey] && _loggingLevelConsole >= severity) {\r\n                                _self[logFunc](message[_DYN_MESSAGE /* @min:%2emessage */]);\r\n                                _messageLogged[messageKey] = true;\r\n                            }\r\n                        }\r\n                        else {\r\n                            // Only log traces if the console Logging Level is >= the throwInternal severity level\r\n                            if (_loggingLevelConsole >= severity) {\r\n                                _self[logFunc](message[_DYN_MESSAGE /* @min:%2emessage */]);\r\n                            }\r\n                        }\r\n                        _logInternalMessage(severity, message);\r\n                    }\r\n                    else {\r\n                        _debugExtMsg(\"throw\" + (severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"Critical\" : \"Warning\"), message);\r\n                    }\r\n                }\r\n            };\r\n            _self.debugToConsole = function (message) {\r\n                _logToConsole(\"debug\", message);\r\n                _debugExtMsg(\"warning\", message);\r\n            };\r\n            _self[_DYN_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */] = function (message) {\r\n                _logToConsole(\"warn\", message);\r\n                _debugExtMsg(\"warning\", message);\r\n            };\r\n            _self.errorToConsole = function (message) {\r\n                _logToConsole(\"error\", message);\r\n                _debugExtMsg(\"error\", message);\r\n            };\r\n            _self.resetInternalMessageCount = function () {\r\n                _messageCount = 0;\r\n                _messageLogged = {};\r\n            };\r\n            _self[_DYN_LOG_INTERNAL_MESSAGE /* @min:%2elogInternalMessage */] = _logInternalMessage;\r\n            _self[_DYN_UNLOAD /* @min:%2eunload */] = function (isAsync) {\r\n                _unloadHandler && _unloadHandler.rm();\r\n                _unloadHandler = null;\r\n            };\r\n            function _logInternalMessage(severity, message) {\r\n                if (_areInternalMessagesThrottled()) {\r\n                    return;\r\n                }\r\n                // check if this message type was already logged for this session and if so, don't log it again\r\n                var logMessage = true;\r\n                var messageKey = AIInternalMessagePrefix + message[_DYN_MESSAGE_ID /* @min:%2emessageId */];\r\n                // if the session storage is not available, limit to only one message type per page view\r\n                if (_messageLogged[messageKey]) {\r\n                    logMessage = false;\r\n                }\r\n                else {\r\n                    _messageLogged[messageKey] = true;\r\n                }\r\n                if (logMessage) {\r\n                    // Push the event in the internal queue\r\n                    if (severity <= _loggingLevelTelemetry) {\r\n                        _self.queue[_DYN_PUSH /* @min:%2epush */](message);\r\n                        _messageCount++;\r\n                        _debugExtMsg((severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"error\" : \"warn\"), message);\r\n                    }\r\n                    // When throttle limit reached, send a special event\r\n                    if (_messageCount === _maxInternalMessageLimit) {\r\n                        var throttleLimitMessage = \"Internal events throttle limit per PageView reached for this app.\";\r\n                        var throttleMessage = new _InternalLogMessage(23 /* _eInternalMessageId.MessageLimitPerPVExceeded */, throttleLimitMessage, false);\r\n                        _self.queue[_DYN_PUSH /* @min:%2epush */](throttleMessage);\r\n                        if (severity === 1 /* eLoggingSeverity.CRITICAL */) {\r\n                            _self.errorToConsole(throttleLimitMessage);\r\n                        }\r\n                        else {\r\n                            _self[_DYN_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](throttleLimitMessage);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            function _setDefaultsFromConfig(config) {\r\n                // make sure the config is dynamic\r\n                return onConfigChange(createDynamicConfig(config, defaultValues, _self).cfg, function (details) {\r\n                    var config = details.cfg;\r\n                    _loggingLevelConsole = config[_DYN_LOGGING_LEVEL_CONSOL4 /* @min:%2eloggingLevelConsole */];\r\n                    _loggingLevelTelemetry = config.loggingLevelTelemetry;\r\n                    _maxInternalMessageLimit = config.maxMessageLimit;\r\n                    _enableDebug = config.enableDebug;\r\n                });\r\n            }\r\n            function _areInternalMessagesThrottled() {\r\n                return _messageCount >= _maxInternalMessageLimit;\r\n            }\r\n            function _debugExtMsg(name, data) {\r\n                var dbgExt = getDebugExt(config || {});\r\n                if (dbgExt && dbgExt[_DYN_DIAG_LOG /* @min:%2ediagLog */]) {\r\n                    dbgExt[_DYN_DIAG_LOG /* @min:%2ediagLog */](name, data);\r\n                }\r\n            }\r\n        });\r\n    }\r\n// Removed Stub for DiagnosticLogger.prototype.consoleLoggingLevel.\r\n// Removed Stub for DiagnosticLogger.prototype.throwInternal.\r\n// Removed Stub for DiagnosticLogger.prototype.debugToConsole.\r\n// Removed Stub for DiagnosticLogger.prototype.warnToConsole.\r\n// Removed Stub for DiagnosticLogger.prototype.errorToConsole.\r\n// Removed Stub for DiagnosticLogger.prototype.resetInternalMessageCount.\r\n// Removed Stub for DiagnosticLogger.prototype.logInternalMessage.\r\n// Removed Stub for DiagnosticLogger.prototype.unload.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    DiagnosticLogger.__ieDyn=1;\n\n    return DiagnosticLogger;\r\n}());\r\nexport { DiagnosticLogger };\r\nfunction _getLogger(logger) {\r\n    return (logger || new DiagnosticLogger());\r\n}\r\n/**\r\n * This is a helper method which will call throwInternal on the passed logger, will throw exceptions in\r\n * debug mode or attempt to log the error as a console warning. This helper is provided mostly to better\r\n * support minification as logger.throwInternal() will not compress the publish \"throwInternal\" used throughout\r\n * the code.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity - {LoggingSeverity} - The severity of the log message\r\n * @param message - {_InternalLogMessage} - The log message.\r\n */\r\nexport function _throwInternal(logger, severity, msgId, msg, properties, isUserAct) {\r\n    if (isUserAct === void 0) { isUserAct = false; }\r\n    _getLogger(logger)[_DYN_THROW_INTERNAL /* @min:%2ethrowInternal */](severity, msgId, msg, properties, isUserAct);\r\n}\r\n/**\r\n * This is a helper method which will call warnToConsole on the passed logger with the provided message.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param message - {_InternalLogMessage} - The log message.\r\n */\r\nexport function _warnToConsole(logger, message) {\r\n    _getLogger(logger)[_DYN_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](message);\r\n}\r\n/**\r\n * Logs a message to the internal queue.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity - {LoggingSeverity} - The severity of the log message\r\n * @param message - {_InternalLogMessage} - The message to log.\r\n */\r\nexport function _logInternalMessage(logger, severity, message) {\r\n    _getLogger(logger)[_DYN_LOG_INTERNAL_MESSAGE /* @min:%2elogInternalMessage */](severity, message);\r\n}\r\n//# sourceMappingURL=DiagnosticLogger.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createEnum, createTypeMap } from \"@nevware21/ts-utils\";\r\n/**\r\n * Create an enum style object which has both the key => value and value => key mappings\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport var createEnumStyle = createEnum;\r\n/**\r\n * Create a 2 index map that maps an enum's key and value to the defined map value, X[\"key\"] => mapValue and X[0] => mapValue.\r\n * Generic values\r\n * - E = the const enum type (typeof eRequestHeaders);\r\n * - V = Identifies the valid values for the keys, this should include both the enum numeric and string key of the type. The\r\n * resulting \"Value\" of each entry identifies the valid values withing the assignments.\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport var createValueMap = createTypeMap;\r\n//# sourceMappingURL=EnumHelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\nexport var StorageType = createEnumStyle({\r\n    LocalStorage: 0 /* eStorageType.LocalStorage */,\r\n    SessionStorage: 1 /* eStorageType.SessionStorage */\r\n});\r\nexport var DistributedTracingModes = createEnumStyle({\r\n    AI: 0 /* eDistributedTracingModes.AI */,\r\n    AI_AND_W3C: 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n    W3C: 2 /* eDistributedTracingModes.W3C */\r\n});\r\n/**\r\n * The EventPersistence contains a set of values that specify the event's persistence.\r\n */\r\nexport var EventPersistence = createEnumStyle({\r\n    /**\r\n     * Normal persistence.\r\n     */\r\n    Normal: 1 /* EventPersistenceValue.Normal */,\r\n    /**\r\n     * Critical persistence.\r\n     */\r\n    Critical: 2 /* EventPersistenceValue.Critical */\r\n});\r\n//# sourceMappingURL=Enums.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_SPLIT = \"split\"; // Count: 6\r\nexport var _DYN_LENGTH = \"length\"; // Count: 41\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 6\r\nexport var _DYN_INGESTIONENDPOINT = \"ingestionendpoint\"; // Count: 6\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 9\r\nexport var _DYN_PUSH = \"push\"; // Count: 5\r\nexport var _DYN_REMOVE_ITEM = \"removeItem\"; // Count: 3\r\nexport var _DYN_NAME = \"name\"; // Count: 11\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 10\r\nexport var _DYN_COUNT = \"count\"; // Count: 8\r\nexport var _DYN_PRE_TRIGGER_DATE = \"preTriggerDate\"; // Count: 4\r\nexport var _DYN_DISABLED = \"disabled\"; // Count: 3\r\nexport var _DYN_INTERVAL = \"interval\"; // Count: 3\r\nexport var _DYN_DAYS_OF_MONTH = \"daysOfMonth\"; // Count: 3\r\nexport var _DYN_DATE = \"date\"; // Count: 5\r\nexport var _DYN_GET_UTCDATE = \"getUTCDate\"; // Count: 3\r\nexport var _DYN_STRINGIFY = \"stringify\"; // Count: 4\r\nexport var _DYN_PATHNAME = \"pathname\"; // Count: 4\r\nexport var _DYN_CORRELATION_HEADER_E0 = \"correlationHeaderExcludePatterns\"; // Count: 2\r\nexport var _DYN_EXTENSION_CONFIG = \"extensionConfig\"; // Count: 4\r\nexport var _DYN_EXCEPTIONS = \"exceptions\"; // Count: 6\r\nexport var _DYN_PARSED_STACK = \"parsedStack\"; // Count: 13\r\nexport var _DYN_PROPERTIES = \"properties\"; // Count: 9\r\nexport var _DYN_MEASUREMENTS = \"measurements\"; // Count: 9\r\nexport var _DYN_SIZE_IN_BYTES = \"sizeInBytes\"; // Count: 11\r\nexport var _DYN_TYPE_NAME = \"typeName\"; // Count: 11\r\nexport var _DYN_SEVERITY_LEVEL = \"severityLevel\"; // Count: 5\r\nexport var _DYN_PROBLEM_GROUP = \"problemGroup\"; // Count: 3\r\nexport var _DYN_IS_MANUAL = \"isManual\"; // Count: 3\r\nexport var _DYN__CREATE_FROM_INTERFA1 = \"CreateFromInterface\"; // Count: 2\r\nexport var _DYN_ASSEMBLY = \"assembly\"; // Count: 7\r\nexport var _DYN_FILE_NAME = \"fileName\"; // Count: 8\r\nexport var _DYN_HAS_FULL_STACK = \"hasFullStack\"; // Count: 6\r\nexport var _DYN_LEVEL = \"level\"; // Count: 5\r\nexport var _DYN_METHOD = \"method\"; // Count: 7\r\nexport var _DYN_LINE = \"line\"; // Count: 6\r\nexport var _DYN_DURATION = \"duration\"; // Count: 4\r\nexport var _DYN_RECEIVED_RESPONSE = \"receivedResponse\"; // Count: 2\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _throwInternal, dumpObj, getExceptionName, getGlobal, getGlobalInst, isNullOrUndefined, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { StorageType } from \"./Enums\";\r\nimport { _DYN_PUSH, _DYN_REMOVE_ITEM, _DYN_TO_STRING } from \"./__DynamicConstants\";\r\nvar _canUseLocalStorage = undefined;\r\nvar _canUseSessionStorage = undefined;\r\nvar _storagePrefix = \"\";\r\n/**\r\n * Gets the localStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getLocalStorageObject() {\r\n    if (utlCanUseLocalStorage()) {\r\n        return _getVerifiedStorageObject(StorageType.LocalStorage);\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Tests storage object (localStorage or sessionStorage) to verify that it is usable\r\n * More details here: https://mathiasbynens.be/notes/localstorage-pattern\r\n * @param storageType - Type of storage\r\n * @return {Storage} Returns storage object verified that it is usable\r\n */\r\nfunction _getVerifiedStorageObject(storageType) {\r\n    try {\r\n        if (isNullOrUndefined(getGlobal())) {\r\n            return null;\r\n        }\r\n        var uid = (new Date)[_DYN_TO_STRING /* @min:%2etoString */]();\r\n        var storage = getGlobalInst(storageType === StorageType.LocalStorage ? \"localStorage\" : \"sessionStorage\");\r\n        var name_1 = _storagePrefix + uid;\r\n        storage.setItem(name_1, uid);\r\n        var fail = storage.getItem(name_1) !== uid;\r\n        storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name_1);\r\n        if (!fail) {\r\n            return storage;\r\n        }\r\n    }\r\n    catch (exception) {\r\n        // eslint-disable-next-line no-empty\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Gets the sessionStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getSessionStorageObject() {\r\n    if (utlCanUseSessionStorage()) {\r\n        return _getVerifiedStorageObject(StorageType.SessionStorage);\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Disables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlDisableStorage() {\r\n    _canUseLocalStorage = false;\r\n    _canUseSessionStorage = false;\r\n}\r\nexport function utlSetStoragePrefix(storagePrefix) {\r\n    _storagePrefix = storagePrefix || \"\";\r\n}\r\n/**\r\n * Re-enables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlEnableStorage() {\r\n    _canUseLocalStorage = utlCanUseLocalStorage(true);\r\n    _canUseSessionStorage = utlCanUseSessionStorage(true);\r\n}\r\n/**\r\n * Returns whether LocalStorage can be used, if the reset parameter is passed a true this will override\r\n * any previous disable calls.\r\n * @param reset - Should the usage be reset and determined only based on whether LocalStorage is available\r\n */\r\nexport function utlCanUseLocalStorage(reset) {\r\n    if (reset || _canUseLocalStorage === undefined) {\r\n        _canUseLocalStorage = !!_getVerifiedStorageObject(StorageType.LocalStorage);\r\n    }\r\n    return _canUseLocalStorage;\r\n}\r\nexport function utlGetLocalStorage(logger, name) {\r\n    var storage = _getLocalStorageObject();\r\n    if (storage !== null) {\r\n        try {\r\n            return storage.getItem(name);\r\n        }\r\n        catch (e) {\r\n            _canUseLocalStorage = false;\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 1 /* _eInternalMessageId.BrowserCannotReadLocalStorage */, \"Browser failed read of local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n        }\r\n    }\r\n    return null;\r\n}\r\nexport function utlSetLocalStorage(logger, name, data) {\r\n    var storage = _getLocalStorageObject();\r\n    if (storage !== null) {\r\n        try {\r\n            storage.setItem(name, data);\r\n            return true;\r\n        }\r\n        catch (e) {\r\n            _canUseLocalStorage = false;\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 3 /* _eInternalMessageId.BrowserCannotWriteLocalStorage */, \"Browser failed write to local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n        }\r\n    }\r\n    return false;\r\n}\r\nexport function utlRemoveStorage(logger, name) {\r\n    var storage = _getLocalStorageObject();\r\n    if (storage !== null) {\r\n        try {\r\n            storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name);\r\n            return true;\r\n        }\r\n        catch (e) {\r\n            _canUseLocalStorage = false;\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 5 /* _eInternalMessageId.BrowserFailedRemovalFromLocalStorage */, \"Browser failed removal of local storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n        }\r\n    }\r\n    return false;\r\n}\r\nexport function utlCanUseSessionStorage(reset) {\r\n    if (reset || _canUseSessionStorage === undefined) {\r\n        _canUseSessionStorage = !!_getVerifiedStorageObject(StorageType.SessionStorage);\r\n    }\r\n    return _canUseSessionStorage;\r\n}\r\nexport function utlGetSessionStorageKeys() {\r\n    var keys = [];\r\n    if (utlCanUseSessionStorage()) {\r\n        objForEachKey(getGlobalInst(\"sessionStorage\"), function (key) {\r\n            keys[_DYN_PUSH /* @min:%2epush */](key);\r\n        });\r\n    }\r\n    return keys;\r\n}\r\nexport function utlGetSessionStorage(logger, name) {\r\n    var storage = _getSessionStorageObject();\r\n    if (storage !== null) {\r\n        try {\r\n            return storage.getItem(name);\r\n        }\r\n        catch (e) {\r\n            _canUseSessionStorage = false;\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 2 /* _eInternalMessageId.BrowserCannotReadSessionStorage */, \"Browser failed read of session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n        }\r\n    }\r\n    return null;\r\n}\r\nexport function utlSetSessionStorage(logger, name, data) {\r\n    var storage = _getSessionStorageObject();\r\n    if (storage !== null) {\r\n        try {\r\n            storage.setItem(name, data);\r\n            return true;\r\n        }\r\n        catch (e) {\r\n            _canUseSessionStorage = false;\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 4 /* _eInternalMessageId.BrowserCannotWriteSessionStorage */, \"Browser failed write to session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n        }\r\n    }\r\n    return false;\r\n}\r\nexport function utlRemoveSessionStorage(logger, name) {\r\n    var storage = _getSessionStorageObject();\r\n    if (storage !== null) {\r\n        try {\r\n            storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name);\r\n            return true;\r\n        }\r\n        catch (e) {\r\n            _canUseSessionStorage = false;\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 6 /* _eInternalMessageId.BrowserFailedRemovalFromSessionStorage */, \"Browser failed removal of session storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n        }\r\n    }\r\n    return false;\r\n}\r\n//# sourceMappingURL=StorageHelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n// Licensed under the\r\nexport { correlationIdSetPrefix, correlationIdGetPrefix, correlationIdCanIncludeCorrelationHeader, correlationIdGetCorrelationContext, correlationIdGetCorrelationContextValue, dateTimeUtilsNow, dateTimeUtilsDuration, isInternalApplicationInsightsEndpoint, createDistributedTraceContextFromTrace } from \"./Util\";\r\nexport { ThrottleMgr } from \"./ThrottleMgr\";\r\nexport { parseConnectionString, ConnectionStringParser } from \"./ConnectionStringParser\";\r\nexport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nexport { DisabledPropertyName, ProcessLegacy, SampleRate, HttpMethod, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, strNotSpecified } from \"./Constants\";\r\nexport { Envelope } from \"./Telemetry/Common/Envelope\";\r\nexport { Event } from \"./Telemetry/Event\";\r\nexport { Exception } from \"./Telemetry/Exception\";\r\nexport { Metric } from \"./Telemetry/Metric\";\r\nexport { PageView } from \"./Telemetry/PageView\";\r\nexport { RemoteDependencyData } from \"./Telemetry/RemoteDependencyData\";\r\nexport { Trace } from \"./Telemetry/Trace\";\r\nexport { PageViewPerformance } from \"./Telemetry/PageViewPerformance\";\r\nexport { Data } from \"./Telemetry/Common/Data\";\r\nexport { SeverityLevel } from \"./Interfaces/Contracts/SeverityLevel\";\r\nexport { ConfigurationManager } from \"./Interfaces/IConfig\";\r\nexport { ContextTagKeys } from \"./Interfaces/Contracts/ContextTagKeys\";\r\nexport { dataSanitizeKeyAndAddUniqueness, dataSanitizeKey, dataSanitizeString, dataSanitizeUrl, dataSanitizeMessage, dataSanitizeException, dataSanitizeProperties, dataSanitizeMeasurements, dataSanitizeId, dataSanitizeInput, dsPadNumber } from \"./Telemetry/Common/DataSanitizer\";\r\nexport { TelemetryItemCreator, createTelemetryItem } from \"./TelemetryItemCreator\";\r\nexport { CtxTagKeys, Extensions } from \"./Interfaces/PartAExtensions\";\r\nexport { DistributedTracingModes, EventPersistence } from \"./Enums\";\r\nexport { stringToBoolOrDefault, msToTimeSpan, getExtensionByName, isCrossOriginError } from \"./HelperFuncs\";\r\nexport { isBeaconsSupported as isBeaconApiSupported, createTraceParent, parseTraceParent, isValidTraceId, isValidSpanId, isValidTraceParent, isSampledFlag, formatTraceParent, findW3cTraceParent, findAllScripts } from \"@microsoft/applicationinsights-core-js\";\r\nexport { createDomEvent } from \"./DomHelperFuncs\";\r\nexport { utlDisableStorage, utlEnableStorage, utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage, utlRemoveStorage, utlCanUseSessionStorage, utlGetSessionStorageKeys, utlGetSessionStorage, utlSetSessionStorage, utlRemoveSessionStorage, utlSetStoragePrefix } from \"./StorageHelperFuncs\";\r\nexport { urlParseUrl, urlGetAbsoluteUrl, urlGetPathName, urlGetCompleteUrl, urlParseHost, urlParseFullHost } from \"./UrlHelperFuncs\";\r\nexport { createOfflineListener } from \"./Offline\";\r\nexport var PropertiesPluginIdentifier = \"AppInsightsPropertiesPlugin\";\r\nexport var BreezeChannelIdentifier = \"AppInsightsChannelPlugin\";\r\nexport var AnalyticsPluginIdentifier = \"ApplicationInsightsAnalytics\";\r\n//# sourceMappingURL=applicationinsights-common.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n/**\r\n * This is an internal property used to cause internal (reporting) requests to be ignored from reporting\r\n * additional telemetry, to handle polyfil implementations ALL urls used with a disabled request will\r\n * also be ignored for future requests even when this property is not provided.\r\n * Tagging as Ignore as this is an internal value and is not expected to be used outside of the SDK\r\n * @ignore\r\n */\r\nexport var DisabledPropertyName = \"Microsoft_ApplicationInsights_BypassAjaxInstrumentation\";\r\nexport var SampleRate = \"sampleRate\";\r\nexport var ProcessLegacy = \"ProcessLegacy\";\r\nexport var HttpMethod = \"http.method\";\r\nexport var DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\r\nexport var DEFAULT_BREEZE_PATH = \"/v2/track\";\r\nexport var strNotSpecified = \"not_specified\";\r\nexport var strIkey = \"iKey\";\r\n//# sourceMappingURL=Constants.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _throwInternal, getJSON, hasJSON, isObject, objForEachKey, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { asString, strSubstr, strSubstring } from \"@nevware21/ts-utils\";\r\nimport { _DYN_LENGTH, _DYN_STRINGIFY, _DYN_TO_STRING } from \"../../__DynamicConstants\";\r\nexport function dataSanitizeKeyAndAddUniqueness(logger, key, map) {\r\n    var origLength = key[_DYN_LENGTH /* @min:%2elength */];\r\n    var field = dataSanitizeKey(logger, key);\r\n    // validation truncated the length.  We need to add uniqueness\r\n    if (field[_DYN_LENGTH /* @min:%2elength */] !== origLength) {\r\n        var i = 0;\r\n        var uniqueField = field;\r\n        while (map[uniqueField] !== undefined) {\r\n            i++;\r\n            uniqueField = strSubstring(field, 0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ - 3) + dsPadNumber(i);\r\n        }\r\n        field = uniqueField;\r\n    }\r\n    return field;\r\n}\r\nexport function dataSanitizeKey(logger, name) {\r\n    var nameTrunc;\r\n    if (name) {\r\n        // Remove any leading or trailing whitespace\r\n        name = strTrim(asString(name));\r\n        // truncate the string to 150 chars\r\n        if (name[_DYN_LENGTH /* @min:%2elength */] > 150 /* DataSanitizerValues.MAX_NAME_LENGTH */) {\r\n            nameTrunc = strSubstring(name, 0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */);\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 57 /* _eInternalMessageId.NameTooLong */, \"name is too long.  It has been truncated to \" + 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ + \" characters.\", { name: name }, true);\r\n        }\r\n    }\r\n    return nameTrunc || name;\r\n}\r\nexport function dataSanitizeString(logger, value, maxLength) {\r\n    if (maxLength === void 0) { maxLength = 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; }\r\n    var valueTrunc;\r\n    if (value) {\r\n        maxLength = maxLength ? maxLength : 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; // in case default parameters dont work\r\n        value = strTrim(asString(value));\r\n        if (value[_DYN_LENGTH /* @min:%2elength */] > maxLength) {\r\n            valueTrunc = strSubstring(value, 0, maxLength);\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 61 /* _eInternalMessageId.StringValueTooLong */, \"string value is too long. It has been truncated to \" + maxLength + \" characters.\", { value: value }, true);\r\n        }\r\n    }\r\n    return valueTrunc || value;\r\n}\r\nexport function dataSanitizeUrl(logger, url) {\r\n    return dataSanitizeInput(logger, url, 2048 /* DataSanitizerValues.MAX_URL_LENGTH */, 66 /* _eInternalMessageId.UrlTooLong */);\r\n}\r\nexport function dataSanitizeMessage(logger, message) {\r\n    var messageTrunc;\r\n    if (message) {\r\n        if (message[_DYN_LENGTH /* @min:%2elength */] > 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */) {\r\n            messageTrunc = strSubstring(message, 0, 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */);\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 56 /* _eInternalMessageId.MessageTruncated */, \"message is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */ + \" characters.\", { message: message }, true);\r\n        }\r\n    }\r\n    return messageTrunc || message;\r\n}\r\nexport function dataSanitizeException(logger, exception) {\r\n    var exceptionTrunc;\r\n    if (exception) {\r\n        // Make surte its a string\r\n        var value = \"\" + exception;\r\n        if (value[_DYN_LENGTH /* @min:%2elength */] > 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */) {\r\n            exceptionTrunc = strSubstring(value, 0, 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */);\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 52 /* _eInternalMessageId.ExceptionTruncated */, \"exception is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */ + \" characters.\", { exception: exception }, true);\r\n        }\r\n    }\r\n    return exceptionTrunc || exception;\r\n}\r\nexport function dataSanitizeProperties(logger, properties) {\r\n    if (properties) {\r\n        var tempProps_1 = {};\r\n        objForEachKey(properties, function (prop, value) {\r\n            if (isObject(value) && hasJSON()) {\r\n                // Stringify any part C properties\r\n                try {\r\n                    value = getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"custom property is not valid\", { exception: e }, true);\r\n                }\r\n            }\r\n            value = dataSanitizeString(logger, value, 8192 /* DataSanitizerValues.MAX_PROPERTY_LENGTH */);\r\n            prop = dataSanitizeKeyAndAddUniqueness(logger, prop, tempProps_1);\r\n            tempProps_1[prop] = value;\r\n        });\r\n        properties = tempProps_1;\r\n    }\r\n    return properties;\r\n}\r\nexport function dataSanitizeMeasurements(logger, measurements) {\r\n    if (measurements) {\r\n        var tempMeasurements_1 = {};\r\n        objForEachKey(measurements, function (measure, value) {\r\n            measure = dataSanitizeKeyAndAddUniqueness(logger, measure, tempMeasurements_1);\r\n            tempMeasurements_1[measure] = value;\r\n        });\r\n        measurements = tempMeasurements_1;\r\n    }\r\n    return measurements;\r\n}\r\nexport function dataSanitizeId(logger, id) {\r\n    return id ? dataSanitizeInput(logger, id, 128 /* DataSanitizerValues.MAX_ID_LENGTH */, 69 /* _eInternalMessageId.IdTooLong */)[_DYN_TO_STRING /* @min:%2etoString */]() : id;\r\n}\r\nexport function dataSanitizeInput(logger, input, maxLength, _msgId) {\r\n    var inputTrunc;\r\n    if (input) {\r\n        input = strTrim(asString(input));\r\n        if (input[_DYN_LENGTH /* @min:%2elength */] > maxLength) {\r\n            inputTrunc = strSubstring(input, 0, maxLength);\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, _msgId, \"input is too long, it has been truncated to \" + maxLength + \" characters.\", { data: input }, true);\r\n        }\r\n    }\r\n    return inputTrunc || input;\r\n}\r\nexport function dsPadNumber(num) {\r\n    var s = \"00\" + num;\r\n    return strSubstr(s, s[_DYN_LENGTH /* @min:%2elength */] - 3);\r\n}\r\n//# sourceMappingURL=DataSanitizer.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { isNullOrUndefined, objForEachKey, throwError, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strIkey, strNotSpecified } from \"./Constants\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { _DYN_NAME } from \"./__DynamicConstants\";\r\n/**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item - domain specific properties; part B\r\n * @param baseType - telemetry item type. ie PageViewData\r\n * @param envelopeName - name of the envelope. ie Microsoft.ApplicationInsights.<instrumentation key>.PageView\r\n * @param customProperties - user defined custom properties; part C\r\n * @param systemProperties - system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\nexport function createTelemetryItem(item, baseType, envelopeName, logger, customProperties, systemProperties) {\r\n    var _a;\r\n    envelopeName = dataSanitizeString(logger, envelopeName) || strNotSpecified;\r\n    if (isNullOrUndefined(item) ||\r\n        isNullOrUndefined(baseType) ||\r\n        isNullOrUndefined(envelopeName)) {\r\n        throwError(\"Input doesn't contain all required fields\");\r\n    }\r\n    var iKey = \"\";\r\n    if (item[strIkey]) {\r\n        iKey = item[strIkey];\r\n        delete item[strIkey];\r\n    }\r\n    var telemetryItem = (_a = {},\r\n        _a[_DYN_NAME /* @min:name */] = envelopeName,\r\n        _a.time = toISOString(new Date()),\r\n        _a.iKey = iKey,\r\n        _a.ext = systemProperties ? systemProperties : {},\r\n        _a.tags = [],\r\n        _a.data = {},\r\n        _a.baseType = baseType,\r\n        _a.baseData = item // Part B\r\n    ,\r\n        _a);\r\n    // Part C\r\n    if (!isNullOrUndefined(customProperties)) {\r\n        objForEachKey(customProperties, function (prop, value) {\r\n            telemetryItem.data[prop] = value;\r\n        });\r\n    }\r\n    return telemetryItem;\r\n}\r\nvar TelemetryItemCreator = /** @class */ (function () {\r\n    function TelemetryItemCreator() {\r\n    }\r\n    /**\r\n     * Create a telemetry item that the 1DS channel understands\r\n     * @param item - domain specific properties; part B\r\n     * @param baseType - telemetry item type. ie PageViewData\r\n     * @param envelopeName - name of the envelope. ie Microsoft.ApplicationInsights.<instrumentation key>.PageView\r\n     * @param customProperties - user defined custom properties; part C\r\n     * @param systemProperties - system properties that are added to the context; part A\r\n     * @returns ITelemetryItem that is sent to channel\r\n     */\r\n    TelemetryItemCreator.create = createTelemetryItem;\r\n    return TelemetryItemCreator;\r\n}());\r\nexport { TelemetryItemCreator };\r\n//# sourceMappingURL=TelemetryItemCreator.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar Event = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the EventTelemetry object\r\n     */\r\n    function Event(logger, name, properties, measurements) {\r\n        this.aiDataContract = {\r\n            ver: 1 /* FieldType.Required */,\r\n            name: 1 /* FieldType.Required */,\r\n            properties: 0 /* FieldType.Default */,\r\n            measurements: 0 /* FieldType.Default */\r\n        };\r\n        var _self = this;\r\n        _self.ver = 2;\r\n        _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n        _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n        _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n    }\r\n    Event.envelopeType = \"Microsoft.ApplicationInsights.{0}.Event\";\r\n    Event.dataType = \"EventData\";\r\n    return Event;\r\n}());\r\nexport { Event };\r\n//# sourceMappingURL=Event.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_MESSAGE, _DYN_PROPERTIES, _DYN_SEVERITY_LEVEL } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties } from \"./Common/DataSanitizer\";\r\nvar Trace = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the TraceTelemetry object\r\n     */\r\n    function Trace(logger, message, severityLevel, properties, measurements) {\r\n        this.aiDataContract = {\r\n            ver: 1 /* FieldType.Required */,\r\n            message: 1 /* FieldType.Required */,\r\n            severityLevel: 0 /* FieldType.Default */,\r\n            properties: 0 /* FieldType.Default */\r\n        };\r\n        var _self = this;\r\n        _self.ver = 2;\r\n        message = message || strNotSpecified;\r\n        _self[_DYN_MESSAGE /* @min:%2emessage */] = dataSanitizeMessage(logger, message);\r\n        _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n        _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n        if (severityLevel) {\r\n            _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = severityLevel;\r\n        }\r\n    }\r\n    Trace.envelopeType = \"Microsoft.ApplicationInsights.{0}.Message\";\r\n    Trace.dataType = \"MessageData\";\r\n    return Trace;\r\n}());\r\nexport { Trace };\r\n//# sourceMappingURL=Trace.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar DataPoint = /** @class */ (function () {\r\n    function DataPoint() {\r\n        /**\r\n         * The data contract for serializing this object.\r\n         */\r\n        this.aiDataContract = {\r\n            name: 1 /* FieldType.Required */,\r\n            kind: 0 /* FieldType.Default */,\r\n            value: 1 /* FieldType.Required */,\r\n            count: 0 /* FieldType.Default */,\r\n            min: 0 /* FieldType.Default */,\r\n            max: 0 /* FieldType.Default */,\r\n            stdDev: 0 /* FieldType.Default */\r\n        };\r\n        /**\r\n         * Metric type. Single measurement or the aggregated value.\r\n         */\r\n        this.kind = 0 /* DataPointType.Measurement */;\r\n    }\r\n    return DataPoint;\r\n}());\r\nexport { DataPoint };\r\n//# sourceMappingURL=DataPoint.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_COUNT, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { DataPoint } from \"./Common/DataPoint\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar Metric = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the MetricTelemetry object\r\n     */\r\n    function Metric(logger, name, value, count, min, max, stdDev, properties, measurements) {\r\n        this.aiDataContract = {\r\n            ver: 1 /* FieldType.Required */,\r\n            metrics: 1 /* FieldType.Required */,\r\n            properties: 0 /* FieldType.Default */\r\n        };\r\n        var _self = this;\r\n        _self.ver = 2;\r\n        var dataPoint = new DataPoint();\r\n        dataPoint[_DYN_COUNT /* @min:%2ecount */] = count > 0 ? count : undefined;\r\n        dataPoint.max = isNaN(max) || max === null ? undefined : max;\r\n        dataPoint.min = isNaN(min) || min === null ? undefined : min;\r\n        dataPoint[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n        dataPoint.value = value;\r\n        dataPoint.stdDev = isNaN(stdDev) || stdDev === null ? undefined : stdDev;\r\n        _self.metrics = [dataPoint];\r\n        _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n        _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n    }\r\n    Metric.envelopeType = \"Microsoft.ApplicationInsights.{0}.Metric\";\r\n    Metric.dataType = \"MetricData\";\r\n    return Metric;\r\n}());\r\nexport { Metric };\r\n//# sourceMappingURL=Metric.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar strEmpty = \"\";\r\nexport function stringToBoolOrDefault(str, defaultValue) {\r\n    if (defaultValue === void 0) { defaultValue = false; }\r\n    if (str === undefined || str === null) {\r\n        return defaultValue;\r\n    }\r\n    return str.toString()[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === \"true\";\r\n}\r\n/**\r\n * Convert ms to c# time span format\r\n */\r\nexport function msToTimeSpan(totalms) {\r\n    if (isNaN(totalms) || totalms < 0) {\r\n        totalms = 0;\r\n    }\r\n    totalms = Math.round(totalms);\r\n    var ms = strEmpty + totalms % 1000;\r\n    var sec = strEmpty + Math.floor(totalms / 1000) % 60;\r\n    var min = strEmpty + Math.floor(totalms / (1000 * 60)) % 60;\r\n    var hour = strEmpty + Math.floor(totalms / (1000 * 60 * 60)) % 24;\r\n    var days = Math.floor(totalms / (1000 * 60 * 60 * 24));\r\n    ms = ms[_DYN_LENGTH /* @min:%2elength */] === 1 ? \"00\" + ms : ms[_DYN_LENGTH /* @min:%2elength */] === 2 ? \"0\" + ms : ms;\r\n    sec = sec[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + sec : sec;\r\n    min = min[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + min : min;\r\n    hour = hour[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + hour : hour;\r\n    return (days > 0 ? days + \".\" : strEmpty) + hour + \":\" + min + \":\" + sec + \".\" + ms;\r\n}\r\nexport function getExtensionByName(extensions, identifier) {\r\n    var extension = null;\r\n    arrForEach(extensions, function (value) {\r\n        if (value.identifier === identifier) {\r\n            extension = value;\r\n            return -1;\r\n        }\r\n    });\r\n    return extension;\r\n}\r\nexport function isCrossOriginError(message, url, lineNumber, columnNumber, error) {\r\n    return !error && isString(message) && (message === \"Script error.\" || message === \"Script error\");\r\n}\r\n//# sourceMappingURL=HelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeId, dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar PageView = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the PageEventTelemetry object\r\n     */\r\n    function PageView(logger, name, url, durationMs, properties, measurements, id) {\r\n        this.aiDataContract = {\r\n            ver: 1 /* FieldType.Required */,\r\n            name: 0 /* FieldType.Default */,\r\n            url: 0 /* FieldType.Default */,\r\n            duration: 0 /* FieldType.Default */,\r\n            properties: 0 /* FieldType.Default */,\r\n            measurements: 0 /* FieldType.Default */,\r\n            id: 0 /* FieldType.Default */\r\n        };\r\n        var _self = this;\r\n        _self.ver = 2;\r\n        _self.id = dataSanitizeId(logger, id);\r\n        _self.url = dataSanitizeUrl(logger, url);\r\n        _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n        if (!isNaN(durationMs)) {\r\n            _self[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(durationMs);\r\n        }\r\n        _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n        _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n    }\r\n    PageView.envelopeType = \"Microsoft.ApplicationInsights.{0}.Pageview\";\r\n    PageView.dataType = \"PageviewData\";\r\n    return PageView;\r\n}());\r\nexport { PageView };\r\n//# sourceMappingURL=PageView.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES, _DYN_RECEIVED_RESPONSE } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar PageViewPerformance = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the PageEventTelemetry object\r\n     */\r\n    function PageViewPerformance(logger, name, url, unused, properties, measurements, cs4BaseData) {\r\n        this.aiDataContract = {\r\n            ver: 1 /* FieldType.Required */,\r\n            name: 0 /* FieldType.Default */,\r\n            url: 0 /* FieldType.Default */,\r\n            duration: 0 /* FieldType.Default */,\r\n            perfTotal: 0 /* FieldType.Default */,\r\n            networkConnect: 0 /* FieldType.Default */,\r\n            sentRequest: 0 /* FieldType.Default */,\r\n            receivedResponse: 0 /* FieldType.Default */,\r\n            domProcessing: 0 /* FieldType.Default */,\r\n            properties: 0 /* FieldType.Default */,\r\n            measurements: 0 /* FieldType.Default */\r\n        };\r\n        var _self = this;\r\n        _self.ver = 2;\r\n        _self.url = dataSanitizeUrl(logger, url);\r\n        _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n        _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n        _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n        if (cs4BaseData) {\r\n            _self.domProcessing = cs4BaseData.domProcessing;\r\n            _self[_DYN_DURATION /* @min:%2eduration */] = cs4BaseData[_DYN_DURATION /* @min:%2eduration */];\r\n            _self.networkConnect = cs4BaseData.networkConnect;\r\n            _self.perfTotal = cs4BaseData.perfTotal;\r\n            _self[_DYN_RECEIVED_RESPONSE /* @min:%2ereceivedResponse */] = cs4BaseData[_DYN_RECEIVED_RESPONSE /* @min:%2ereceivedResponse */];\r\n            _self.sentRequest = cs4BaseData.sentRequest;\r\n        }\r\n    }\r\n    PageViewPerformance.envelopeType = \"Microsoft.ApplicationInsights.{0}.PageviewPerformance\";\r\n    PageViewPerformance.dataType = \"PageviewPerformanceData\";\r\n    return PageViewPerformance;\r\n}());\r\nexport { PageViewPerformance };\r\n//# sourceMappingURL=PageViewPerformance.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __assignFn as __assign } from \"@microsoft/applicationinsights-shims\";\r\nimport { arrForEach, arrMap, isArray, isError, isFunction, isNullOrUndefined, isObject, isString, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { getWindow, strIndexOf } from \"@nevware21/ts-utils\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_ASSEMBLY, _DYN_EXCEPTIONS, _DYN_FILE_NAME, _DYN_HAS_FULL_STACK, _DYN_IS_MANUAL, _DYN_LENGTH, _DYN_LEVEL, _DYN_LINE, _DYN_MEASUREMENTS, _DYN_MESSAGE, _DYN_METHOD, _DYN_NAME, _DYN_PARSED_STACK, _DYN_PROBLEM_GROUP, _DYN_PROPERTIES, _DYN_PUSH, _DYN_SEVERITY_LEVEL, _DYN_SIZE_IN_BYTES, _DYN_SPLIT, _DYN_STRINGIFY, _DYN_TO_STRING, _DYN_TYPE_NAME, _DYN__CREATE_FROM_INTERFA1 } from \"../__DynamicConstants\";\r\nimport { dataSanitizeException, dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar NoMethod = \"<no_method>\";\r\nvar strError = \"error\";\r\nvar strStack = \"stack\";\r\nvar strStackDetails = \"stackDetails\";\r\nvar strErrorSrc = \"errorSrc\";\r\nvar strMessage = \"message\";\r\nvar strDescription = \"description\";\r\nfunction _stringify(value, convertToString) {\r\n    var result = value;\r\n    if (result && !isString(result)) {\r\n        if (JSON && JSON[_DYN_STRINGIFY /* @min:%2estringify */]) {\r\n            result = JSON[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n            if (convertToString && (!result || result === \"{}\")) {\r\n                if (isFunction(value[_DYN_TO_STRING /* @min:%2etoString */])) {\r\n                    result = value[_DYN_TO_STRING /* @min:%2etoString */]();\r\n                }\r\n                else {\r\n                    result = \"\" + value;\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            result = \"\" + value + \" - (Missing JSON.stringify)\";\r\n        }\r\n    }\r\n    return result || \"\";\r\n}\r\nfunction _formatMessage(theEvent, errorType) {\r\n    var evtMessage = theEvent;\r\n    if (theEvent) {\r\n        if (evtMessage && !isString(evtMessage)) {\r\n            evtMessage = theEvent[strMessage] || theEvent[strDescription] || evtMessage;\r\n        }\r\n        // Make sure the message is a string\r\n        if (evtMessage && !isString(evtMessage)) {\r\n            // tslint:disable-next-line: prefer-conditional-expression\r\n            evtMessage = _stringify(evtMessage, true);\r\n        }\r\n        if (theEvent[\"filename\"]) {\r\n            // Looks like an event object with filename\r\n            evtMessage = evtMessage + \" @\" + (theEvent[\"filename\"] || \"\") + \":\" + (theEvent[\"lineno\"] || \"?\") + \":\" + (theEvent[\"colno\"] || \"?\");\r\n        }\r\n    }\r\n    // Automatically add the error type to the message if it does already appear to be present\r\n    if (errorType && errorType !== \"String\" && errorType !== \"Object\" && errorType !== \"Error\" && strIndexOf(evtMessage || \"\", errorType) === -1) {\r\n        evtMessage = errorType + \": \" + evtMessage;\r\n    }\r\n    return evtMessage || \"\";\r\n}\r\nfunction _isExceptionDetailsInternal(value) {\r\n    try {\r\n        if (isObject(value)) {\r\n            return \"hasFullStack\" in value && \"typeName\" in value;\r\n        }\r\n    }\r\n    catch (e) {\r\n        // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n    }\r\n    return false;\r\n}\r\nfunction _isExceptionInternal(value) {\r\n    try {\r\n        if (isObject(value)) {\r\n            return (\"ver\" in value && \"exceptions\" in value && \"properties\" in value);\r\n        }\r\n    }\r\n    catch (e) {\r\n        // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n    }\r\n    return false;\r\n}\r\nfunction _isStackDetails(details) {\r\n    return details && details.src && isString(details.src) && details.obj && isArray(details.obj);\r\n}\r\nfunction _convertStackObj(errorStack) {\r\n    var src = errorStack || \"\";\r\n    if (!isString(src)) {\r\n        if (isString(src[strStack])) {\r\n            src = src[strStack];\r\n        }\r\n        else {\r\n            src = \"\" + src;\r\n        }\r\n    }\r\n    var items = src[_DYN_SPLIT /* @min:%2esplit */](\"\\n\");\r\n    return {\r\n        src: src,\r\n        obj: items\r\n    };\r\n}\r\nfunction _getOperaStack(errorMessage) {\r\n    var stack = [];\r\n    var lines = errorMessage[_DYN_SPLIT /* @min:%2esplit */](\"\\n\");\r\n    for (var lp = 0; lp < lines[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n        var entry = lines[lp];\r\n        if (lines[lp + 1]) {\r\n            entry += \"@\" + lines[lp + 1];\r\n            lp++;\r\n        }\r\n        stack[_DYN_PUSH /* @min:%2epush */](entry);\r\n    }\r\n    return {\r\n        src: errorMessage,\r\n        obj: stack\r\n    };\r\n}\r\nfunction _getStackFromErrorObj(errorObj) {\r\n    var details = null;\r\n    if (errorObj) {\r\n        try {\r\n            /* Using bracket notation is support older browsers (IE 7/8 -- dont remember the version) that throw when using dot\r\n            notation for undefined objects and we don't want to loose the error from being reported */\r\n            if (errorObj[strStack]) {\r\n                // Chrome/Firefox\r\n                details = _convertStackObj(errorObj[strStack]);\r\n            }\r\n            else if (errorObj[strError] && errorObj[strError][strStack]) {\r\n                // Edge error event provides the stack and error object\r\n                details = _convertStackObj(errorObj[strError][strStack]);\r\n            }\r\n            else if (errorObj[\"exception\"] && errorObj.exception[strStack]) {\r\n                details = _convertStackObj(errorObj.exception[strStack]);\r\n            }\r\n            else if (_isStackDetails(errorObj)) {\r\n                details = errorObj;\r\n            }\r\n            else if (_isStackDetails(errorObj[strStackDetails])) {\r\n                details = errorObj[strStackDetails];\r\n            }\r\n            else if (getWindow() && getWindow()[\"opera\"] && errorObj[strMessage]) {\r\n                // Opera\r\n                details = _getOperaStack(errorObj[_DYN_MESSAGE /* @min:%2emessage */]);\r\n            }\r\n            else if (errorObj[\"reason\"] && errorObj.reason[strStack]) {\r\n                // UnhandledPromiseRejection\r\n                details = _convertStackObj(errorObj.reason[strStack]);\r\n            }\r\n            else if (isString(errorObj)) {\r\n                details = _convertStackObj(errorObj);\r\n            }\r\n            else {\r\n                var evtMessage = errorObj[strMessage] || errorObj[strDescription] || \"\";\r\n                if (isString(errorObj[strErrorSrc])) {\r\n                    if (evtMessage) {\r\n                        evtMessage += \"\\n\";\r\n                    }\r\n                    evtMessage += \" from \" + errorObj[strErrorSrc];\r\n                }\r\n                if (evtMessage) {\r\n                    details = _convertStackObj(evtMessage);\r\n                }\r\n            }\r\n        }\r\n        catch (e) {\r\n            // something unexpected happened so to avoid failing to report any error lets swallow the exception\r\n            // and fallback to the callee/caller method\r\n            details = _convertStackObj(e);\r\n        }\r\n    }\r\n    return details || {\r\n        src: \"\",\r\n        obj: null\r\n    };\r\n}\r\nfunction _formatStackTrace(stackDetails) {\r\n    var stack = \"\";\r\n    if (stackDetails) {\r\n        if (stackDetails.obj) {\r\n            arrForEach(stackDetails.obj, function (entry) {\r\n                stack += entry + \"\\n\";\r\n            });\r\n        }\r\n        else {\r\n            stack = stackDetails.src || \"\";\r\n        }\r\n    }\r\n    return stack;\r\n}\r\nfunction _parseStack(stack) {\r\n    var parsedStack;\r\n    var frames = stack.obj;\r\n    if (frames && frames[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n        parsedStack = [];\r\n        var level_1 = 0;\r\n        var totalSizeInBytes_1 = 0;\r\n        arrForEach(frames, function (frame) {\r\n            var theFrame = frame[_DYN_TO_STRING /* @min:%2etoString */]();\r\n            if (_StackFrame.regex.test(theFrame)) {\r\n                var parsedFrame = new _StackFrame(theFrame, level_1++);\r\n                totalSizeInBytes_1 += parsedFrame[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n                parsedStack[_DYN_PUSH /* @min:%2epush */](parsedFrame);\r\n            }\r\n        });\r\n        // DP Constraint - exception parsed stack must be < 32KB\r\n        // remove frames from the middle to meet the threshold\r\n        var exceptionParsedStackThreshold = 32 * 1024;\r\n        if (totalSizeInBytes_1 > exceptionParsedStackThreshold) {\r\n            var left = 0;\r\n            var right = parsedStack[_DYN_LENGTH /* @min:%2elength */] - 1;\r\n            var size = 0;\r\n            var acceptedLeft = left;\r\n            var acceptedRight = right;\r\n            while (left < right) {\r\n                // check size\r\n                var lSize = parsedStack[left][_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n                var rSize = parsedStack[right][_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n                size += lSize + rSize;\r\n                if (size > exceptionParsedStackThreshold) {\r\n                    // remove extra frames from the middle\r\n                    var howMany = acceptedRight - acceptedLeft + 1;\r\n                    parsedStack.splice(acceptedLeft, howMany);\r\n                    break;\r\n                }\r\n                // update pointers\r\n                acceptedLeft = left;\r\n                acceptedRight = right;\r\n                left++;\r\n                right--;\r\n            }\r\n        }\r\n    }\r\n    return parsedStack;\r\n}\r\nfunction _getErrorType(errorType) {\r\n    // Gets the Error Type by passing the constructor (used to get the true type of native error object).\r\n    var typeName = \"\";\r\n    if (errorType) {\r\n        typeName = errorType.typeName || errorType[_DYN_NAME /* @min:%2ename */] || \"\";\r\n        if (!typeName) {\r\n            try {\r\n                var funcNameRegex = /function (.{1,200})\\(/;\r\n                var results = (funcNameRegex).exec((errorType).constructor[_DYN_TO_STRING /* @min:%2etoString */]());\r\n                typeName = (results && results[_DYN_LENGTH /* @min:%2elength */] > 1) ? results[1] : \"\";\r\n            }\r\n            catch (e) {\r\n                // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n            }\r\n        }\r\n    }\r\n    return typeName;\r\n}\r\n/**\r\n * Formats the provided errorObj for display and reporting, it may be a String, Object, integer or undefined depending on the browser.\r\n * @param errorObj - The supplied errorObj\r\n */\r\nexport function _formatErrorCode(errorObj) {\r\n    if (errorObj) {\r\n        try {\r\n            if (!isString(errorObj)) {\r\n                var errorType = _getErrorType(errorObj);\r\n                var result = _stringify(errorObj, false);\r\n                if (!result || result === \"{}\") {\r\n                    if (errorObj[strError]) {\r\n                        // Looks like an MS Error Event\r\n                        errorObj = errorObj[strError];\r\n                        errorType = _getErrorType(errorObj);\r\n                    }\r\n                    result = _stringify(errorObj, true);\r\n                }\r\n                if (strIndexOf(result, errorType) !== 0 && errorType !== \"String\") {\r\n                    return errorType + \":\" + result;\r\n                }\r\n                return result;\r\n            }\r\n        }\r\n        catch (e) {\r\n            // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n        }\r\n    }\r\n    // Fallback to just letting the object format itself into a string\r\n    return \"\" + (errorObj || \"\");\r\n}\r\nvar Exception = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the ExceptionTelemetry object\r\n     */\r\n    function Exception(logger, exception, properties, measurements, severityLevel, id) {\r\n        this.aiDataContract = {\r\n            ver: 1 /* FieldType.Required */,\r\n            exceptions: 1 /* FieldType.Required */,\r\n            severityLevel: 0 /* FieldType.Default */,\r\n            properties: 0 /* FieldType.Default */,\r\n            measurements: 0 /* FieldType.Default */\r\n        };\r\n        var _self = this;\r\n        _self.ver = 2; // TODO: handle the CS\"4.0\" ==> breeze 2 conversion in a better way\r\n        if (!_isExceptionInternal(exception)) {\r\n            if (!properties) {\r\n                properties = {};\r\n            }\r\n            if (id) {\r\n                properties.id = id;\r\n            }\r\n            _self[_DYN_EXCEPTIONS /* @min:%2eexceptions */] = [new _ExceptionDetails(logger, exception, properties)];\r\n            _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n            _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n            if (severityLevel) {\r\n                _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = severityLevel;\r\n            }\r\n            if (id) {\r\n                _self.id = id;\r\n            }\r\n        }\r\n        else {\r\n            _self[_DYN_EXCEPTIONS /* @min:%2eexceptions */] = exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */] || [];\r\n            _self[_DYN_PROPERTIES /* @min:%2eproperties */] = exception[_DYN_PROPERTIES /* @min:%2eproperties */];\r\n            _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = exception[_DYN_MEASUREMENTS /* @min:%2emeasurements */];\r\n            if (exception[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */]) {\r\n                _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = exception[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */];\r\n            }\r\n            if (exception.id) {\r\n                _self.id = exception.id;\r\n                exception[_DYN_PROPERTIES /* @min:%2eproperties */].id = exception.id;\r\n            }\r\n            if (exception[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */]) {\r\n                _self[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */] = exception[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */];\r\n            }\r\n            // bool/int types, use isNullOrUndefined\r\n            if (!isNullOrUndefined(exception[_DYN_IS_MANUAL /* @min:%2eisManual */])) {\r\n                _self[_DYN_IS_MANUAL /* @min:%2eisManual */] = exception[_DYN_IS_MANUAL /* @min:%2eisManual */];\r\n            }\r\n        }\r\n    }\r\n    Exception.CreateAutoException = function (message, url, lineNumber, columnNumber, error, evt, stack, errorSrc) {\r\n        var _a;\r\n        var errorType = _getErrorType(error || evt || message);\r\n        return _a = {},\r\n            _a[_DYN_MESSAGE /* @min:message */] = _formatMessage(message, errorType),\r\n            _a.url = url,\r\n            _a.lineNumber = lineNumber,\r\n            _a.columnNumber = columnNumber,\r\n            _a.error = _formatErrorCode(error || evt || message),\r\n            _a.evt = _formatErrorCode(evt || message),\r\n            _a[_DYN_TYPE_NAME /* @min:typeName */] = errorType,\r\n            _a.stackDetails = _getStackFromErrorObj(stack || error || evt),\r\n            _a.errorSrc = errorSrc,\r\n            _a;\r\n    };\r\n    Exception.CreateFromInterface = function (logger, exception, properties, measurements) {\r\n        var exceptions = exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */]\r\n            && arrMap(exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */], function (ex) { return _ExceptionDetails[_DYN__CREATE_FROM_INTERFA1 /* @min:%2eCreateFromInterface */](logger, ex); });\r\n        var exceptionData = new Exception(logger, __assign(__assign({}, exception), { exceptions: exceptions }), properties, measurements);\r\n        return exceptionData;\r\n    };\r\n    Exception.prototype.toInterface = function () {\r\n        var _a;\r\n        var _b = this, exceptions = _b.exceptions, properties = _b.properties, measurements = _b.measurements, severityLevel = _b.severityLevel, problemGroup = _b.problemGroup, id = _b.id, isManual = _b.isManual;\r\n        var exceptionDetailsInterface = exceptions instanceof Array\r\n            && arrMap(exceptions, function (exception) { return exception.toInterface(); })\r\n            || undefined;\r\n        return _a = {\r\n                ver: \"4.0\"\r\n            },\r\n            _a[_DYN_EXCEPTIONS /* @min:exceptions */] = exceptionDetailsInterface,\r\n            _a.severityLevel = severityLevel,\r\n            _a.properties = properties,\r\n            _a.measurements = measurements,\r\n            _a.problemGroup = problemGroup,\r\n            _a.id = id,\r\n            _a.isManual = isManual,\r\n            _a;\r\n    };\r\n    /**\r\n     * Creates a simple exception with 1 stack frame. Useful for manual constracting of exception.\r\n     */\r\n    Exception.CreateSimpleException = function (message, typeName, assembly, fileName, details, line) {\r\n        var _a;\r\n        return {\r\n            exceptions: [\r\n                (_a = {},\r\n                    _a[_DYN_HAS_FULL_STACK /* @min:hasFullStack */] = true,\r\n                    _a.message = message,\r\n                    _a.stack = details,\r\n                    _a.typeName = typeName,\r\n                    _a)\r\n            ]\r\n        };\r\n    };\r\n    Exception.envelopeType = \"Microsoft.ApplicationInsights.{0}.Exception\";\r\n    Exception.dataType = \"ExceptionData\";\r\n    Exception.formatError = _formatErrorCode;\r\n    return Exception;\r\n}());\r\nexport { Exception };\r\nvar _ExceptionDetails = /** @class */ (function () {\r\n    function _ExceptionDetails(logger, exception, properties) {\r\n        this.aiDataContract = {\r\n            id: 0 /* FieldType.Default */,\r\n            outerId: 0 /* FieldType.Default */,\r\n            typeName: 1 /* FieldType.Required */,\r\n            message: 1 /* FieldType.Required */,\r\n            hasFullStack: 0 /* FieldType.Default */,\r\n            stack: 0 /* FieldType.Default */,\r\n            parsedStack: 2 /* FieldType.Array */\r\n        };\r\n        var _self = this;\r\n        if (!_isExceptionDetailsInternal(exception)) {\r\n            var error = exception;\r\n            var evt = error && error.evt;\r\n            if (!isError(error)) {\r\n                error = error[strError] || evt || error;\r\n            }\r\n            _self[_DYN_TYPE_NAME /* @min:%2etypeName */] = dataSanitizeString(logger, _getErrorType(error)) || strNotSpecified;\r\n            _self[_DYN_MESSAGE /* @min:%2emessage */] = dataSanitizeMessage(logger, _formatMessage(exception || error, _self[_DYN_TYPE_NAME /* @min:%2etypeName */])) || strNotSpecified;\r\n            var stack = exception[strStackDetails] || _getStackFromErrorObj(exception);\r\n            _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] = _parseStack(stack);\r\n            // after parsedStack is inited, iterate over each frame object, sanitize its assembly field\r\n            if (isArray(_self[_DYN_PARSED_STACK /* @min:%2eparsedStack */])) {\r\n                arrMap(_self[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) {\r\n                    frame[_DYN_ASSEMBLY /* @min:%2eassembly */] = dataSanitizeString(logger, frame[_DYN_ASSEMBLY /* @min:%2eassembly */]);\r\n                    frame[_DYN_FILE_NAME /* @min:%2efileName */] = dataSanitizeString(logger, frame[_DYN_FILE_NAME /* @min:%2efileName */]);\r\n                });\r\n            }\r\n            _self[strStack] = dataSanitizeException(logger, _formatStackTrace(stack));\r\n            _self.hasFullStack = isArray(_self.parsedStack) && _self.parsedStack[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n            if (properties) {\r\n                properties[_DYN_TYPE_NAME /* @min:%2etypeName */] = properties[_DYN_TYPE_NAME /* @min:%2etypeName */] || _self[_DYN_TYPE_NAME /* @min:%2etypeName */];\r\n            }\r\n        }\r\n        else {\r\n            _self[_DYN_TYPE_NAME /* @min:%2etypeName */] = exception[_DYN_TYPE_NAME /* @min:%2etypeName */];\r\n            _self[_DYN_MESSAGE /* @min:%2emessage */] = exception[_DYN_MESSAGE /* @min:%2emessage */];\r\n            _self[strStack] = exception[strStack];\r\n            _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] = exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */] || [];\r\n            _self[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */] = exception[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */];\r\n        }\r\n    }\r\n    _ExceptionDetails.prototype.toInterface = function () {\r\n        var _a;\r\n        var _self = this;\r\n        var parsedStack = _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] instanceof Array\r\n            && arrMap(_self[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) { return frame.toInterface(); });\r\n        var exceptionDetailsInterface = (_a = {\r\n                id: _self.id,\r\n                outerId: _self.outerId,\r\n                typeName: _self[_DYN_TYPE_NAME /* @min:%2etypeName */],\r\n                message: _self[_DYN_MESSAGE /* @min:%2emessage */],\r\n                hasFullStack: _self[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */],\r\n                stack: _self[strStack]\r\n            },\r\n            _a[_DYN_PARSED_STACK /* @min:parsedStack */] = parsedStack || undefined,\r\n            _a);\r\n        return exceptionDetailsInterface;\r\n    };\r\n    _ExceptionDetails.CreateFromInterface = function (logger, exception) {\r\n        var parsedStack = (exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */] instanceof Array\r\n            && arrMap(exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) { return _StackFrame[_DYN__CREATE_FROM_INTERFA1 /* @min:%2eCreateFromInterface */](frame); }))\r\n            || exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */];\r\n        var exceptionDetails = new _ExceptionDetails(logger, __assign(__assign({}, exception), { parsedStack: parsedStack }));\r\n        return exceptionDetails;\r\n    };\r\n    return _ExceptionDetails;\r\n}());\r\nexport { _ExceptionDetails };\r\nvar _StackFrame = /** @class */ (function () {\r\n    function _StackFrame(sourceFrame, level) {\r\n        this.aiDataContract = {\r\n            level: 1 /* FieldType.Required */,\r\n            method: 1 /* FieldType.Required */,\r\n            assembly: 0 /* FieldType.Default */,\r\n            fileName: 0 /* FieldType.Default */,\r\n            line: 0 /* FieldType.Default */\r\n        };\r\n        var _self = this;\r\n        _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] = 0;\r\n        // Not converting this to isString() as typescript uses this logic to \"understand\" the different\r\n        // types for the 2 different code paths\r\n        if (typeof sourceFrame === \"string\") {\r\n            var frame = sourceFrame;\r\n            _self[_DYN_LEVEL /* @min:%2elevel */] = level;\r\n            _self[_DYN_METHOD /* @min:%2emethod */] = NoMethod;\r\n            _self[_DYN_ASSEMBLY /* @min:%2eassembly */] = strTrim(frame);\r\n            _self[_DYN_FILE_NAME /* @min:%2efileName */] = \"\";\r\n            _self[_DYN_LINE /* @min:%2eline */] = 0;\r\n            var matches = frame.match(_StackFrame.regex);\r\n            if (matches && matches[_DYN_LENGTH /* @min:%2elength */] >= 5) {\r\n                _self[_DYN_METHOD /* @min:%2emethod */] = strTrim(matches[2]) || _self[_DYN_METHOD /* @min:%2emethod */];\r\n                _self[_DYN_FILE_NAME /* @min:%2efileName */] = strTrim(matches[4]);\r\n                _self[_DYN_LINE /* @min:%2eline */] = parseInt(matches[5]) || 0;\r\n            }\r\n        }\r\n        else {\r\n            _self[_DYN_LEVEL /* @min:%2elevel */] = sourceFrame[_DYN_LEVEL /* @min:%2elevel */];\r\n            _self[_DYN_METHOD /* @min:%2emethod */] = sourceFrame[_DYN_METHOD /* @min:%2emethod */];\r\n            _self[_DYN_ASSEMBLY /* @min:%2eassembly */] = sourceFrame[_DYN_ASSEMBLY /* @min:%2eassembly */];\r\n            _self[_DYN_FILE_NAME /* @min:%2efileName */] = sourceFrame[_DYN_FILE_NAME /* @min:%2efileName */];\r\n            _self[_DYN_LINE /* @min:%2eline */] = sourceFrame[_DYN_LINE /* @min:%2eline */];\r\n            _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] = 0;\r\n        }\r\n        _self.sizeInBytes += _self.method[_DYN_LENGTH /* @min:%2elength */];\r\n        _self.sizeInBytes += _self.fileName[_DYN_LENGTH /* @min:%2elength */];\r\n        _self.sizeInBytes += _self.assembly[_DYN_LENGTH /* @min:%2elength */];\r\n        // todo: these might need to be removed depending on how the back-end settles on their size calculation\r\n        _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] += _StackFrame.baseSize;\r\n        _self.sizeInBytes += _self.level.toString()[_DYN_LENGTH /* @min:%2elength */];\r\n        _self.sizeInBytes += _self.line.toString()[_DYN_LENGTH /* @min:%2elength */];\r\n    }\r\n    _StackFrame.CreateFromInterface = function (frame) {\r\n        return new _StackFrame(frame, null /* level is available in frame interface */);\r\n    };\r\n    _StackFrame.prototype.toInterface = function () {\r\n        var _self = this;\r\n        return {\r\n            level: _self[_DYN_LEVEL /* @min:%2elevel */],\r\n            method: _self[_DYN_METHOD /* @min:%2emethod */],\r\n            assembly: _self[_DYN_ASSEMBLY /* @min:%2eassembly */],\r\n            fileName: _self[_DYN_FILE_NAME /* @min:%2efileName */],\r\n            line: _self[_DYN_LINE /* @min:%2eline */]\r\n        };\r\n    };\r\n    // regex to match stack frames from ie/chrome/ff\r\n    // methodName=$2, fileName=$4, lineNo=$5, column=$6\r\n    _StackFrame.regex = /^([\\s]+at)?[\\s]{0,50}([^\\@\\()]+?)[\\s]{0,50}(\\@|\\()([^\\(\\n]+):([0-9]+):([0-9]+)(\\)?)$/;\r\n    _StackFrame.baseSize = 58; // '{\"method\":\"\",\"level\":,\"assembly\":\"\",\"fileName\":\"\",\"line\":}'.length\r\n    return _StackFrame;\r\n}());\r\nexport { _StackFrame };\r\n//# sourceMappingURL=Exception.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { strSubstr, strSubstring } from \"@nevware21/ts-utils\";\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nimport { random32 } from \"./RandomHelper\";\r\n// Added to help with minfication\r\nexport var Undefined = strShimUndefined;\r\nexport function newGuid() {\r\n    var uuid = generateW3CId();\r\n    return strSubstring(uuid, 0, 8) + \"-\" + strSubstring(uuid, 8, 12) + \"-\" + strSubstring(uuid, 12, 16) + \"-\" + strSubstring(uuid, 16, 20) + \"-\" + strSubstring(uuid, 20);\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n    if (value && search) {\r\n        var len = value[_DYN_LENGTH /* @min:%2elength */];\r\n        var start = len - search[_DYN_LENGTH /* @min:%2elength */];\r\n        return strSubstring(value, start >= 0 ? start : 0, len) === search;\r\n    }\r\n    return false;\r\n}\r\n/**\r\n * generate W3C trace id\r\n */\r\nexport function generateW3CId() {\r\n    var hexValues = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\r\n    // rfc4122 version 4 UUID without dashes and with lowercase letters\r\n    var oct = STR_EMPTY, tmp;\r\n    for (var a = 0; a < 4; a++) {\r\n        tmp = random32();\r\n        oct +=\r\n            hexValues[tmp & 0xF] +\r\n                hexValues[tmp >> 4 & 0xF] +\r\n                hexValues[tmp >> 8 & 0xF] +\r\n                hexValues[tmp >> 12 & 0xF] +\r\n                hexValues[tmp >> 16 & 0xF] +\r\n                hexValues[tmp >> 20 & 0xF] +\r\n                hexValues[tmp >> 24 & 0xF] +\r\n                hexValues[tmp >> 28 & 0xF];\r\n    }\r\n    // \"Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively\"\r\n    var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];\r\n    return strSubstr(oct, 0, 8) + strSubstr(oct, 9, 4) + \"4\" + strSubstr(oct, 13, 3) + clockSequenceHi + strSubstr(oct, 16, 3) + strSubstr(oct, 19, 12);\r\n}\r\n//# sourceMappingURL=CoreUtils.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { arrForEach, isArray, isString, strLeft, strTrim } from \"@nevware21/ts-utils\";\r\nimport { _DYN_GET_ATTRIBUTE, _DYN_LENGTH, _DYN_PUSH, _DYN_SPAN_ID, _DYN_SPLIT, _DYN_TO_LOWER_CASE, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_VERSION } from \"../__DynamicConstants\";\r\nimport { generateW3CId } from \"./CoreUtils\";\r\nimport { findMetaTag, findNamedServerTiming } from \"./EnvUtils\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// using {0,16} for leading and trailing whitespace just to constrain the possible runtime of a random string\r\nvar TRACE_PARENT_REGEX = /^([\\da-f]{2})-([\\da-f]{32})-([\\da-f]{16})-([\\da-f]{2})(-[^\\s]{1,64})?$/i;\r\nvar DEFAULT_VERSION = \"00\";\r\nvar INVALID_VERSION = \"ff\";\r\nvar INVALID_TRACE_ID = \"00000000000000000000000000000000\";\r\nvar INVALID_SPAN_ID = \"0000000000000000\";\r\nvar SAMPLED_FLAG = 0x01;\r\nfunction _isValid(value, len, invalidValue) {\r\n    if (value && value[_DYN_LENGTH /* @min:%2elength */] === len && value !== invalidValue) {\r\n        return !!value.match(/^[\\da-f]*$/i);\r\n    }\r\n    return false;\r\n}\r\nfunction _formatValue(value, len, defValue) {\r\n    if (_isValid(value, len)) {\r\n        return value;\r\n    }\r\n    return defValue;\r\n}\r\nfunction _formatFlags(value) {\r\n    if (isNaN(value) || value < 0 || value > 255) {\r\n        value = 0x01;\r\n    }\r\n    var result = value.toString(16);\r\n    while (result[_DYN_LENGTH /* @min:%2elength */] < 2) {\r\n        result = \"0\" + result;\r\n    }\r\n    return result;\r\n}\r\n/**\r\n * Create a new ITraceParent instance using the provided values.\r\n * @param traceId - The traceId to use, when invalid a new random W3C id will be generated.\r\n * @param spanId - The parent/span id to use, a new random value will be generated if it is invalid.\r\n * @param flags - The traceFlags to use, defaults to zero (0) if not supplied or invalid\r\n * @param version - The version to used, defaults to version \"01\" if not supplied or invalid.\r\n * @returns\r\n */\r\nexport function createTraceParent(traceId, spanId, flags, version) {\r\n    var _a;\r\n    return _a = {},\r\n        _a[_DYN_VERSION /* @min:version */] = _isValid(version, 2, INVALID_VERSION) ? version : DEFAULT_VERSION,\r\n        _a[_DYN_TRACE_ID /* @min:traceId */] = isValidTraceId(traceId) ? traceId : generateW3CId(),\r\n        _a[_DYN_SPAN_ID /* @min:spanId */] = isValidSpanId(spanId) ? spanId : strLeft(generateW3CId(), 16),\r\n        _a.traceFlags = flags >= 0 && flags <= 0xFF ? flags : 1,\r\n        _a;\r\n}\r\n/**\r\n * Attempt to parse the provided string as a W3C TraceParent header value (https://www.w3.org/TR/trace-context/#traceparent-header)\r\n *\r\n * @param value - The value to be parsed\r\n * @param selectIdx - If the found value is comma separated which is the preferred entry to select, defaults to the first\r\n * @returns\r\n */\r\nexport function parseTraceParent(value, selectIdx) {\r\n    var _a;\r\n    if (!value) {\r\n        // Don't pass a null/undefined or empty string\r\n        return null;\r\n    }\r\n    if (isArray(value)) {\r\n        // The value may have been encoded on the page into an array so handle this automatically\r\n        value = value[0] || \"\";\r\n    }\r\n    if (!value || !isString(value) || value[_DYN_LENGTH /* @min:%2elength */] > 8192) {\r\n        // limit potential processing based on total length\r\n        return null;\r\n    }\r\n    if (value.indexOf(\",\") !== -1) {\r\n        var values = value[_DYN_SPLIT /* @min:%2esplit */](\",\");\r\n        value = values[selectIdx > 0 && values[_DYN_LENGTH /* @min:%2elength */] > selectIdx ? selectIdx : 0];\r\n    }\r\n    // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\r\n    var match = TRACE_PARENT_REGEX.exec(strTrim(value));\r\n    if (!match || // No match\r\n        match[1] === INVALID_VERSION || // version ff is forbidden\r\n        match[2] === INVALID_TRACE_ID || // All zeros is considered to be invalid\r\n        match[3] === INVALID_SPAN_ID) { // All zeros is considered to be invalid\r\n        return null;\r\n    }\r\n    return _a = {\r\n            version: (match[1] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](),\r\n            traceId: (match[2] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](),\r\n            spanId: (match[3] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()\r\n        },\r\n        _a[_DYN_TRACE_FLAGS /* @min:traceFlags */] = parseInt(match[4], 16),\r\n        _a;\r\n}\r\n/**\r\n * Is the provided W3c Trace Id a valid string representation, it must be a 32-character string\r\n * of lowercase hexadecimal characters for example, 4bf92f3577b34da6a3ce929d0e0e4736.\r\n * If all characters as zero (00000000000000000000000000000000) it will be considered an invalid value.\r\n * @param value - The W3c trace Id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidTraceId(value) {\r\n    return _isValid(value, 32, INVALID_TRACE_ID);\r\n}\r\n/**\r\n * Is the provided W3c span id (aka. parent id) a valid string representation, it must be a 16-character\r\n * string of lowercase hexadecimal characters, for example, 00f067aa0ba902b7.\r\n * If all characters are zero (0000000000000000) this is considered an invalid value.\r\n * @param value - The W3c span id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidSpanId(value) {\r\n    return _isValid(value, 16, INVALID_SPAN_ID);\r\n}\r\n/**\r\n * Validates that the provided ITraceParent instance conforms to the currently supported specifications\r\n * @param value\r\n * @returns\r\n */\r\nexport function isValidTraceParent(value) {\r\n    if (!value ||\r\n        !_isValid(value[_DYN_VERSION /* @min:%2eversion */], 2, INVALID_VERSION) ||\r\n        !_isValid(value[_DYN_TRACE_ID /* @min:%2etraceId */], 32, INVALID_TRACE_ID) ||\r\n        !_isValid(value[_DYN_SPAN_ID /* @min:%2espanId */], 16, INVALID_SPAN_ID) ||\r\n        !_isValid(_formatFlags(value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */]), 2)) {\r\n        // Each known field must contain a valid value\r\n        return false;\r\n    }\r\n    return true;\r\n}\r\n/**\r\n * Is the parsed traceParent indicating that the trace is currently sampled.\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function isSampledFlag(value) {\r\n    if (isValidTraceParent(value)) {\r\n        return (value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] & SAMPLED_FLAG) === SAMPLED_FLAG;\r\n    }\r\n    return false;\r\n}\r\n/**\r\n * Format the ITraceParent value as a string using the supported and know version formats.\r\n * So even if the passed traceParent is a later version the string value returned from this\r\n * function will convert it to only the known version formats.\r\n * This currently only supports version \"00\" and invalid \"ff\"\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function formatTraceParent(value) {\r\n    if (value) {\r\n        // Special Note: This only supports formatting as version 00, future versions should encode any known supported version\r\n        // So parsing a future version will populate the correct version value but reformatting will reduce it to version 00.\r\n        var flags = _formatFlags(value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */]);\r\n        if (!_isValid(flags, 2)) {\r\n            flags = \"01\";\r\n        }\r\n        var version = value[_DYN_VERSION /* @min:%2eversion */] || DEFAULT_VERSION;\r\n        if (version !== \"00\" && version !== \"ff\") {\r\n            // Reduce version to \"00\"\r\n            version = DEFAULT_VERSION;\r\n        }\r\n        // Format as version 00\r\n        return \"\".concat(version.toLowerCase(), \"-\").concat(_formatValue(value.traceId, 32, INVALID_TRACE_ID).toLowerCase(), \"-\").concat(_formatValue(value.spanId, 16, INVALID_SPAN_ID).toLowerCase(), \"-\").concat(flags.toLowerCase());\r\n    }\r\n    return \"\";\r\n}\r\n/**\r\n * Helper function to fetch the passed traceparent from the page, looking for it as a meta-tag or a Server-Timing header.\r\n * @param selectIdx - If the found value is comma separated which is the preferred entry to select, defaults to the first\r\n * @returns\r\n */\r\nexport function findW3cTraceParent(selectIdx) {\r\n    var name = \"traceparent\";\r\n    var traceParent = parseTraceParent(findMetaTag(name), selectIdx);\r\n    if (!traceParent) {\r\n        traceParent = parseTraceParent(findNamedServerTiming(name), selectIdx);\r\n    }\r\n    return traceParent;\r\n}\r\n/**\r\n * Find all script tags in the provided document and return the information about them.\r\n * @param doc\r\n * @returns\r\n */\r\nexport function findAllScripts(doc) {\r\n    var scripts = doc.getElementsByTagName(\"script\");\r\n    var result = [];\r\n    arrForEach(scripts, function (script) {\r\n        var src = script[_DYN_GET_ATTRIBUTE /* @min:%2egetAttribute */](\"src\");\r\n        if (src) {\r\n            var crossOrigin = script[_DYN_GET_ATTRIBUTE /* @min:%2egetAttribute */](\"crossorigin\");\r\n            var async = script.hasAttribute(\"async\") === true;\r\n            var defer = script.hasAttribute(\"defer\") === true;\r\n            var referrerPolicy = script[_DYN_GET_ATTRIBUTE /* @min:%2egetAttribute */](\"referrerpolicy\");\r\n            var info = { url: src };\r\n            if (crossOrigin) {\r\n                info.crossOrigin = crossOrigin;\r\n            }\r\n            if (async) {\r\n                info.async = async;\r\n            }\r\n            if (defer) {\r\n                info.defer = defer;\r\n            }\r\n            if (referrerPolicy) {\r\n                info.referrerPolicy = referrerPolicy;\r\n            }\r\n            result[_DYN_PUSH /* @min:%2epush */](info);\r\n        }\r\n    });\r\n    return result;\r\n}\r\n//# sourceMappingURL=W3cTraceParent.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createValueMap } from \"@microsoft/applicationinsights-core-js\";\r\nexport var RequestHeaders = createValueMap({\r\n    requestContextHeader: [0 /* eRequestHeaders.requestContextHeader */, \"Request-Context\"],\r\n    requestContextTargetKey: [1 /* eRequestHeaders.requestContextTargetKey */, \"appId\"],\r\n    requestContextAppIdFormat: [2 /* eRequestHeaders.requestContextAppIdFormat */, \"appId=cid-v1:\"],\r\n    requestIdHeader: [3 /* eRequestHeaders.requestIdHeader */, \"Request-Id\"],\r\n    traceParentHeader: [4 /* eRequestHeaders.traceParentHeader */, \"traceparent\"],\r\n    traceStateHeader: [5 /* eRequestHeaders.traceStateHeader */, \"tracestate\"],\r\n    sdkContextHeader: [6 /* eRequestHeaders.sdkContextHeader */, \"Sdk-Context\"],\r\n    sdkContextHeaderAppIdRequest: [7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */, \"appId\"],\r\n    requestContextHeaderLowerCase: [8 /* eRequestHeaders.requestContextHeaderLowerCase */, \"request-context\"]\r\n});\r\n//# sourceMappingURL=RequestResponseHeaders.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getDocument, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_PATHNAME, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar _document = getDocument() || {};\r\nvar _htmlAnchorIdx = 0;\r\n// Use an array of temporary values as it's possible for multiple calls to parseUrl() will be called with different URLs\r\n// Using a cache size of 5 for now as it current depth usage is at least 2, so adding a minor buffer to handle future updates\r\nvar _htmlAnchorElement = [null, null, null, null, null];\r\nexport function urlParseUrl(url) {\r\n    var anchorIdx = _htmlAnchorIdx;\r\n    var anchorCache = _htmlAnchorElement;\r\n    var tempAnchor = anchorCache[anchorIdx];\r\n    if (!_document.createElement) {\r\n        // Always create the temp instance if createElement is not available\r\n        tempAnchor = { host: urlParseHost(url, true) };\r\n    }\r\n    else if (!anchorCache[anchorIdx]) {\r\n        // Create and cache the unattached anchor instance\r\n        tempAnchor = anchorCache[anchorIdx] = _document.createElement(\"a\");\r\n    }\r\n    tempAnchor.href = url;\r\n    // Move the cache index forward\r\n    anchorIdx++;\r\n    if (anchorIdx >= anchorCache[_DYN_LENGTH /* @min:%2elength */]) {\r\n        anchorIdx = 0;\r\n    }\r\n    _htmlAnchorIdx = anchorIdx;\r\n    return tempAnchor;\r\n}\r\nexport function urlGetAbsoluteUrl(url) {\r\n    var result;\r\n    var a = urlParseUrl(url);\r\n    if (a) {\r\n        result = a.href;\r\n    }\r\n    return result;\r\n}\r\nexport function urlGetPathName(url) {\r\n    var result;\r\n    var a = urlParseUrl(url);\r\n    if (a) {\r\n        result = a[_DYN_PATHNAME /* @min:%2epathname */];\r\n    }\r\n    return result;\r\n}\r\nexport function urlGetCompleteUrl(method, absoluteUrl) {\r\n    if (method) {\r\n        return method.toUpperCase() + \" \" + absoluteUrl;\r\n    }\r\n    return absoluteUrl;\r\n}\r\n// Fallback method to grab host from url if document.createElement method is not available\r\nexport function urlParseHost(url, inclPort) {\r\n    var fullHost = urlParseFullHost(url, inclPort) || \"\";\r\n    if (fullHost) {\r\n        var match = fullHost.match(/(www\\d{0,5}\\.)?([^\\/:]{1,256})(:\\d{1,20})?/i);\r\n        if (match != null && match[_DYN_LENGTH /* @min:%2elength */] > 3 && isString(match[2]) && match[2][_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n            return match[2] + (match[3] || \"\");\r\n        }\r\n    }\r\n    return fullHost;\r\n}\r\nexport function urlParseFullHost(url, inclPort) {\r\n    var result = null;\r\n    if (url) {\r\n        var match = url.match(/(\\w{1,150}):\\/\\/([^\\/:]{1,256})(:\\d{1,20})?/i);\r\n        if (match != null && match[_DYN_LENGTH /* @min:%2elength */] > 2 && isString(match[2]) && match[2][_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n            result = match[2] || \"\";\r\n            if (inclPort && match[_DYN_LENGTH /* @min:%2elength */] > 2) {\r\n                var protocol = (match[1] || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n                var port = match[3] || \"\";\r\n                // IE includes the standard port so pass it off if it's the same as the protocol\r\n                if (protocol === \"http\" && port === \":80\") {\r\n                    port = \"\";\r\n                }\r\n                else if (protocol === \"https\" && port === \":443\") {\r\n                    port = \"\";\r\n                }\r\n                result += port;\r\n            }\r\n        }\r\n    }\r\n    return result;\r\n}\r\n//# sourceMappingURL=UrlHelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, arrIndexOf, dateNow, getPerformance, isNullOrUndefined, isValidSpanId, isValidTraceId } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strIndexOf } from \"@nevware21/ts-utils\";\r\nimport { DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH } from \"./Constants\";\r\nimport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { urlParseFullHost, urlParseUrl } from \"./UrlHelperFuncs\";\r\nimport { _DYN_CORRELATION_HEADER_E0, _DYN_LENGTH, _DYN_NAME, _DYN_PATHNAME, _DYN_SPLIT, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\n// listing only non-geo specific locations\r\nvar _internalEndpoints = [\r\n    DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH,\r\n    \"https://breeze.aimon.applicationinsights.io\" + DEFAULT_BREEZE_PATH,\r\n    \"https://dc-int.services.visualstudio.com\" + DEFAULT_BREEZE_PATH\r\n];\r\nvar _correlationIdPrefix = \"cid-v1:\";\r\nexport function isInternalApplicationInsightsEndpoint(endpointUrl) {\r\n    return arrIndexOf(_internalEndpoints, endpointUrl[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()) !== -1;\r\n}\r\nexport function correlationIdSetPrefix(prefix) {\r\n    _correlationIdPrefix = prefix;\r\n}\r\nexport function correlationIdGetPrefix() {\r\n    return _correlationIdPrefix;\r\n}\r\n/**\r\n * Checks if a request url is not on a excluded domain list and if it is safe to add correlation headers.\r\n * Headers are always included if the current domain matches the request domain. If they do not match (CORS),\r\n * they are regex-ed across correlationHeaderDomains and correlationHeaderExcludedDomains to determine if headers are included.\r\n * Some environments don't give information on currentHost via window.location.host (e.g. Cordova). In these cases, the user must\r\n * manually supply domains to include correlation headers on. Else, no headers will be included at all.\r\n */\r\nexport function correlationIdCanIncludeCorrelationHeader(config, requestUrl, currentHost) {\r\n    if (!requestUrl || (config && config.disableCorrelationHeaders)) {\r\n        return false;\r\n    }\r\n    if (config && config[_DYN_CORRELATION_HEADER_E0 /* @min:%2ecorrelationHeaderExcludePatterns */]) {\r\n        for (var i = 0; i < config.correlationHeaderExcludePatterns[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n            if (config[_DYN_CORRELATION_HEADER_E0 /* @min:%2ecorrelationHeaderExcludePatterns */][i].test(requestUrl)) {\r\n                return false;\r\n            }\r\n        }\r\n    }\r\n    var requestHost = urlParseUrl(requestUrl).host[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n    if (requestHost && (strIndexOf(requestHost, \":443\") !== -1 || strIndexOf(requestHost, \":80\") !== -1)) {\r\n        // [Bug #1260] IE can include the port even for http and https URLs so if present\r\n        // try and parse it to remove if it matches the default protocol port\r\n        requestHost = (urlParseFullHost(requestUrl, true) || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n    }\r\n    if ((!config || !config.enableCorsCorrelation) && (requestHost && requestHost !== currentHost)) {\r\n        return false;\r\n    }\r\n    var includedDomains = config && config.correlationHeaderDomains;\r\n    if (includedDomains) {\r\n        var matchExists_1;\r\n        arrForEach(includedDomains, function (domain) {\r\n            var regex = new RegExp(domain.toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n            matchExists_1 = matchExists_1 || regex.test(requestHost);\r\n        });\r\n        if (!matchExists_1) {\r\n            return false;\r\n        }\r\n    }\r\n    var excludedDomains = config && config.correlationHeaderExcludedDomains;\r\n    if (!excludedDomains || excludedDomains[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n        return true;\r\n    }\r\n    for (var i = 0; i < excludedDomains[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n        var regex = new RegExp(excludedDomains[i].toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n        if (regex.test(requestHost)) {\r\n            return false;\r\n        }\r\n    }\r\n    // if we don't know anything about the requestHost, require the user to use included/excludedDomains.\r\n    // Previously we always returned false for a falsy requestHost\r\n    return requestHost && requestHost[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n}\r\n/**\r\n * Combines target appId and target role name from response header.\r\n */\r\nexport function correlationIdGetCorrelationContext(responseHeader) {\r\n    if (responseHeader) {\r\n        var correlationId = correlationIdGetCorrelationContextValue(responseHeader, RequestHeaders[1 /* eRequestHeaders.requestContextTargetKey */]);\r\n        if (correlationId && correlationId !== _correlationIdPrefix) {\r\n            return correlationId;\r\n        }\r\n    }\r\n}\r\n/**\r\n * Gets key from correlation response header\r\n */\r\nexport function correlationIdGetCorrelationContextValue(responseHeader, key) {\r\n    if (responseHeader) {\r\n        var keyValues = responseHeader[_DYN_SPLIT /* @min:%2esplit */](\",\");\r\n        for (var i = 0; i < keyValues[_DYN_LENGTH /* @min:%2elength */]; ++i) {\r\n            var keyValue = keyValues[i][_DYN_SPLIT /* @min:%2esplit */](\"=\");\r\n            if (keyValue[_DYN_LENGTH /* @min:%2elength */] === 2 && keyValue[0] === key) {\r\n                return keyValue[1];\r\n            }\r\n        }\r\n    }\r\n}\r\nexport function AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName) {\r\n    var target, name = commandName, data = commandName;\r\n    if (absoluteUrl && absoluteUrl[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n        var parsedUrl = urlParseUrl(absoluteUrl);\r\n        target = parsedUrl.host;\r\n        if (!name) {\r\n            if (parsedUrl[_DYN_PATHNAME /* @min:%2epathname */] != null) {\r\n                var pathName = (parsedUrl.pathname[_DYN_LENGTH /* @min:%2elength */] === 0) ? \"/\" : parsedUrl[_DYN_PATHNAME /* @min:%2epathname */];\r\n                if (pathName.charAt(0) !== \"/\") {\r\n                    pathName = \"/\" + pathName;\r\n                }\r\n                data = parsedUrl[_DYN_PATHNAME /* @min:%2epathname */];\r\n                name = dataSanitizeString(logger, method ? method + \" \" + pathName : pathName);\r\n            }\r\n            else {\r\n                name = dataSanitizeString(logger, absoluteUrl);\r\n            }\r\n        }\r\n    }\r\n    else {\r\n        target = commandName;\r\n        name = commandName;\r\n    }\r\n    return {\r\n        target: target,\r\n        name: name,\r\n        data: data\r\n    };\r\n}\r\nexport function dateTimeUtilsNow() {\r\n    // returns the window or webworker performance object\r\n    var perf = getPerformance();\r\n    if (perf && perf.now && perf.timing) {\r\n        var now = perf.now() + perf.timing.navigationStart;\r\n        // Known issue with IE where this calculation can be negative, so if it is then ignore and fallback\r\n        if (now > 0) {\r\n            return now;\r\n        }\r\n    }\r\n    return dateNow();\r\n}\r\nexport function dateTimeUtilsDuration(start, end) {\r\n    var result = null;\r\n    if (start !== 0 && end !== 0 && !isNullOrUndefined(start) && !isNullOrUndefined(end)) {\r\n        result = end - start;\r\n    }\r\n    return result;\r\n}\r\n/**\r\n * Creates a IDistributedTraceContext from an optional telemetryTrace\r\n * @param telemetryTrace - The telemetryTrace instance that is being wrapped\r\n * @param parentCtx - An optional parent distributed trace instance, almost always undefined as this scenario is only used in the case of multiple property handlers.\r\n * @returns A new IDistributedTraceContext instance that is backed by the telemetryTrace or temporary object\r\n */\r\nexport function createDistributedTraceContextFromTrace(telemetryTrace, parentCtx) {\r\n    var trace = telemetryTrace || {};\r\n    return {\r\n        getName: function () {\r\n            return trace[_DYN_NAME /* @min:%2ename */];\r\n        },\r\n        setName: function (newValue) {\r\n            parentCtx && parentCtx.setName(newValue);\r\n            trace[_DYN_NAME /* @min:%2ename */] = newValue;\r\n        },\r\n        getTraceId: function () {\r\n            return trace.traceID;\r\n        },\r\n        setTraceId: function (newValue) {\r\n            parentCtx && parentCtx.setTraceId(newValue);\r\n            if (isValidTraceId(newValue)) {\r\n                trace.traceID = newValue;\r\n            }\r\n        },\r\n        getSpanId: function () {\r\n            return trace.parentID;\r\n        },\r\n        setSpanId: function (newValue) {\r\n            parentCtx && parentCtx.setSpanId(newValue);\r\n            if (isValidSpanId(newValue)) {\r\n                trace.parentID = newValue;\r\n            }\r\n        },\r\n        getTraceFlags: function () {\r\n            return trace.traceFlags;\r\n        },\r\n        setTraceFlags: function (newTraceFlags) {\r\n            parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n            trace.traceFlags = newTraceFlags;\r\n        }\r\n    };\r\n}\r\n//# sourceMappingURL=Util.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { AjaxHelperParseDependencyPath } from \"../Util\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar RemoteDependencyData = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the RemoteDependencyData object\r\n     */\r\n    function RemoteDependencyData(logger, id, absoluteUrl, commandName, value, success, resultCode, method, requestAPI, correlationContext, properties, measurements) {\r\n        if (requestAPI === void 0) { requestAPI = \"Ajax\"; }\r\n        this.aiDataContract = {\r\n            id: 1 /* FieldType.Required */,\r\n            ver: 1 /* FieldType.Required */,\r\n            name: 0 /* FieldType.Default */,\r\n            resultCode: 0 /* FieldType.Default */,\r\n            duration: 0 /* FieldType.Default */,\r\n            success: 0 /* FieldType.Default */,\r\n            data: 0 /* FieldType.Default */,\r\n            target: 0 /* FieldType.Default */,\r\n            type: 0 /* FieldType.Default */,\r\n            properties: 0 /* FieldType.Default */,\r\n            measurements: 0 /* FieldType.Default */,\r\n            kind: 0 /* FieldType.Default */,\r\n            value: 0 /* FieldType.Default */,\r\n            count: 0 /* FieldType.Default */,\r\n            min: 0 /* FieldType.Default */,\r\n            max: 0 /* FieldType.Default */,\r\n            stdDev: 0 /* FieldType.Default */,\r\n            dependencyKind: 0 /* FieldType.Default */,\r\n            dependencySource: 0 /* FieldType.Default */,\r\n            commandName: 0 /* FieldType.Default */,\r\n            dependencyTypeName: 0 /* FieldType.Default */\r\n        };\r\n        var _self = this;\r\n        _self.ver = 2;\r\n        _self.id = id;\r\n        _self[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(value);\r\n        _self.success = success;\r\n        _self.resultCode = resultCode + \"\";\r\n        _self.type = dataSanitizeString(logger, requestAPI);\r\n        var dependencyFields = AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName);\r\n        _self.data = dataSanitizeUrl(logger, commandName) || dependencyFields.data; // get a value from hosturl if commandName not available\r\n        _self.target = dataSanitizeString(logger, dependencyFields.target);\r\n        if (correlationContext) {\r\n            _self.target = \"\".concat(_self.target, \" | \").concat(correlationContext);\r\n        }\r\n        _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, dependencyFields[_DYN_NAME /* @min:%2ename */]);\r\n        _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n        _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n    }\r\n    RemoteDependencyData.envelopeType = \"Microsoft.ApplicationInsights.{0}.RemoteDependency\";\r\n    RemoteDependencyData.dataType = \"RemoteDependencyData\";\r\n    return RemoteDependencyData;\r\n}());\r\nexport { RemoteDependencyData };\r\n//# sourceMappingURL=RemoteDependencyData.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nvar _a, _b;\r\nimport { arrForEach, arrIndexOf, dumpObj, getDocument, getLazy, getNavigator, isArray, isFunction, isNullOrUndefined, isString, isTruthy, isUndefined, objForEachKey, strEndsWith, strIndexOf, strLeft, strSubstring, strTrim, utcNow } from \"@nevware21/ts-utils\";\r\nimport { cfgDfMerge } from \"../Config/ConfigDefaultHelpers\";\r\nimport { createDynamicConfig, onConfigChange } from \"../Config/DynamicConfig\";\r\nimport { _DYN_ENABLED, _DYN_LENGTH, _DYN_LOGGER, _DYN_PROTOCOL, _DYN_SET_DF, _DYN_SPLIT, _DYN_UNLOAD, _DYN_USER_AGENT } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { getLocation, isIE } from \"./EnvUtils\";\r\nimport { getExceptionName, isNotNullOrUndefined, setValue, strContains } from \"./HelperFuncs\";\r\nimport { STR_DOMAIN, STR_EMPTY, STR_PATH, UNDEFINED_VALUE } from \"./InternalConstants\";\r\nvar strToGMTString = \"toGMTString\";\r\nvar strToUTCString = \"toUTCString\";\r\nvar strCookie = \"cookie\";\r\nvar strExpires = \"expires\";\r\nvar strIsCookieUseDisabled = \"isCookieUseDisabled\";\r\nvar strDisableCookiesUsage = \"disableCookiesUsage\";\r\nvar strConfigCookieMgr = \"_ckMgr\";\r\nvar _supportsCookies = null;\r\nvar _allowUaSameSite = null;\r\nvar _parsedCookieValue = null;\r\nvar _doc;\r\nvar _cookieCache = {};\r\nvar _globalCookieConfig = {};\r\n// // `isCookieUseDisabled` is deprecated, so explicitly casting as a key of IConfiguration to avoid typing error\r\n// // when both isCookieUseDisabled and disableCookiesUsage are used disableCookiesUsage will take precedent, which is\r\n// // why its listed first\r\n/**\r\n * Set the supported dynamic config values as undefined (or an empty object) so that\r\n * any listeners will be informed of any changes.\r\n * Explicitly NOT including the deprecated `isCookieUseDisabled` as we don't want to support\r\n * the v1 deprecated field as dynamic for updates\r\n */\r\nvar rootDefaultConfig = (_a = {\r\n        cookieCfg: cfgDfMerge((_b = {},\r\n            _b[STR_DOMAIN] = { fb: \"cookieDomain\", dfVal: isNotNullOrUndefined },\r\n            _b.path = { fb: \"cookiePath\", dfVal: isNotNullOrUndefined },\r\n            _b.enabled = UNDEFINED_VALUE,\r\n            _b.ignoreCookies = UNDEFINED_VALUE,\r\n            _b.blockedCookies = UNDEFINED_VALUE,\r\n            _b)),\r\n        cookieDomain: UNDEFINED_VALUE,\r\n        cookiePath: UNDEFINED_VALUE\r\n    },\r\n    _a[strDisableCookiesUsage] = UNDEFINED_VALUE,\r\n    _a);\r\nfunction _getDoc() {\r\n    !_doc && (_doc = getLazy(function () { return getDocument(); }));\r\n}\r\n/**\r\n * @ignore\r\n * DO NOT USE or export from the module, this is exposed as public to support backward compatibility of previous static utility methods only.\r\n * If you want to manager cookies either use the ICookieMgr available from the core instance via getCookieMgr() or create\r\n * your own instance of the CookieMgr and use that.\r\n * Using this directly for enabling / disabling cookie handling will not only affect your usage but EVERY user of cookies.\r\n * Example, if you are using a shared component that is also using Application Insights you will affect their cookie handling.\r\n * @param logger - The DiagnosticLogger to use for reporting errors.\r\n */\r\nfunction _gblCookieMgr(config, logger) {\r\n    // Stash the global instance against the BaseCookieMgr class\r\n    var inst = createCookieMgr[strConfigCookieMgr] || _globalCookieConfig[strConfigCookieMgr];\r\n    if (!inst) {\r\n        // Note: not using the getSetValue() helper as that would require always creating a temporary cookieMgr\r\n        // that ultimately is never used\r\n        inst = createCookieMgr[strConfigCookieMgr] = createCookieMgr(config, logger);\r\n        _globalCookieConfig[strConfigCookieMgr] = inst;\r\n    }\r\n    return inst;\r\n}\r\nfunction _isMgrEnabled(cookieMgr) {\r\n    if (cookieMgr) {\r\n        return cookieMgr.isEnabled();\r\n    }\r\n    return true;\r\n}\r\nfunction _isIgnoredCookie(cookieMgrCfg, name) {\r\n    if (name && cookieMgrCfg && isArray(cookieMgrCfg.ignoreCookies)) {\r\n        return arrIndexOf(cookieMgrCfg.ignoreCookies, name) !== -1;\r\n    }\r\n    return false;\r\n}\r\nfunction _isBlockedCookie(cookieMgrCfg, name) {\r\n    if (name && cookieMgrCfg && isArray(cookieMgrCfg.blockedCookies)) {\r\n        if (arrIndexOf(cookieMgrCfg.blockedCookies, name) !== -1) {\r\n            return true;\r\n        }\r\n    }\r\n    return _isIgnoredCookie(cookieMgrCfg, name);\r\n}\r\nfunction _isCfgEnabled(rootConfig, cookieMgrConfig) {\r\n    var isCfgEnabled = cookieMgrConfig[_DYN_ENABLED /* @min:%2eenabled */];\r\n    if (isNullOrUndefined(isCfgEnabled)) {\r\n        // Set the enabled from the provided setting or the legacy root values\r\n        var cookieEnabled = void 0;\r\n        // This field is deprecated and dynamic updates will not be fully supported\r\n        if (!isUndefined(rootConfig[strIsCookieUseDisabled])) {\r\n            cookieEnabled = !rootConfig[strIsCookieUseDisabled];\r\n        }\r\n        // If this value is defined it takes precedent over the above\r\n        if (!isUndefined(rootConfig[strDisableCookiesUsage])) {\r\n            cookieEnabled = !rootConfig[strDisableCookiesUsage];\r\n        }\r\n        // Not setting the cookieMgrConfig.enabled as that will update (set) the global dynamic config\r\n        // So future \"updates\" then may not be as expected\r\n        isCfgEnabled = cookieEnabled;\r\n    }\r\n    return isCfgEnabled;\r\n}\r\n/**\r\n * Helper to return the ICookieMgr from the core (if not null/undefined) or a default implementation\r\n * associated with the configuration or a legacy default.\r\n * @param core\r\n * @param config\r\n * @returns\r\n */\r\nexport function safeGetCookieMgr(core, config) {\r\n    var cookieMgr;\r\n    if (core) {\r\n        // Always returns an instance\r\n        cookieMgr = core.getCookieMgr();\r\n    }\r\n    else if (config) {\r\n        var cookieCfg = config.cookieCfg;\r\n        if (cookieCfg && cookieCfg[strConfigCookieMgr]) {\r\n            cookieMgr = cookieCfg[strConfigCookieMgr];\r\n        }\r\n        else {\r\n            cookieMgr = createCookieMgr(config);\r\n        }\r\n    }\r\n    if (!cookieMgr) {\r\n        // Get or initialize the default global (legacy) cookie manager if we couldn't find one\r\n        cookieMgr = _gblCookieMgr(config, (core || {})[_DYN_LOGGER /* @min:%2elogger */]);\r\n    }\r\n    return cookieMgr;\r\n}\r\nexport function createCookieMgr(rootConfig, logger) {\r\n    var _a;\r\n    var cookieMgrConfig;\r\n    var _path;\r\n    var _domain;\r\n    var unloadHandler;\r\n    // Explicitly checking against false, so that setting to undefined will === true\r\n    var _enabled;\r\n    var _getCookieFn;\r\n    var _setCookieFn;\r\n    var _delCookieFn;\r\n    // Make sure the root config is dynamic as it may be the global config\r\n    rootConfig = createDynamicConfig(rootConfig || _globalCookieConfig, null, logger).cfg;\r\n    // Will get recalled if the referenced configuration is changed\r\n    unloadHandler = onConfigChange(rootConfig, function (details) {\r\n        // Make sure the root config has all of the the defaults to the root config to ensure they are dynamic\r\n        details[_DYN_SET_DF /* @min:%2esetDf */](details.cfg, rootDefaultConfig);\r\n        // Create and apply the defaults to the cookieCfg element\r\n        cookieMgrConfig = details.ref(details.cfg, \"cookieCfg\"); // details.setDf(details.cfg.cookieCfg, defaultConfig);\r\n        _path = cookieMgrConfig[STR_PATH /* @min:%2epath */] || \"/\";\r\n        _domain = cookieMgrConfig[STR_DOMAIN /* @min:%2edomain */];\r\n        // Explicitly checking against false, so that setting to undefined will === true\r\n        _enabled = _isCfgEnabled(rootConfig, cookieMgrConfig) !== false;\r\n        _getCookieFn = cookieMgrConfig.getCookie || _getCookieValue;\r\n        _setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;\r\n        _delCookieFn = cookieMgrConfig.delCookie || _setCookieValue;\r\n    }, logger);\r\n    var cookieMgr = (_a = {\r\n            isEnabled: function () {\r\n                var enabled = _isCfgEnabled(rootConfig, cookieMgrConfig) !== false && _enabled && areCookiesSupported(logger);\r\n                // Using an indirect lookup for any global cookie manager to support tree shaking for SDK's\r\n                // that don't use the \"applicationinsights-core\" version of the default cookie function\r\n                var gblManager = _globalCookieConfig[strConfigCookieMgr];\r\n                if (enabled && gblManager && cookieMgr !== gblManager) {\r\n                    // Make sure the GlobalCookie Manager instance (if not this instance) is also enabled.\r\n                    // As the global (deprecated) functions may have been called (for backward compatibility)\r\n                    enabled = _isMgrEnabled(gblManager);\r\n                }\r\n                return enabled;\r\n            },\r\n            setEnabled: function (value) {\r\n                // Explicitly checking against false, so that setting to undefined will === true\r\n                _enabled = value !== false;\r\n                cookieMgrConfig[_DYN_ENABLED /* @min:%2eenabled */] = value;\r\n            },\r\n            set: function (name, value, maxAgeSec, domain, path) {\r\n                var result = false;\r\n                if (_isMgrEnabled(cookieMgr) && !_isBlockedCookie(cookieMgrConfig, name)) {\r\n                    var values = {};\r\n                    var theValue = strTrim(value || STR_EMPTY);\r\n                    var idx = strIndexOf(theValue, \";\");\r\n                    if (idx !== -1) {\r\n                        theValue = strTrim(strLeft(value, idx));\r\n                        values = _extractParts(strSubstring(value, idx + 1));\r\n                    }\r\n                    // Only update domain if not already present (isUndefined) and the value is truthy (not null, undefined or empty string)\r\n                    setValue(values, STR_DOMAIN, domain || _domain, isTruthy, isUndefined);\r\n                    if (!isNullOrUndefined(maxAgeSec)) {\r\n                        var _isIE = isIE();\r\n                        if (isUndefined(values[strExpires])) {\r\n                            var nowMs = utcNow();\r\n                            // Only add expires if not already present\r\n                            var expireMs = nowMs + (maxAgeSec * 1000);\r\n                            // Sanity check, if zero or -ve then ignore\r\n                            if (expireMs > 0) {\r\n                                var expiry = new Date();\r\n                                expiry.setTime(expireMs);\r\n                                setValue(values, strExpires, _formatDate(expiry, !_isIE ? strToUTCString : strToGMTString) || _formatDate(expiry, _isIE ? strToGMTString : strToUTCString) || STR_EMPTY, isTruthy);\r\n                            }\r\n                        }\r\n                        if (!_isIE) {\r\n                            // Only replace if not already present\r\n                            setValue(values, \"max-age\", STR_EMPTY + maxAgeSec, null, isUndefined);\r\n                        }\r\n                    }\r\n                    var location_1 = getLocation();\r\n                    if (location_1 && location_1[_DYN_PROTOCOL /* @min:%2eprotocol */] === \"https:\") {\r\n                        setValue(values, \"secure\", null, null, isUndefined);\r\n                        // Only set same site if not also secure\r\n                        if (_allowUaSameSite === null) {\r\n                            _allowUaSameSite = !uaDisallowsSameSiteNone((getNavigator() || {})[_DYN_USER_AGENT /* @min:%2euserAgent */]);\r\n                        }\r\n                        if (_allowUaSameSite) {\r\n                            setValue(values, \"SameSite\", \"None\", null, isUndefined);\r\n                        }\r\n                    }\r\n                    setValue(values, STR_PATH, path || _path, null, isUndefined);\r\n                    //let setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;\r\n                    _setCookieFn(name, _formatCookieValue(theValue, values));\r\n                    result = true;\r\n                }\r\n                return result;\r\n            },\r\n            get: function (name) {\r\n                var value = STR_EMPTY;\r\n                if (_isMgrEnabled(cookieMgr) && !_isIgnoredCookie(cookieMgrConfig, name)) {\r\n                    value = _getCookieFn(name);\r\n                }\r\n                return value;\r\n            },\r\n            del: function (name, path) {\r\n                var result = false;\r\n                if (_isMgrEnabled(cookieMgr)) {\r\n                    // Only remove the cookie if the manager and cookie support has not been disabled\r\n                    result = cookieMgr.purge(name, path);\r\n                }\r\n                return result;\r\n            },\r\n            purge: function (name, path) {\r\n                var _a;\r\n                var result = false;\r\n                if (areCookiesSupported(logger)) {\r\n                    // Setting the expiration date in the past immediately removes the cookie\r\n                    var values = (_a = {},\r\n                        _a[STR_PATH] = path ? path : \"/\",\r\n                        _a[strExpires] = \"Thu, 01 Jan 1970 00:00:01 GMT\",\r\n                        _a);\r\n                    if (!isIE()) {\r\n                        // Set max age to expire now\r\n                        values[\"max-age\"] = \"0\";\r\n                    }\r\n                    // let delCookie = cookieMgrConfig.delCookie || _setCookieValue;\r\n                    _delCookieFn(name, _formatCookieValue(STR_EMPTY, values));\r\n                    result = true;\r\n                }\r\n                return result;\r\n            }\r\n        },\r\n        _a[_DYN_UNLOAD /* @min:unload */] = function (isAsync) {\r\n            unloadHandler && unloadHandler.rm();\r\n            unloadHandler = null;\r\n        },\r\n        _a);\r\n    // Associated this cookie manager with the config\r\n    cookieMgr[strConfigCookieMgr] = cookieMgr;\r\n    return cookieMgr;\r\n}\r\n/*\r\n* Helper method to tell if document.cookie object is supported by the runtime\r\n*/\r\nexport function areCookiesSupported(logger) {\r\n    if (_supportsCookies === null) {\r\n        _supportsCookies = false;\r\n        !_doc && _getDoc();\r\n        try {\r\n            var doc = _doc.v || {};\r\n            _supportsCookies = doc[strCookie] !== undefined;\r\n        }\r\n        catch (e) {\r\n            _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 68 /* _eInternalMessageId.CannotAccessCookie */, \"Cannot access document.cookie - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n        }\r\n    }\r\n    return _supportsCookies;\r\n}\r\nfunction _extractParts(theValue) {\r\n    var values = {};\r\n    if (theValue && theValue[_DYN_LENGTH /* @min:%2elength */]) {\r\n        var parts = strTrim(theValue)[_DYN_SPLIT /* @min:%2esplit */](\";\");\r\n        arrForEach(parts, function (thePart) {\r\n            thePart = strTrim(thePart || STR_EMPTY);\r\n            if (thePart) {\r\n                var idx = strIndexOf(thePart, \"=\");\r\n                if (idx === -1) {\r\n                    values[thePart] = null;\r\n                }\r\n                else {\r\n                    values[strTrim(strLeft(thePart, idx))] = strTrim(strSubstring(thePart, idx + 1));\r\n                }\r\n            }\r\n        });\r\n    }\r\n    return values;\r\n}\r\nfunction _formatDate(theDate, func) {\r\n    if (isFunction(theDate[func])) {\r\n        return theDate[func]();\r\n    }\r\n    return null;\r\n}\r\nfunction _formatCookieValue(value, values) {\r\n    var cookieValue = value || STR_EMPTY;\r\n    objForEachKey(values, function (name, theValue) {\r\n        cookieValue += \"; \" + name + (!isNullOrUndefined(theValue) ? \"=\" + theValue : STR_EMPTY);\r\n    });\r\n    return cookieValue;\r\n}\r\nfunction _getCookieValue(name) {\r\n    var cookieValue = STR_EMPTY;\r\n    !_doc && _getDoc();\r\n    if (_doc.v) {\r\n        var theCookie = _doc.v[strCookie] || STR_EMPTY;\r\n        if (_parsedCookieValue !== theCookie) {\r\n            _cookieCache = _extractParts(theCookie);\r\n            _parsedCookieValue = theCookie;\r\n        }\r\n        cookieValue = strTrim(_cookieCache[name] || STR_EMPTY);\r\n    }\r\n    return cookieValue;\r\n}\r\nfunction _setCookieValue(name, cookieValue) {\r\n    !_doc && _getDoc();\r\n    if (_doc.v) {\r\n        _doc.v[strCookie] = name + \"=\" + cookieValue;\r\n    }\r\n}\r\nexport function uaDisallowsSameSiteNone(userAgent) {\r\n    if (!isString(userAgent)) {\r\n        return false;\r\n    }\r\n    // Cover all iOS based browsers here. This includes:\r\n    // - Safari on iOS 12 for iPhone, iPod Touch, iPad\r\n    // - WkWebview on iOS 12 for iPhone, iPod Touch, iPad\r\n    // - Chrome on iOS 12 for iPhone, iPod Touch, iPad\r\n    // All of which are broken by SameSite=None, because they use the iOS networking stack\r\n    if (strContains(userAgent, \"CPU iPhone OS 12\") || strContains(userAgent, \"iPad; CPU OS 12\")) {\r\n        return true;\r\n    }\r\n    // Cover Mac OS X based browsers that use the Mac OS networking stack. This includes:\r\n    // - Safari on Mac OS X\r\n    // This does not include:\r\n    // - Internal browser on Mac OS X\r\n    // - Chrome on Mac OS X\r\n    // - Chromium on Mac OS X\r\n    // Because they do not use the Mac OS networking stack.\r\n    if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strContains(userAgent, \"Version/\") && strContains(userAgent, \"Safari\")) {\r\n        return true;\r\n    }\r\n    // Cover Mac OS X internal browsers that use the Mac OS networking stack. This includes:\r\n    // - Internal browser on Mac OS X\r\n    // This does not include:\r\n    // - Safari on Mac OS X\r\n    // - Chrome on Mac OS X\r\n    // - Chromium on Mac OS X\r\n    // Because they do not use the Mac OS networking stack.\r\n    if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strEndsWith(userAgent, \"AppleWebKit/605.1.15 (KHTML, like Gecko)\")) {\r\n        return true;\r\n    }\r\n    // Cover Chrome 50-69, because some versions are broken by SameSite=None, and none in this range require it.\r\n    // Note: this covers some pre-Chromium Edge versions, but pre-Chromim Edge does not require SameSite=None, so this is fine.\r\n    // Note: this regex applies to Windows, Mac OS X, and Linux, deliberately.\r\n    if (strContains(userAgent, \"Chrome/5\") || strContains(userAgent, \"Chrome/6\")) {\r\n        return true;\r\n    }\r\n    // Unreal Engine runs Chromium 59, but does not advertise as Chrome until 4.23. Treat versions of Unreal\r\n    // that don't specify their Chrome version as lacking support for SameSite=None.\r\n    if (strContains(userAgent, \"UnrealEngine\") && !strContains(userAgent, \"Chrome\")) {\r\n        return true;\r\n    }\r\n    // UCBrowser < 12.13.2 ignores Set-Cookie headers with SameSite=None\r\n    // NB: this rule isn't complete - you need regex to make a complete rule.\r\n    // See: https://www.chromium.org/updates/same-site/incompatible-clients\r\n    if (strContains(userAgent, \"UCBrowser/12\") || strContains(userAgent, \"UCBrowser/11\")) {\r\n        return true;\r\n    }\r\n    return false;\r\n}\r\n//# sourceMappingURL=CookieMgr.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getDocument, isFunction } from \"@microsoft/applicationinsights-core-js\";\r\nexport function createDomEvent(eventName) {\r\n    var event = null;\r\n    if (isFunction(Event)) { // Use Event constructor when available\r\n        event = new Event(eventName);\r\n    }\r\n    else { // Event has no constructor in IE\r\n        var doc = getDocument();\r\n        if (doc && doc.createEvent) {\r\n            event = doc.createEvent(\"Event\");\r\n            event.initEvent(eventName, true, true);\r\n        }\r\n    }\r\n    return event;\r\n}\r\n//# sourceMappingURL=DomHelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { asString, isBoolean, isFunction, isNullOrUndefined, isString } from \"@nevware21/ts-utils\";\r\nimport { STR_EMPTY } from \"../JavaScriptSDK/InternalConstants\";\r\nimport { _DYN_BLK_VAL, _DYN_TO_LOWER_CASE } from \"../__DynamicConstants\";\r\n/**\r\n * @internal\r\n * @ignore\r\n * @param str\r\n * @param defaultValue\r\n * @returns\r\n */\r\nfunction _stringToBoolOrDefault(theValue, defaultValue, theConfig) {\r\n    if (!theValue && isNullOrUndefined(theValue)) {\r\n        return defaultValue;\r\n    }\r\n    if (isBoolean(theValue)) {\r\n        return theValue;\r\n    }\r\n    return asString(theValue)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === \"true\";\r\n}\r\n/**\r\n * Helper which returns an IConfigDefaultCheck instance with the field defined as an object\r\n * that should be merged\r\n * @param defaultValue - The default value to apply it not provided or it's not valid\r\n * @returns a new IConfigDefaultCheck structure\r\n */\r\nexport function cfgDfMerge(defaultValue) {\r\n    return {\r\n        mrg: true,\r\n        v: defaultValue\r\n    };\r\n}\r\n/**\r\n * Helper which returns an IConfigDefaultCheck instance with the provided field set function\r\n * @param setter - The IConfigCheckFn function to validate the user provided value\r\n * @param defaultValue - The default value to apply it not provided or it's not valid\r\n * @returns a new IConfigDefaultCheck structure\r\n */\r\nexport function cfgDfSet(setter, defaultValue) {\r\n    return {\r\n        set: setter,\r\n        v: defaultValue\r\n    };\r\n}\r\n/**\r\n * Helper which returns an IConfigDefaultCheck instance with the provided field validator\r\n * @param validator - The IConfigCheckFn function to validate the user provided value\r\n * @param defaultValue - The default value to apply it not provided or it's not valid\r\n * @param fallBackName - The fallback configuration name if the current value is not available\r\n * @returns a new IConfigDefaultCheck structure\r\n */\r\nexport function cfgDfValidate(validator, defaultValue, fallBackName) {\r\n    return {\r\n        fb: fallBackName,\r\n        isVal: validator,\r\n        v: defaultValue\r\n    };\r\n}\r\n/**\r\n * Helper which returns an IConfigDefaultCheck instance that will validate and convert the user\r\n * provided value to a boolean from a string or boolean value\r\n * @param defaultValue - The default value to apply it not provided or it's not valid\r\n * @param fallBackName - The fallback configuration name if the current value is not available\r\n * @returns a new IConfigDefaultCheck structure\r\n */\r\nexport function cfgDfBoolean(defaultValue, fallBackName) {\r\n    return {\r\n        fb: fallBackName,\r\n        set: _stringToBoolOrDefault,\r\n        v: !!defaultValue\r\n    };\r\n}\r\n/**\r\n * Helper which returns an IConfigDefaultCheck instance that will validate that the user\r\n * provided value is a function.\r\n * @param defaultValue - The default value to apply it not provided or it's not valid\r\n * @returns a new IConfigDefaultCheck structure\r\n */\r\nexport function cfgDfFunc(defaultValue) {\r\n    return {\r\n        isVal: isFunction,\r\n        v: defaultValue || null\r\n    };\r\n}\r\n/**\r\n * Helper which returns an IConfigDefaultCheck instance that will validate that the user\r\n * provided value is a function.\r\n * @param defaultValue - The default string value to apply it not provided or it's not valid, defaults to an empty string\r\n * @returns a new IConfigDefaultCheck structure\r\n */\r\nexport function cfgDfString(defaultValue) {\r\n    return {\r\n        isVal: isString,\r\n        v: asString(defaultValue || STR_EMPTY)\r\n    };\r\n}\r\n/**\r\n * Helper which returns an IConfigDefaultCheck instance identifying that value associated with this property\r\n * should not have it's properties converted into a dynamic config properties.\r\n * @param defaultValue - The default value to apply it not provided or it's not valid\r\n * @returns a new IConfigDefaultCheck structure\r\n */\r\nexport function cfgDfBlockPropValue(defaultValue) {\r\n    var _a;\r\n    return _a = {},\r\n        _a[_DYN_BLK_VAL /* @min:blkVal */] = true,\r\n        _a.v = defaultValue,\r\n        _a;\r\n}\r\n//# sourceMappingURL=ConfigDefaultHelpers.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, arrIndexOf, getDocument, getWindow, isArray, objForEachKey, objKeys } from \"@nevware21/ts-utils\";\r\nimport { _DYN_HANDLER, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_REPLACE, _DYN_SPLICE, _DYN_SPLIT, _DYN_TYPE } from \"../__DynamicConstants\";\r\nimport { createElmNodeData, createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// Added to help with minfication\r\nvar strOnPrefix = \"on\";\r\nvar strAttachEvent = \"attachEvent\";\r\nvar strAddEventHelper = \"addEventListener\";\r\nvar strDetachEvent = \"detachEvent\";\r\nvar strRemoveEventListener = \"removeEventListener\";\r\nvar strEvents = \"events\";\r\nvar strVisibilityChangeEvt = \"visibilitychange\";\r\nvar strPageHide = \"pagehide\";\r\nvar strPageShow = \"pageshow\";\r\nvar strUnload = \"unload\";\r\nvar strBeforeUnload = \"beforeunload\";\r\nvar strPageHideNamespace = createUniqueNamespace(\"aiEvtPageHide\");\r\nvar strPageShowNamespace = createUniqueNamespace(\"aiEvtPageShow\");\r\nvar rRemoveEmptyNs = /\\.[\\.]+/g;\r\nvar rRemoveTrailingEmptyNs = /[\\.]+$/;\r\nvar _guid = 1;\r\nvar elmNodeData = createElmNodeData(\"events\");\r\nvar eventNamespace = /^([^.]*)(?:\\.(.+)|)/;\r\nfunction _normalizeNamespace(name) {\r\n    if (name && name[_DYN_REPLACE /* @min:%2ereplace */]) {\r\n        return name[_DYN_REPLACE /* @min:%2ereplace */](/^[\\s\\.]+|(?=[\\s\\.])[\\.\\s]+$/g, STR_EMPTY);\r\n    }\r\n    return name;\r\n}\r\nfunction _getEvtNamespace(eventName, evtNamespace) {\r\n    var _a;\r\n    if (evtNamespace) {\r\n        var theNamespace_1 = STR_EMPTY;\r\n        if (isArray(evtNamespace)) {\r\n            theNamespace_1 = STR_EMPTY;\r\n            arrForEach(evtNamespace, function (name) {\r\n                name = _normalizeNamespace(name);\r\n                if (name) {\r\n                    if (name[0] !== \".\") {\r\n                        name = \".\" + name;\r\n                    }\r\n                    theNamespace_1 += name;\r\n                }\r\n            });\r\n        }\r\n        else {\r\n            theNamespace_1 = _normalizeNamespace(evtNamespace);\r\n        }\r\n        if (theNamespace_1) {\r\n            if (theNamespace_1[0] !== \".\") {\r\n                theNamespace_1 = \".\" + theNamespace_1;\r\n            }\r\n            // We may only have the namespace and not an eventName\r\n            eventName = (eventName || STR_EMPTY) + theNamespace_1;\r\n        }\r\n    }\r\n    var parsedEvent = (eventNamespace.exec(eventName || STR_EMPTY) || []);\r\n    return _a = {},\r\n        _a[_DYN_TYPE /* @min:type */] = parsedEvent[1],\r\n        _a.ns = ((parsedEvent[2] || STR_EMPTY).replace(rRemoveEmptyNs, \".\").replace(rRemoveTrailingEmptyNs, STR_EMPTY)[_DYN_SPLIT /* @min:%2esplit */](\".\").sort()).join(\".\"),\r\n        _a;\r\n}\r\n/**\r\n * Get all of the registered events on the target object, this is primarily used for testing cleanup but may also be used by\r\n * applications to remove their own events\r\n * @param target - The EventTarget that has registered events\r\n * @param eventName - [Optional] The name of the event to return the registered handlers and full name (with namespaces)\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n */\r\nexport function __getRegisteredEvents(target, eventName, evtNamespace) {\r\n    var theEvents = [];\r\n    var eventCache = elmNodeData.get(target, strEvents, {}, false);\r\n    var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n    objForEachKey(eventCache, function (evtType, registeredEvents) {\r\n        arrForEach(registeredEvents, function (value) {\r\n            var _a;\r\n            if (!evtName[_DYN_TYPE /* @min:%2etype */] || evtName[_DYN_TYPE /* @min:%2etype */] === value.evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n                if (!evtName.ns || evtName.ns === evtName.ns) {\r\n                    theEvents[_DYN_PUSH /* @min:%2epush */]((_a = {},\r\n                        _a[_DYN_NAME /* @min:name */] = value.evtName[_DYN_TYPE /* @min:%2etype */] + (value.evtName.ns ? \".\" + value.evtName.ns : STR_EMPTY),\r\n                        _a.handler = value[_DYN_HANDLER /* @min:%2ehandler */],\r\n                        _a));\r\n                }\r\n            }\r\n        });\r\n    });\r\n    return theEvents;\r\n}\r\n// Exported for internal unit testing only\r\nfunction _getRegisteredEvents(target, evtName, addDefault) {\r\n    if (addDefault === void 0) { addDefault = true; }\r\n    var aiEvts = elmNodeData.get(target, strEvents, {}, addDefault);\r\n    var registeredEvents = aiEvts[evtName];\r\n    if (!registeredEvents) {\r\n        registeredEvents = aiEvts[evtName] = [];\r\n    }\r\n    return registeredEvents;\r\n}\r\nfunction _doDetach(obj, evtName, handlerRef, useCapture) {\r\n    if (obj && evtName && evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n        if (obj[strRemoveEventListener]) {\r\n            obj[strRemoveEventListener](evtName[_DYN_TYPE /* @min:%2etype */], handlerRef, useCapture);\r\n        }\r\n        else if (obj[strDetachEvent]) {\r\n            obj[strDetachEvent](strOnPrefix + evtName[_DYN_TYPE /* @min:%2etype */], handlerRef);\r\n        }\r\n    }\r\n}\r\nfunction _doAttach(obj, evtName, handlerRef, useCapture) {\r\n    var result = false;\r\n    if (obj && evtName && evtName[_DYN_TYPE /* @min:%2etype */] && handlerRef) {\r\n        if (obj[strAddEventHelper]) {\r\n            // all browsers except IE before version 9\r\n            obj[strAddEventHelper](evtName[_DYN_TYPE /* @min:%2etype */], handlerRef, useCapture);\r\n            result = true;\r\n        }\r\n        else if (obj[strAttachEvent]) {\r\n            // IE before version 9\r\n            obj[strAttachEvent](strOnPrefix + evtName[_DYN_TYPE /* @min:%2etype */], handlerRef);\r\n            result = true;\r\n        }\r\n    }\r\n    return result;\r\n}\r\nfunction _doUnregister(target, events, evtName, unRegFn) {\r\n    var idx = events[_DYN_LENGTH /* @min:%2elength */];\r\n    while (idx--) {\r\n        var theEvent = events[idx];\r\n        if (theEvent) {\r\n            if (!evtName.ns || evtName.ns === theEvent.evtName.ns) {\r\n                if (!unRegFn || unRegFn(theEvent)) {\r\n                    _doDetach(target, theEvent.evtName, theEvent[_DYN_HANDLER /* @min:%2ehandler */], theEvent.capture);\r\n                    // Remove the registered event\r\n                    events[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\nfunction _unregisterEvents(target, evtName, unRegFn) {\r\n    if (evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n        _doUnregister(target, _getRegisteredEvents(target, evtName[_DYN_TYPE /* @min:%2etype */]), evtName, unRegFn);\r\n    }\r\n    else {\r\n        var eventCache = elmNodeData.get(target, strEvents, {});\r\n        objForEachKey(eventCache, function (evtType, events) {\r\n            _doUnregister(target, events, evtName, unRegFn);\r\n        });\r\n        // Cleanup\r\n        if (objKeys(eventCache)[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n            elmNodeData.kill(target, strEvents);\r\n        }\r\n    }\r\n}\r\nexport function mergeEvtNamespace(theNamespace, namespaces) {\r\n    var newNamespaces;\r\n    if (namespaces) {\r\n        if (isArray(namespaces)) {\r\n            newNamespaces = [theNamespace].concat(namespaces);\r\n        }\r\n        else {\r\n            newNamespaces = [theNamespace, namespaces];\r\n        }\r\n        // resort the namespaces so they are always in order\r\n        newNamespaces = (_getEvtNamespace(\"xx\", newNamespaces).ns)[_DYN_SPLIT /* @min:%2esplit */](\".\");\r\n    }\r\n    else {\r\n        newNamespaces = theNamespace;\r\n    }\r\n    return newNamespaces;\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj - Object to add the event too.\r\n * @param eventName - String that specifies any of the standard DHTML Events without \"on\" prefix, if may also include an optional (dot \".\" prefixed)\r\n * namespaces \"click\" \"click.mynamespace\" in addition to specific namespaces.\r\n * @param handlerRef - Pointer that specifies the function to call when event fires\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture - [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function eventOn(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n    var _a;\r\n    if (useCapture === void 0) { useCapture = false; }\r\n    var result = false;\r\n    if (target) {\r\n        try {\r\n            var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n            result = _doAttach(target, evtName, handlerRef, useCapture);\r\n            if (result && elmNodeData.accept(target)) {\r\n                var registeredEvent = (_a = {\r\n                        guid: _guid++,\r\n                        evtName: evtName\r\n                    },\r\n                    _a[_DYN_HANDLER /* @min:handler */] = handlerRef,\r\n                    _a.capture = useCapture,\r\n                    _a);\r\n                _getRegisteredEvents(target, evtName.type)[_DYN_PUSH /* @min:%2epush */](registeredEvent);\r\n            }\r\n        }\r\n        catch (e) {\r\n            // Just Ignore any error so that we don't break any execution path\r\n        }\r\n    }\r\n    return result;\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object - to remove the event from\r\n * @param eventName - {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef - {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture - [Optional] Defaults to false\r\n */\r\nexport function eventOff(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n    if (useCapture === void 0) { useCapture = false; }\r\n    if (target) {\r\n        try {\r\n            var evtName_1 = _getEvtNamespace(eventName, evtNamespace);\r\n            var found_1 = false;\r\n            _unregisterEvents(target, evtName_1, function (regEvent) {\r\n                if ((evtName_1.ns && !handlerRef) || regEvent[_DYN_HANDLER /* @min:%2ehandler */] === handlerRef) {\r\n                    found_1 = true;\r\n                    return true;\r\n                }\r\n                return false;\r\n            });\r\n            if (!found_1) {\r\n                // fallback to try and remove as requested\r\n                _doDetach(target, evtName_1, handlerRef, useCapture);\r\n            }\r\n        }\r\n        catch (e) {\r\n            // Just Ignore any error so that we don't break any execution path\r\n        }\r\n    }\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj - Object to add the event too.\r\n * @param eventNameWithoutOn - String that specifies any of the standard DHTML Events without \"on\" prefix and optional (dot \".\" prefixed) namespaces \"click\" \"click.mynamespace\".\r\n * @param handlerRef - Pointer that specifies the function to call when event fires\r\n * @param useCapture - [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n    if (useCapture === void 0) { useCapture = false; }\r\n    return eventOn(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object - to remove the event from\r\n * @param eventNameWithoutOn - {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef - {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param useCapture - [Optional] Defaults to false\r\n */\r\nexport function detachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n    if (useCapture === void 0) { useCapture = false; }\r\n    eventOff(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Trys to add an event handler for the specified event to the window, body and document\r\n * @param eventName - {string} - The name of the event\r\n * @param callback - {any} - The callback function that needs to be executed for the given event\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @return {boolean} - true if the handler was successfully added\r\n */\r\nexport function addEventHandler(eventName, callback, evtNamespace) {\r\n    var result = false;\r\n    var w = getWindow();\r\n    if (w) {\r\n        result = eventOn(w, eventName, callback, evtNamespace);\r\n        result = eventOn(w[\"body\"], eventName, callback, evtNamespace) || result;\r\n    }\r\n    var doc = getDocument();\r\n    if (doc) {\r\n        result = eventOn(doc, eventName, callback, evtNamespace) || result;\r\n    }\r\n    return result;\r\n}\r\n/**\r\n * Trys to remove event handler(s) for the specified event/namespace to the window, body and document\r\n * @param eventName - {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param callback - {any} - - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventHandler(eventName, callback, evtNamespace) {\r\n    var w = getWindow();\r\n    if (w) {\r\n        eventOff(w, eventName, callback, evtNamespace);\r\n        eventOff(w[\"body\"], eventName, callback, evtNamespace);\r\n    }\r\n    var doc = getDocument();\r\n    if (doc) {\r\n        eventOff(doc, eventName, callback, evtNamespace);\r\n    }\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events - An string array of event names to bind the listener to\r\n * @param listener - The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nfunction _addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n    var added = false;\r\n    if (listener && events && events[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n        arrForEach(events, function (name) {\r\n            if (name) {\r\n                if (!excludeEvents || arrIndexOf(excludeEvents, name) === -1) {\r\n                    added = addEventHandler(name, listener, evtNamespace) || added;\r\n                }\r\n            }\r\n        });\r\n    }\r\n    return added;\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events - An string array of event names to bind the listener to\r\n * @param listener - The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n    var added = false;\r\n    if (listener && events && isArray(events)) {\r\n        added = _addEventListeners(events, listener, excludeEvents, evtNamespace);\r\n        if (!added && excludeEvents && excludeEvents[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n            // Failed to add any listeners and we excluded some, so just attempt to add the excluded events\r\n            added = _addEventListeners(events, listener, null, evtNamespace);\r\n        }\r\n    }\r\n    return added;\r\n}\r\n/**\r\n * Remove the listener from the array of events\r\n * @param events - An string array of event names to bind the listener to\r\n * @param listener - The event callback to call when the event is triggered\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventListeners(events, listener, evtNamespace) {\r\n    if (events && isArray(events)) {\r\n        arrForEach(events, function (name) {\r\n            if (name) {\r\n                removeEventHandler(name, listener, evtNamespace);\r\n            }\r\n        });\r\n    }\r\n}\r\n/**\r\n * Listen to the 'beforeunload', 'unload' and 'pagehide' events which indicates a page unload is occurring,\r\n * this does NOT listen to the 'visibilitychange' event as while it does indicate that the page is being hidden\r\n * it does not *necessarily* mean that the page is being completely unloaded, it can mean that the user is\r\n * just navigating to a different Tab and may come back (without unloading the page). As such you may also\r\n * need to listen to the 'addPageHideEventListener' and 'addPageShowEventListener' events.\r\n * @param listener - The event callback to call when a page unload event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked, unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageUnloadEventListener(listener, excludeEvents, evtNamespace) {\r\n    // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n    // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n    return addEventListeners([strBeforeUnload, strUnload, strPageHide], listener, excludeEvents, evtNamespace);\r\n}\r\n/**\r\n * Remove any matching 'beforeunload', 'unload' and 'pagehide' events that may have been added via addEventListener,\r\n * addEventListeners, addPageUnloadEventListener or addPageHideEventListener.\r\n * @param listener - The specific event callback to to be removed\r\n * @param evtNamespace - [Optional] Namespace(s) uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function removePageUnloadEventListener(listener, evtNamespace) {\r\n    removeEventListeners([strBeforeUnload, strUnload, strPageHide], listener, evtNamespace);\r\n}\r\n/**\r\n * Listen to the pagehide and visibility changing to 'hidden' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page hide event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] A Namespace to append to the event listeners so they can be uniquely identified and removed\r\n * based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageHideEventListener\" can remove these events.\r\n * Suggestion: pass as true if you are also calling addPageUnloadEventListener as that also hooks pagehide\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageHideEventListener(listener, excludeEvents, evtNamespace) {\r\n    function _handlePageVisibility(evt) {\r\n        var doc = getDocument();\r\n        if (listener && doc && doc.visibilityState === \"hidden\") {\r\n            listener(evt);\r\n        }\r\n    }\r\n    // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pagehide\"\r\n    var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n    var pageUnloadAdded = _addEventListeners([strPageHide], listener, excludeEvents, newNamespaces);\r\n    if (!excludeEvents || arrIndexOf(excludeEvents, strVisibilityChangeEvt) === -1) {\r\n        pageUnloadAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageUnloadAdded;\r\n    }\r\n    if (!pageUnloadAdded && excludeEvents) {\r\n        // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n        pageUnloadAdded = addPageHideEventListener(listener, null, evtNamespace);\r\n    }\r\n    return pageUnloadAdded;\r\n}\r\n/**\r\n * Removes the pageHide event listeners added by addPageHideEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageHideEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageHideEventListener(listener, evtNamespace) {\r\n    // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pagehide\"\r\n    var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n    removeEventListeners([strPageHide], listener, newNamespaces);\r\n    removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n/**\r\n * Listen to the pageshow and visibility changing to 'visible' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page is show event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional/Recommended] A Namespace to append to the event listeners so they can be uniquely\r\n * identified and removed based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageShowEventListener\" can remove these events.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageShowEventListener(listener, excludeEvents, evtNamespace) {\r\n    function _handlePageVisibility(evt) {\r\n        var doc = getDocument();\r\n        if (listener && doc && doc.visibilityState === \"visible\") {\r\n            listener(evt);\r\n        }\r\n    }\r\n    // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pageshow\"\r\n    var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n    var pageShowAdded = _addEventListeners([strPageShow], listener, excludeEvents, newNamespaces);\r\n    pageShowAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageShowAdded;\r\n    if (!pageShowAdded && excludeEvents) {\r\n        // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n        pageShowAdded = addPageShowEventListener(listener, null, evtNamespace);\r\n    }\r\n    return pageShowAdded;\r\n}\r\n/**\r\n * Removes the pageShow event listeners added by addPageShowEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageShowEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageShowEventListener(listener, evtNamespace) {\r\n    // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pageshow\"\r\n    var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n    removeEventListeners([strPageShow], listener, newNamespaces);\r\n    removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n//# sourceMappingURL=EventHelpers.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { isArray, isFunction, objDefine, utcNow } from \"@nevware21/ts-utils\";\r\nimport { _DYN_COMPLETE, _DYN_GET_CTX, _DYN_IS_ASYNC, _DYN_IS_CHILD_EVT, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SET_CTX, _DYN_TIME } from \"../__DynamicConstants\";\r\nimport { STR_GET_PERF_MGR, STR_PERF_EVENT } from \"./InternalConstants\";\r\nvar strExecutionContextKey = \"ctx\";\r\nvar strParentContextKey = \"ParentContextKey\";\r\nvar strChildrenContextKey = \"ChildrenContextKey\";\r\nvar _defaultPerfManager = null;\r\nvar PerfEvent = /** @class */ (function () {\r\n    function PerfEvent(name, payloadDetails, isAsync) {\r\n        var _self = this;\r\n        _self.start = utcNow();\r\n        _self[_DYN_NAME /* @min:%2ename */] = name;\r\n        _self[_DYN_IS_ASYNC /* @min:%2eisAsync */] = isAsync;\r\n        _self[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */] = function () { return false; };\r\n        if (isFunction(payloadDetails)) {\r\n            // Create an accessor to minimize the potential performance impact of executing the payloadDetails callback\r\n            var theDetails_1;\r\n            objDefine(_self, \"payload\", {\r\n                g: function () {\r\n                    // Delay the execution of the payloadDetails until needed\r\n                    if (!theDetails_1 && isFunction(payloadDetails)) {\r\n                        theDetails_1 = payloadDetails();\r\n                        // clear it out now so the referenced objects can be garbage collected\r\n                        payloadDetails = null;\r\n                    }\r\n                    return theDetails_1;\r\n                }\r\n            });\r\n        }\r\n        _self[_DYN_GET_CTX /* @min:%2egetCtx */] = function (key) {\r\n            if (key) {\r\n                // The parent and child links are located directly on the object (for better viewing in the DebugPlugin)\r\n                if (key === PerfEvent[strParentContextKey] || key === PerfEvent[strChildrenContextKey]) {\r\n                    return _self[key];\r\n                }\r\n                return (_self[strExecutionContextKey] || {})[key];\r\n            }\r\n            return null;\r\n        };\r\n        _self[_DYN_SET_CTX /* @min:%2esetCtx */] = function (key, value) {\r\n            if (key) {\r\n                // Put the parent and child links directly on the object (for better viewing in the DebugPlugin)\r\n                if (key === PerfEvent[strParentContextKey]) {\r\n                    // Simple assumption, if we are setting a parent then we must be a child\r\n                    if (!_self[key]) {\r\n                        _self[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */] = function () { return true; };\r\n                    }\r\n                    _self[key] = value;\r\n                }\r\n                else if (key === PerfEvent[strChildrenContextKey]) {\r\n                    _self[key] = value;\r\n                }\r\n                else {\r\n                    var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n                    ctx[key] = value;\r\n                }\r\n            }\r\n        };\r\n        _self[_DYN_COMPLETE /* @min:%2ecomplete */] = function () {\r\n            var childTime = 0;\r\n            var childEvts = _self[_DYN_GET_CTX /* @min:%2egetCtx */](PerfEvent[strChildrenContextKey]);\r\n            if (isArray(childEvts)) {\r\n                for (var lp = 0; lp < childEvts[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n                    var childEvt = childEvts[lp];\r\n                    if (childEvt) {\r\n                        childTime += childEvt[_DYN_TIME /* @min:%2etime */];\r\n                    }\r\n                }\r\n            }\r\n            _self[_DYN_TIME /* @min:%2etime */] = utcNow() - _self.start;\r\n            _self.exTime = _self[_DYN_TIME /* @min:%2etime */] - childTime;\r\n            _self[_DYN_COMPLETE /* @min:%2ecomplete */] = function () { };\r\n        };\r\n    }\r\n    PerfEvent.ParentContextKey = \"parent\";\r\n    PerfEvent.ChildrenContextKey = \"childEvts\";\r\n    return PerfEvent;\r\n}());\r\nexport { PerfEvent };\r\nvar PerfManager = /** @class */ (function () {\r\n    function PerfManager(manager) {\r\n        /**\r\n         * General bucket used for execution context set and retrieved via setCtx() and getCtx.\r\n         * Defined as private so it can be visualized via the DebugPlugin\r\n         */\r\n        this.ctx = {};\r\n        dynamicProto(PerfManager, this, function (_self) {\r\n            _self.create = function (src, payloadDetails, isAsync) {\r\n                // TODO (@MSNev): at some point we will want to add additional configuration to \"select\" which events to instrument\r\n                // for now this is just a simple do everything.\r\n                return new PerfEvent(src, payloadDetails, isAsync);\r\n            };\r\n            _self.fire = function (perfEvent) {\r\n                if (perfEvent) {\r\n                    perfEvent[_DYN_COMPLETE /* @min:%2ecomplete */]();\r\n                    if (manager && isFunction(manager[STR_PERF_EVENT /* @min:%2eperfEvent */])) {\r\n                        manager[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent);\r\n                    }\r\n                }\r\n            };\r\n            _self[_DYN_SET_CTX /* @min:%2esetCtx */] = function (key, value) {\r\n                if (key) {\r\n                    var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n                    ctx[key] = value;\r\n                }\r\n            };\r\n            _self[_DYN_GET_CTX /* @min:%2egetCtx */] = function (key) {\r\n                return (_self[strExecutionContextKey] || {})[key];\r\n            };\r\n        });\r\n    }\r\n// Removed Stub for PerfManager.prototype.create.\r\n// Removed Stub for PerfManager.prototype.fire.\r\n// Removed Stub for PerfManager.prototype.setCtx.\r\n// Removed Stub for PerfManager.prototype.getCtx.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    PerfManager.__ieDyn=1;\n\n    return PerfManager;\r\n}());\r\nexport { PerfManager };\r\nvar doPerfActiveKey = \"CoreUtils.doPerf\";\r\n/**\r\n * Helper function to wrap a function with a perf event\r\n * @param mgrSource - The Performance Manager or a Performance provider source (may be null)\r\n * @param getSource - The callback to create the source name for the event (if perf monitoring is enabled)\r\n * @param func - The function to call and measure\r\n * @param details - A function to return the payload details\r\n * @param isAsync - Is the event / function being call asynchronously or synchronously\r\n */\r\nexport function doPerf(mgrSource, getSource, func, details, isAsync) {\r\n    if (mgrSource) {\r\n        var perfMgr = mgrSource;\r\n        if (perfMgr[STR_GET_PERF_MGR]) {\r\n            // Looks like a perf manager provider object\r\n            perfMgr = perfMgr[STR_GET_PERF_MGR]();\r\n        }\r\n        if (perfMgr) {\r\n            var perfEvt = void 0;\r\n            var currentActive = perfMgr[_DYN_GET_CTX /* @min:%2egetCtx */](doPerfActiveKey);\r\n            try {\r\n                perfEvt = perfMgr.create(getSource(), details, isAsync);\r\n                if (perfEvt) {\r\n                    if (currentActive && perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n                        perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */](PerfEvent[strParentContextKey], currentActive);\r\n                        if (currentActive[_DYN_GET_CTX /* @min:%2egetCtx */] && currentActive[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n                            var children = currentActive[_DYN_GET_CTX /* @min:%2egetCtx */](PerfEvent[strChildrenContextKey]);\r\n                            if (!children) {\r\n                                children = [];\r\n                                currentActive[_DYN_SET_CTX /* @min:%2esetCtx */](PerfEvent[strChildrenContextKey], children);\r\n                            }\r\n                            children[_DYN_PUSH /* @min:%2epush */](perfEvt);\r\n                        }\r\n                    }\r\n                    // Set this event as the active event now\r\n                    perfMgr[_DYN_SET_CTX /* @min:%2esetCtx */](doPerfActiveKey, perfEvt);\r\n                    return func(perfEvt);\r\n                }\r\n            }\r\n            catch (ex) {\r\n                if (perfEvt && perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n                    perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */](\"exception\", ex);\r\n                }\r\n            }\r\n            finally {\r\n                // fire the perf event\r\n                if (perfEvt) {\r\n                    perfMgr.fire(perfEvt);\r\n                }\r\n                // Reset the active event to the previous value\r\n                perfMgr[_DYN_SET_CTX /* @min:%2esetCtx */](doPerfActiveKey, currentActive);\r\n            }\r\n        }\r\n    }\r\n    return func();\r\n}\r\n/**\r\n * Set the global performance manager to use when there is no core instance or it has not been initialized yet.\r\n * @param perfManager - The IPerfManager instance to use when no performance manager is supplied.\r\n */\r\nexport function setGblPerfMgr(perfManager) {\r\n    _defaultPerfManager = perfManager;\r\n}\r\n/**\r\n * Get the current global performance manager that will be used with no performance manager is supplied.\r\n * @returns - The current default manager\r\n */\r\nexport function getGblPerfMgr() {\r\n    return _defaultPerfManager;\r\n}\r\n//# sourceMappingURL=PerfManager.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { arrForEach, isFunction } from \"@nevware21/ts-utils\";\r\nimport { _DYN_GET_NEXT, _DYN_GET_PLUGIN, _DYN_INITIALIZE, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_SPAN_ID, _DYN_TEARDOWN, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { createElmNodeData } from \"./DataCacheHelper\";\r\nimport { STR_CORE, STR_PRIORITY, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { isValidSpanId, isValidTraceId } from \"./W3cTraceParent\";\r\nvar pluginStateData = createElmNodeData(\"plugin\");\r\nexport function _getPluginState(plugin) {\r\n    return pluginStateData.get(plugin, \"state\", {}, true);\r\n}\r\n/**\r\n * Initialize the queue of plugins\r\n * @param plugins - The array of plugins to initialize and setting of the next plugin\r\n * @param config - The current config for the instance\r\n * @param core - THe current core instance\r\n * @param extensions - The extensions\r\n */\r\nexport function initializePlugins(processContext, extensions) {\r\n    // Set the next plugin and identified the uninitialized plugins\r\n    var initPlugins = [];\r\n    var lastPlugin = null;\r\n    var proxy = processContext[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n    var pluginState;\r\n    while (proxy) {\r\n        var thePlugin = proxy[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]();\r\n        if (thePlugin) {\r\n            if (lastPlugin && lastPlugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */] && thePlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */]) {\r\n                // Set this plugin as the next for the previous one\r\n                lastPlugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */](thePlugin);\r\n            }\r\n            pluginState = _getPluginState(thePlugin);\r\n            var isInitialized = !!pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */];\r\n            if (thePlugin[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]) {\r\n                isInitialized = thePlugin[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]();\r\n            }\r\n            if (!isInitialized) {\r\n                initPlugins[_DYN_PUSH /* @min:%2epush */](thePlugin);\r\n            }\r\n            lastPlugin = thePlugin;\r\n            proxy = proxy[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n        }\r\n    }\r\n    // Now initialize the plugins\r\n    arrForEach(initPlugins, function (thePlugin) {\r\n        var core = processContext[STR_CORE /* @min:%2ecore */]();\r\n        thePlugin[_DYN_INITIALIZE /* @min:%2einitialize */](processContext.getCfg(), core, extensions, processContext[_DYN_GET_NEXT /* @min:%2egetNext */]());\r\n        pluginState = _getPluginState(thePlugin);\r\n        // Only add the core to the state if the plugin didn't set it (doesn't extend from BaseTelemetryPlugin)\r\n        if (!thePlugin[STR_CORE] && !pluginState[STR_CORE]) {\r\n            pluginState[STR_CORE] = core;\r\n        }\r\n        pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = true;\r\n        delete pluginState[_DYN_TEARDOWN /* @min:%2eteardown */];\r\n    });\r\n}\r\nexport function sortPlugins(plugins) {\r\n    // Sort by priority\r\n    return plugins.sort(function (extA, extB) {\r\n        var result = 0;\r\n        if (extB) {\r\n            var bHasProcess = extB[STR_PROCESS_TELEMETRY];\r\n            if (extA[STR_PROCESS_TELEMETRY]) {\r\n                result = bHasProcess ? extA[STR_PRIORITY] - extB[STR_PRIORITY] : 1;\r\n            }\r\n            else if (bHasProcess) {\r\n                result = -1;\r\n            }\r\n        }\r\n        else {\r\n            result = extA ? 1 : -1;\r\n        }\r\n        return result;\r\n    });\r\n    // sort complete\r\n}\r\n/**\r\n * Teardown / Unload helper to perform teardown/unloading operations for the provided components synchronously or asynchronously, this will call any\r\n * _doTeardown() or _doUnload() functions on the provided components to allow them to finish removal.\r\n * @param components - The components you want to unload\r\n * @param unloadCtx - This is the context that should be used during unloading.\r\n * @param unloadState - The details / state of the unload process, it holds details like whether it should be unloaded synchronously or asynchronously and the reason for the unload.\r\n * @param asyncCallback - An optional callback that the plugin must call if it returns true to inform the caller that it has completed any async unload/teardown operations.\r\n * @returns boolean - true if the plugin has or will call asyncCallback, this allows the plugin to perform any asynchronous operations.\r\n */\r\nexport function unloadComponents(components, unloadCtx, unloadState, asyncCallback) {\r\n    var idx = 0;\r\n    function _doUnload() {\r\n        while (idx < components[_DYN_LENGTH /* @min:%2elength */]) {\r\n            var component = components[idx++];\r\n            if (component) {\r\n                var func = component._doUnload || component[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */];\r\n                if (isFunction(func)) {\r\n                    if (func.call(component, unloadCtx, unloadState, _doUnload) === true) {\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    return _doUnload();\r\n}\r\n/**\r\n * Creates a IDistributedTraceContext which optionally also \"sets\" the value on a parent\r\n * @param parentCtx - An optional parent distributed trace instance\r\n * @returns A new IDistributedTraceContext instance that uses an internal temporary object\r\n */\r\nexport function createDistributedTraceContext(parentCtx) {\r\n    var trace = {};\r\n    return {\r\n        getName: function () {\r\n            return trace[_DYN_NAME /* @min:%2ename */];\r\n        },\r\n        setName: function (newValue) {\r\n            parentCtx && parentCtx.setName(newValue);\r\n            trace[_DYN_NAME /* @min:%2ename */] = newValue;\r\n        },\r\n        getTraceId: function () {\r\n            return trace[_DYN_TRACE_ID /* @min:%2etraceId */];\r\n        },\r\n        setTraceId: function (newValue) {\r\n            parentCtx && parentCtx.setTraceId(newValue);\r\n            if (isValidTraceId(newValue)) {\r\n                trace[_DYN_TRACE_ID /* @min:%2etraceId */] = newValue;\r\n            }\r\n        },\r\n        getSpanId: function () {\r\n            return trace[_DYN_SPAN_ID /* @min:%2espanId */];\r\n        },\r\n        setSpanId: function (newValue) {\r\n            parentCtx && parentCtx.setSpanId(newValue);\r\n            if (isValidSpanId(newValue)) {\r\n                trace[_DYN_SPAN_ID /* @min:%2espanId */] = newValue;\r\n            }\r\n        },\r\n        getTraceFlags: function () {\r\n            return trace[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n        },\r\n        setTraceFlags: function (newTraceFlags) {\r\n            parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n            trace[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = newTraceFlags;\r\n        }\r\n    };\r\n}\r\n//# sourceMappingURL=TelemetryHelpers.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { arrForEach, dumpObj, isArray, isFunction, isNullOrUndefined, isUndefined, objForEachKey, objFreeze, objKeys } from \"@nevware21/ts-utils\";\r\nimport { _applyDefaultValue } from \"../Config/ConfigDefaults\";\r\nimport { createDynamicConfig } from \"../Config/DynamicConfig\";\r\nimport { _DYN_CREATE_NEW, _DYN_DIAG_LOG, _DYN_GET_NEXT, _DYN_GET_PLUGIN, _DYN_IDENTIFIER, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_LOGGER, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SET_DF, _DYN_SET_NEXT_PLUGIN, _DYN_TEARDOWN, _DYN_UNLOAD, _DYN_UPDATE } from \"../__DynamicConstants\";\r\nimport { _throwInternal, safeGetLogger } from \"./DiagnosticLogger\";\r\nimport { proxyFunctions } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_DISABLED, STR_EMPTY, STR_EXTENSION_CONFIG, STR_PRIORITY, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { doPerf } from \"./PerfManager\";\r\nimport { _getPluginState } from \"./TelemetryHelpers\";\r\nvar strTelemetryPluginChain = \"TelemetryPluginChain\";\r\nvar strHasRunFlags = \"_hasRun\";\r\nvar strGetTelCtx = \"_getTelCtx\";\r\nvar _chainId = 0;\r\nfunction _getNextProxyStart(proxy, core, startAt) {\r\n    while (proxy) {\r\n        if (proxy[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]() === startAt) {\r\n            return proxy;\r\n        }\r\n        proxy = proxy[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n    }\r\n    // This wasn't found in the existing chain so create an isolated one with just this plugin\r\n    return createTelemetryProxyChain([startAt], core.config || {}, core);\r\n}\r\n/**\r\n * @ignore\r\n * @param telemetryChain\r\n * @param dynamicHandler\r\n * @param core\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n * @returns\r\n */\r\nfunction _createInternalContext(telemetryChain, dynamicHandler, core, startAt) {\r\n    // We have a special case where we want to start execution from this specific plugin\r\n    // or we simply reuse the existing telemetry plugin chain (normal execution case)\r\n    var _nextProxy = null; // By Default set as no next plugin\r\n    var _onComplete = [];\r\n    if (!dynamicHandler) {\r\n        dynamicHandler = createDynamicConfig({}, null, core[_DYN_LOGGER /* @min:%2elogger */]);\r\n    }\r\n    if (startAt !== null) {\r\n        // There is no next element (null) vs not defined (undefined) so use the full chain\r\n        _nextProxy = startAt ? _getNextProxyStart(telemetryChain, core, startAt) : telemetryChain;\r\n    }\r\n    var context = {\r\n        _next: _moveNext,\r\n        ctx: {\r\n            core: function () {\r\n                return core;\r\n            },\r\n            diagLog: function () {\r\n                return safeGetLogger(core, dynamicHandler.cfg);\r\n            },\r\n            getCfg: function () {\r\n                return dynamicHandler.cfg;\r\n            },\r\n            getExtCfg: _resolveExtCfg,\r\n            getConfig: _getConfig,\r\n            hasNext: function () {\r\n                return !!_nextProxy;\r\n            },\r\n            getNext: function () {\r\n                return _nextProxy;\r\n            },\r\n            setNext: function (nextPlugin) {\r\n                _nextProxy = nextPlugin;\r\n            },\r\n            iterate: _iterateChain,\r\n            onComplete: _addOnComplete\r\n        }\r\n    };\r\n    function _addOnComplete(onComplete, that) {\r\n        var args = [];\r\n        for (var _i = 2; _i < arguments.length; _i++) {\r\n            args[_i - 2] = arguments[_i];\r\n        }\r\n        if (onComplete) {\r\n            _onComplete[_DYN_PUSH /* @min:%2epush */]({\r\n                func: onComplete,\r\n                self: !isUndefined(that) ? that : context.ctx,\r\n                args: args\r\n            });\r\n        }\r\n    }\r\n    function _moveNext() {\r\n        var nextProxy = _nextProxy;\r\n        // Automatically move to the next plugin\r\n        _nextProxy = nextProxy ? nextProxy[_DYN_GET_NEXT /* @min:%2egetNext */]() : null;\r\n        if (!nextProxy) {\r\n            var onComplete = _onComplete;\r\n            if (onComplete && onComplete[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                arrForEach(onComplete, function (completeDetails) {\r\n                    try {\r\n                        completeDetails.func.call(completeDetails.self, completeDetails.args);\r\n                    }\r\n                    catch (e) {\r\n                        _throwInternal(core[_DYN_LOGGER /* @min:%2elogger */], 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected Exception during onComplete - \" + dumpObj(e));\r\n                    }\r\n                });\r\n                _onComplete = [];\r\n            }\r\n        }\r\n        return nextProxy;\r\n    }\r\n    function _getExtCfg(identifier, createIfMissing) {\r\n        var idCfg = null;\r\n        var cfg = dynamicHandler.cfg;\r\n        if (cfg && identifier) {\r\n            var extCfg = cfg[STR_EXTENSION_CONFIG /* @min:%2eextensionConfig */];\r\n            if (!extCfg && createIfMissing) {\r\n                extCfg = {};\r\n            }\r\n            // Always set the value so that the property always exists\r\n            cfg[STR_EXTENSION_CONFIG] = extCfg; // Note: it is valid for the \"value\" to be undefined\r\n            // Calling `ref()` has a side effect of causing the referenced property to become dynamic  (if not already)\r\n            extCfg = dynamicHandler.ref(cfg, STR_EXTENSION_CONFIG);\r\n            if (extCfg) {\r\n                idCfg = extCfg[identifier];\r\n                if (!idCfg && createIfMissing) {\r\n                    idCfg = {};\r\n                }\r\n                // Always set the value so that the property always exists\r\n                extCfg[identifier] = idCfg; // Note: it is valid for the \"value\" to be undefined\r\n                // Calling `ref()` has a side effect of causing the referenced property to become dynamic  (if not already)\r\n                idCfg = dynamicHandler.ref(extCfg, identifier);\r\n            }\r\n        }\r\n        return idCfg;\r\n    }\r\n    function _resolveExtCfg(identifier, defaultValues) {\r\n        var newConfig = _getExtCfg(identifier, true);\r\n        if (defaultValues) {\r\n            // Enumerate over the defaultValues and if not already populated attempt to\r\n            // find a value from the root config or use the default value\r\n            objForEachKey(defaultValues, function (field, defaultValue) {\r\n                // for each unspecified field, set the default value\r\n                if (isNullOrUndefined(newConfig[field])) {\r\n                    var cfgValue = dynamicHandler.cfg[field];\r\n                    if (cfgValue || !isNullOrUndefined(cfgValue)) {\r\n                        newConfig[field] = cfgValue;\r\n                    }\r\n                }\r\n                _applyDefaultValue(dynamicHandler, newConfig, field, defaultValue);\r\n            });\r\n        }\r\n        return dynamicHandler[_DYN_SET_DF /* @min:%2esetDf */](newConfig, defaultValues);\r\n    }\r\n    function _getConfig(identifier, field, defaultValue) {\r\n        if (defaultValue === void 0) { defaultValue = false; }\r\n        var theValue;\r\n        var extConfig = _getExtCfg(identifier, false);\r\n        var rootConfig = dynamicHandler.cfg;\r\n        if (extConfig && (extConfig[field] || !isNullOrUndefined(extConfig[field]))) {\r\n            theValue = extConfig[field];\r\n        }\r\n        else if (rootConfig[field] || !isNullOrUndefined(rootConfig[field])) {\r\n            theValue = rootConfig[field];\r\n        }\r\n        return (theValue || !isNullOrUndefined(theValue)) ? theValue : defaultValue;\r\n    }\r\n    function _iterateChain(cb) {\r\n        // Keep processing until we reach the end of the chain\r\n        var nextPlugin;\r\n        while (!!(nextPlugin = context._next())) {\r\n            var plugin = nextPlugin[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]();\r\n            if (plugin) {\r\n                // callback with the current on\r\n                cb(plugin);\r\n            }\r\n        }\r\n    }\r\n    return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryContext(telemetryChain, cfg, core, startAt) {\r\n    var config = createDynamicConfig(cfg);\r\n    var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n    var context = internalContext.ctx;\r\n    function _processNext(env) {\r\n        var nextPlugin = internalContext._next();\r\n        if (nextPlugin) {\r\n            // Run the next plugin which will call \"processNext()\"\r\n            nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, context);\r\n        }\r\n        return !nextPlugin;\r\n    }\r\n    function _createNew(plugins, startAt) {\r\n        if (plugins === void 0) { plugins = null; }\r\n        if (isArray(plugins)) {\r\n            plugins = createTelemetryProxyChain(plugins, config.cfg, core, startAt);\r\n        }\r\n        return createProcessTelemetryContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), config.cfg, core, startAt);\r\n    }\r\n    context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n    context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n    return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for handling the unloading of the chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUnloadContext(telemetryChain, core, startAt) {\r\n    var config = createDynamicConfig(core.config);\r\n    var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n    var context = internalContext.ctx;\r\n    function _processNext(unloadState) {\r\n        var nextPlugin = internalContext._next();\r\n        nextPlugin && nextPlugin[_DYN_UNLOAD /* @min:%2eunload */](context, unloadState);\r\n        return !nextPlugin;\r\n    }\r\n    function _createNew(plugins, startAt) {\r\n        if (plugins === void 0) { plugins = null; }\r\n        if (isArray(plugins)) {\r\n            plugins = createTelemetryProxyChain(plugins, config.cfg, core, startAt);\r\n        }\r\n        return createProcessTelemetryUnloadContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), core, startAt);\r\n    }\r\n    context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n    context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n    return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for updating the configuration\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUpdateContext(telemetryChain, core, startAt) {\r\n    var config = createDynamicConfig(core.config);\r\n    var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n    var context = internalContext.ctx;\r\n    function _processNext(updateState) {\r\n        return context.iterate(function (plugin) {\r\n            if (isFunction(plugin[_DYN_UPDATE /* @min:%2eupdate */])) {\r\n                plugin[_DYN_UPDATE /* @min:%2eupdate */](context, updateState);\r\n            }\r\n        });\r\n    }\r\n    function _createNew(plugins, startAt) {\r\n        if (plugins === void 0) { plugins = null; }\r\n        if (isArray(plugins)) {\r\n            plugins = createTelemetryProxyChain(plugins, config.cfg, core, startAt);\r\n        }\r\n        return createProcessTelemetryUpdateContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), core, startAt);\r\n    }\r\n    context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n    context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n    return context;\r\n}\r\n/**\r\n * Creates an execution chain from the array of plugins\r\n * @param plugins - The array of plugins that will be executed in this order\r\n * @param defItemCtx - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n */\r\nexport function createTelemetryProxyChain(plugins, config, core, startAt) {\r\n    var firstProxy = null;\r\n    var add = startAt ? false : true;\r\n    if (isArray(plugins) && plugins[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n        // Create the proxies and wire up the next plugin chain\r\n        var lastProxy_1 = null;\r\n        arrForEach(plugins, function (thePlugin) {\r\n            if (!add && startAt === thePlugin) {\r\n                add = true;\r\n            }\r\n            if (add && thePlugin && isFunction(thePlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n                // Only add plugins that are processors\r\n                var newProxy = createTelemetryPluginProxy(thePlugin, config, core);\r\n                if (!firstProxy) {\r\n                    firstProxy = newProxy;\r\n                }\r\n                if (lastProxy_1) {\r\n                    // Set this new proxy as the next for the previous one\r\n                    lastProxy_1._setNext(newProxy);\r\n                }\r\n                lastProxy_1 = newProxy;\r\n            }\r\n        });\r\n    }\r\n    if (startAt && !firstProxy) {\r\n        // Special case where the \"startAt\" was not in the original list of plugins\r\n        return createTelemetryProxyChain([startAt], config, core);\r\n    }\r\n    return firstProxy;\r\n}\r\n/**\r\n * Create the processing telemetry proxy instance, the proxy is used to abstract the current plugin to allow monitoring and\r\n * execution plugins while passing around the dynamic execution state (IProcessTelemetryContext), the proxy instance no longer\r\n * contains any execution state and can be reused between requests (this was not the case for 2.7.2 and earlier with the\r\n * TelemetryPluginChain class).\r\n * @param plugin - The plugin instance to proxy\r\n * @param config - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n * @returns\r\n */\r\nexport function createTelemetryPluginProxy(plugin, config, core) {\r\n    var nextProxy = null;\r\n    var hasProcessTelemetry = isFunction(plugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */]);\r\n    var hasSetNext = isFunction(plugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */]);\r\n    var chainId;\r\n    if (plugin) {\r\n        chainId = plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"-\" + plugin[STR_PRIORITY /* @min:%2epriority */] + \"-\" + _chainId++;\r\n    }\r\n    else {\r\n        chainId = \"Unknown-0-\" + _chainId++;\r\n    }\r\n    var proxyChain = {\r\n        getPlugin: function () {\r\n            return plugin;\r\n        },\r\n        getNext: function () {\r\n            return nextProxy;\r\n        },\r\n        processTelemetry: _processTelemetry,\r\n        unload: _unloadPlugin,\r\n        update: _updatePlugin,\r\n        _id: chainId,\r\n        _setNext: function (nextPlugin) {\r\n            nextProxy = nextPlugin;\r\n        }\r\n    };\r\n    function _getTelCtx() {\r\n        var itemCtx;\r\n        // Looks like a plugin didn't pass the (optional) context, so create a new one\r\n        if (plugin && isFunction(plugin[strGetTelCtx])) {\r\n            // This plugin extends from the BaseTelemetryPlugin so lets use it\r\n            itemCtx = plugin[strGetTelCtx]();\r\n        }\r\n        if (!itemCtx) {\r\n            // Create a temporary one\r\n            itemCtx = createProcessTelemetryContext(proxyChain, config, core);\r\n        }\r\n        return itemCtx;\r\n    }\r\n    function _processChain(itemCtx, processPluginFn, name, details, isAsync) {\r\n        var hasRun = false;\r\n        var identifier = plugin ? plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] : strTelemetryPluginChain;\r\n        var hasRunContext = itemCtx[strHasRunFlags];\r\n        if (!hasRunContext) {\r\n            // Assign and populate\r\n            hasRunContext = itemCtx[strHasRunFlags] = {};\r\n        }\r\n        // Ensure that we keep the context in sync\r\n        itemCtx.setNext(nextProxy);\r\n        if (plugin) {\r\n            doPerf(itemCtx[STR_CORE /* @min:%2ecore */](), function () { return identifier + \":\" + name; }, function () {\r\n                // Mark this component as having run\r\n                hasRunContext[chainId] = true;\r\n                try {\r\n                    // Set a flag on the next plugin so we know if it was attempted to be executed\r\n                    var nextId = nextProxy ? nextProxy._id : STR_EMPTY;\r\n                    if (nextId) {\r\n                        hasRunContext[nextId] = false;\r\n                    }\r\n                    hasRun = processPluginFn(itemCtx);\r\n                }\r\n                catch (error) {\r\n                    var hasNextRun = nextProxy ? hasRunContext[nextProxy._id] : true;\r\n                    if (hasNextRun) {\r\n                        // The next plugin after us has already run so set this one as complete\r\n                        hasRun = true;\r\n                    }\r\n                    if (!nextProxy || !hasNextRun) {\r\n                        // Either we have no next plugin or the current one did not attempt to call the next plugin\r\n                        // Which means the current one is the root of the failure so log/report this failure\r\n                        _throwInternal(itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 73 /* _eInternalMessageId.PluginException */, \"Plugin [\" + identifier + \"] failed during \" + name + \" - \" + dumpObj(error) + \", run flags: \" + dumpObj(hasRunContext));\r\n                    }\r\n                }\r\n            }, details, isAsync);\r\n        }\r\n        return hasRun;\r\n    }\r\n    function _processTelemetry(env, itemCtx) {\r\n        itemCtx = itemCtx || _getTelCtx();\r\n        function _callProcessTelemetry(itemCtx) {\r\n            if (!plugin || !hasProcessTelemetry) {\r\n                return false;\r\n            }\r\n            var pluginState = _getPluginState(plugin);\r\n            if (pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] || pluginState[STR_DISABLED]) {\r\n                return false;\r\n            }\r\n            // Ensure that we keep the context in sync (for processNext()), just in case a plugin\r\n            // doesn't calls processTelemetry() instead of itemContext.processNext() or some\r\n            // other form of error occurred\r\n            if (hasSetNext) {\r\n                // Backward compatibility setting the next plugin on the instance\r\n                plugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */](nextProxy);\r\n            }\r\n            plugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, itemCtx);\r\n            // Process Telemetry is expected to call itemCtx.processNext() or nextPlugin.processTelemetry()\r\n            return true;\r\n        }\r\n        if (!_processChain(itemCtx, _callProcessTelemetry, \"processTelemetry\", function () { return ({ item: env }); }, !(env.sync))) {\r\n            // The underlying plugin is either not defined, not enabled or does not have a processTelemetry implementation\r\n            // so we still want the next plugin to be executed.\r\n            itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](env);\r\n        }\r\n    }\r\n    function _unloadPlugin(unloadCtx, unloadState) {\r\n        function _callTeardown() {\r\n            // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n            var hasRun = false;\r\n            if (plugin) {\r\n                var pluginState = _getPluginState(plugin);\r\n                var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE /* @min:%2ecore */];\r\n                // Only teardown the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n                if (plugin && (!pluginCore || pluginCore === unloadCtx.core()) && !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */]) {\r\n                    // Handle plugins that don't extend from the BaseTelemetryPlugin\r\n                    pluginState[STR_CORE /* @min:%2ecore */] = null;\r\n                    pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] = true;\r\n                    pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = false;\r\n                    if (plugin[_DYN_TEARDOWN /* @min:%2eteardown */] && plugin[_DYN_TEARDOWN /* @min:%2eteardown */](unloadCtx, unloadState) === true) {\r\n                        // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n                        hasRun = true;\r\n                    }\r\n                }\r\n            }\r\n            return hasRun;\r\n        }\r\n        if (!_processChain(unloadCtx, _callTeardown, \"unload\", function () { }, unloadState[_DYN_IS_ASYNC /* @min:%2eisAsync */])) {\r\n            // Only called if we hasRun was not true\r\n            unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n        }\r\n    }\r\n    function _updatePlugin(updateCtx, updateState) {\r\n        function _callUpdate() {\r\n            // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n            var hasRun = false;\r\n            if (plugin) {\r\n                var pluginState = _getPluginState(plugin);\r\n                var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE /* @min:%2ecore */];\r\n                // Only update the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n                if (plugin && (!pluginCore || pluginCore === updateCtx.core()) && !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */]) {\r\n                    if (plugin[_DYN_UPDATE /* @min:%2eupdate */] && plugin[_DYN_UPDATE /* @min:%2eupdate */](updateCtx, updateState) === true) {\r\n                        // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n                        hasRun = true;\r\n                    }\r\n                }\r\n            }\r\n            return hasRun;\r\n        }\r\n        if (!_processChain(updateCtx, _callUpdate, \"update\", function () { }, false)) {\r\n            // Only called if we hasRun was not true\r\n            updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](updateState);\r\n        }\r\n    }\r\n    return objFreeze(proxyChain);\r\n}\r\n/**\r\n * This class will be removed!\r\n * @deprecated use createProcessTelemetryContext() instead\r\n */\r\nvar ProcessTelemetryContext = /** @class */ (function () {\r\n    /**\r\n     * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n     * @param plugins - The plugin instances that will be executed\r\n     * @param config - The current config\r\n     * @param core - The current core instance\r\n     */\r\n    function ProcessTelemetryContext(pluginChain, config, core, startAt) {\r\n        var _self = this;\r\n        var context = createProcessTelemetryContext(pluginChain, config, core, startAt);\r\n        // Proxy all functions of the context to this object\r\n        proxyFunctions(_self, context, objKeys(context));\r\n    }\r\n    return ProcessTelemetryContext;\r\n}());\r\nexport { ProcessTelemetryContext };\r\n//# sourceMappingURL=ProcessTelemetryContext.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrAppend, arrForEach, dumpObj } from \"@nevware21/ts-utils\";\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nvar _maxHooks;\r\nvar _hookAddMonitor;\r\n/**\r\n * Test hook for setting the maximum number of unload hooks and calling a monitor function when the hooks are added or removed\r\n * This allows for automatic test failure when the maximum number of unload hooks is exceeded\r\n * @param maxHooks - The maximum number of unload hooks\r\n * @param addMonitor - The monitor function to call when hooks are added or removed\r\n */\r\nexport function _testHookMaxUnloadHooksCb(maxHooks, addMonitor) {\r\n    _maxHooks = maxHooks;\r\n    _hookAddMonitor = addMonitor;\r\n}\r\n/**\r\n * Create a IUnloadHookContainer which can be used to remember unload hook functions to be executed during the component unloading\r\n * process.\r\n * @returns A new IUnloadHookContainer instance\r\n */\r\nexport function createUnloadHookContainer() {\r\n    var _hooks = [];\r\n    function _doUnload(logger) {\r\n        var oldHooks = _hooks;\r\n        _hooks = [];\r\n        // Remove all registered unload hooks\r\n        arrForEach(oldHooks, function (fn) {\r\n            // allow either rm or remove callback function\r\n            try {\r\n                (fn.rm || fn.remove).call(fn);\r\n            }\r\n            catch (e) {\r\n                _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unloading:\" + dumpObj(e));\r\n            }\r\n        });\r\n        if (_maxHooks && oldHooks[_DYN_LENGTH /* @min:%2elength */] > _maxHooks) {\r\n            _hookAddMonitor ? _hookAddMonitor(\"doUnload\", oldHooks) : _throwInternal(null, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.MaxUnloadHookExceeded */, \"Max unload hooks exceeded. An excessive number of unload hooks has been detected.\");\r\n        }\r\n    }\r\n    function _addHook(hooks) {\r\n        if (hooks) {\r\n            arrAppend(_hooks, hooks);\r\n            if (_maxHooks && _hooks[_DYN_LENGTH /* @min:%2elength */] > _maxHooks) {\r\n                _hookAddMonitor ? _hookAddMonitor(\"Add\", _hooks) : _throwInternal(null, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.MaxUnloadHookExceeded */, \"Max unload hooks exceeded. An excessive number of unload hooks has been detected.\");\r\n            }\r\n        }\r\n    }\r\n    return {\r\n        run: _doUnload,\r\n        add: _addHook\r\n    };\r\n}\r\n//# sourceMappingURL=UnloadHookContainer.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nvar _a;\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { isFunction, objDefine } from \"@nevware21/ts-utils\";\r\nimport { createDynamicConfig } from \"../Config/DynamicConfig\";\r\nimport { _DYN_CREATE_NEW, _DYN_DIAG_LOG, _DYN_GET_NEXT, _DYN_GET_PROCESS_TEL_CONT2, _DYN_INITIALIZE, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_PROCESS_NEXT, _DYN_SET_NEXT_PLUGIN, _DYN_TEARDOWN, _DYN_UPDATE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { safeGetLogger } from \"./DiagnosticLogger\";\r\nimport { isNotNullOrUndefined, proxyFunctionAs } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_EXTENSION_CONFIG, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext } from \"./ProcessTelemetryContext\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nimport { createUnloadHookContainer } from \"./UnloadHookContainer\";\r\nvar strGetPlugin = \"getPlugin\";\r\nvar defaultValues = (_a = {},\r\n    _a[STR_EXTENSION_CONFIG] = { isVal: isNotNullOrUndefined, v: {} },\r\n    _a);\r\n/**\r\n * BaseTelemetryPlugin provides a basic implementation of the ITelemetryPlugin interface so that plugins\r\n * can avoid implementation the same set of boiler plate code as well as provide a base\r\n * implementation so that new default implementations can be added without breaking all plugins.\r\n */\r\nvar BaseTelemetryPlugin = /** @class */ (function () {\r\n    function BaseTelemetryPlugin() {\r\n        var _self = this; // Setting _self here as it's used outside of the dynamicProto as well\r\n        // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n        var _isinitialized;\r\n        var _rootCtx; // Used as the root context, holding the current config and initialized core\r\n        var _nextPlugin; // Used for backward compatibility where plugins don't call the main pipeline\r\n        var _unloadHandlerContainer;\r\n        var _hookContainer;\r\n        _initDefaults();\r\n        dynamicProto(BaseTelemetryPlugin, _self, function (_self) {\r\n            _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, core, extensions, pluginChain) {\r\n                _setDefaults(config, core, pluginChain);\r\n                _isinitialized = true;\r\n            };\r\n            _self[_DYN_TEARDOWN /* @min:%2eteardown */] = function (unloadCtx, unloadState) {\r\n                var _a;\r\n                // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n                // or the core being used for unload was not the same core used for initialization.\r\n                var core = _self[STR_CORE /* @min:%2ecore */];\r\n                if (!core || (unloadCtx && core !== unloadCtx[STR_CORE /* @min:%2ecore */]())) {\r\n                    // Do Nothing as either the plugin is not initialized or was not initialized by the current core\r\n                    return;\r\n                }\r\n                var result;\r\n                var unloadDone = false;\r\n                var theUnloadCtx = unloadCtx || createProcessTelemetryUnloadContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n                var theUnloadState = unloadState || (_a = {\r\n                        reason: 0 /* TelemetryUnloadReason.ManualTeardown */\r\n                    },\r\n                    _a[_DYN_IS_ASYNC /* @min:isAsync */] = false,\r\n                    _a);\r\n                function _unloadCallback() {\r\n                    if (!unloadDone) {\r\n                        unloadDone = true;\r\n                        _unloadHandlerContainer.run(theUnloadCtx, unloadState);\r\n                        _hookContainer.run(theUnloadCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */]());\r\n                        if (result === true) {\r\n                            theUnloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n                        }\r\n                        _initDefaults();\r\n                    }\r\n                }\r\n                if (!_self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] || _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */](theUnloadCtx, theUnloadState, _unloadCallback) !== true) {\r\n                    _unloadCallback();\r\n                }\r\n                else {\r\n                    // Tell the caller that we will be calling processNext()\r\n                    result = true;\r\n                }\r\n                return result;\r\n            };\r\n            _self[_DYN_UPDATE /* @min:%2eupdate */] = function (updateCtx, updateState) {\r\n                // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n                // or the core being used for unload was not the same core used for initialization.\r\n                var core = _self[STR_CORE /* @min:%2ecore */];\r\n                if (!core || (updateCtx && core !== updateCtx[STR_CORE /* @min:%2ecore */]())) {\r\n                    // Do Nothing\r\n                    return;\r\n                }\r\n                var result;\r\n                var updateDone = false;\r\n                var theUpdateCtx = updateCtx || createProcessTelemetryUpdateContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n                var theUpdateState = updateState || {\r\n                    reason: 0 /* TelemetryUpdateReason.Unknown */\r\n                };\r\n                function _updateCallback() {\r\n                    if (!updateDone) {\r\n                        updateDone = true;\r\n                        _setDefaults(theUpdateCtx.getCfg(), theUpdateCtx.core(), theUpdateCtx[_DYN_GET_NEXT /* @min:%2egetNext */]());\r\n                    }\r\n                }\r\n                if (!_self._doUpdate || _self._doUpdate(theUpdateCtx, theUpdateState, _updateCallback) !== true) {\r\n                    _updateCallback();\r\n                }\r\n                else {\r\n                    result = true;\r\n                }\r\n                return result;\r\n            };\r\n            proxyFunctionAs(_self, \"_addUnloadCb\", function () { return _unloadHandlerContainer; }, \"add\");\r\n            proxyFunctionAs(_self, \"_addHook\", function () { return _hookContainer; }, \"add\");\r\n            objDefine(_self, \"_unloadHooks\", { g: function () { return _hookContainer; } });\r\n        });\r\n        // These are added after the dynamicProto so that are not moved to the prototype\r\n        _self[_DYN_DIAG_LOG /* @min:%2ediagLog */] = function (itemCtx) {\r\n            return _getTelCtx(itemCtx)[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n        };\r\n        _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = function () {\r\n            return _isinitialized;\r\n        };\r\n        _self.setInitialized = function (isInitialized) {\r\n            _isinitialized = isInitialized;\r\n        };\r\n        // _self.getNextPlugin = () => DO NOT IMPLEMENT\r\n        // Sub-classes of this base class *should* not be relying on this value and instead\r\n        // should use processNext() function. If you require access to the plugin use the\r\n        // IProcessTelemetryContext.getNext().getPlugin() while in the pipeline, Note getNext() may return null.\r\n        _self[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */] = function (next) {\r\n            _nextPlugin = next;\r\n        };\r\n        _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = function (env, itemCtx) {\r\n            if (itemCtx) {\r\n                // Normal core execution sequence\r\n                itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](env);\r\n            }\r\n            else if (_nextPlugin && isFunction(_nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n                // Looks like backward compatibility or out of band processing. And as it looks\r\n                // like a ITelemetryPlugin or ITelemetryPluginChain, just call processTelemetry\r\n                _nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, null);\r\n            }\r\n        };\r\n        _self._getTelCtx = _getTelCtx;\r\n        function _getTelCtx(currentCtx) {\r\n            if (currentCtx === void 0) { currentCtx = null; }\r\n            var itemCtx = currentCtx;\r\n            if (!itemCtx) {\r\n                var rootCtx = _rootCtx || createProcessTelemetryContext(null, {}, _self[STR_CORE /* @min:%2ecore */]);\r\n                // tslint:disable-next-line: prefer-conditional-expression\r\n                if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n                    // Looks like a chain object\r\n                    itemCtx = rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](null, _nextPlugin[strGetPlugin]);\r\n                }\r\n                else {\r\n                    itemCtx = rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](null, _nextPlugin);\r\n                }\r\n            }\r\n            return itemCtx;\r\n        }\r\n        function _setDefaults(config, core, pluginChain) {\r\n            // Make sure the extensionConfig exists and the config is dynamic\r\n            createDynamicConfig(config, defaultValues, safeGetLogger(core));\r\n            if (!pluginChain && core) {\r\n                // Get the first plugin from the core\r\n                pluginChain = core[_DYN_GET_PROCESS_TEL_CONT2 /* @min:%2egetProcessTelContext */]()[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n            }\r\n            var nextPlugin = _nextPlugin;\r\n            if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n                // If it looks like a proxy/chain then get the plugin\r\n                nextPlugin = _nextPlugin[strGetPlugin]();\r\n            }\r\n            // Support legacy plugins where core was defined as a property\r\n            _self[STR_CORE /* @min:%2ecore */] = core;\r\n            _rootCtx = createProcessTelemetryContext(pluginChain, config, core, nextPlugin);\r\n        }\r\n        function _initDefaults() {\r\n            _isinitialized = false;\r\n            _self[STR_CORE /* @min:%2ecore */] = null;\r\n            _rootCtx = null;\r\n            _nextPlugin = null;\r\n            _hookContainer = createUnloadHookContainer();\r\n            _unloadHandlerContainer = createUnloadHandlerContainer();\r\n        }\r\n    }\r\n// Removed Stub for BaseTelemetryPlugin.prototype.initialize.\r\n// Removed Stub for BaseTelemetryPlugin.prototype.teardown.\r\n// Removed Stub for BaseTelemetryPlugin.prototype.update.\r\n// Removed Stub for BaseTelemetryPlugin.prototype._addUnloadCb.\r\n// Removed Stub for BaseTelemetryPlugin.prototype._addHook.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    BaseTelemetryPlugin.__ieDyn=1;\n\n    return BaseTelemetryPlugin;\r\n}());\r\nexport { BaseTelemetryPlugin };\r\n//# sourceMappingURL=BaseTelemetryPlugin.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strShimFunction, strShimPrototype } from \"@microsoft/applicationinsights-shims\";\r\nimport { getInst, objHasOwnProperty } from \"@nevware21/ts-utils\";\r\nimport { _DYN_APPLY, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SPLICE } from \"../__DynamicConstants\";\r\nimport { _getObjProto } from \"./HelperFuncs\";\r\nvar aiInstrumentHooks = \"_aiHooks\";\r\nvar cbNames = [\r\n    \"req\", \"rsp\", \"hkErr\", \"fnErr\"\r\n];\r\n/** @ignore */\r\nfunction _arrLoop(arr, fn) {\r\n    if (arr) {\r\n        for (var lp = 0; lp < arr[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n            if (fn(arr[lp], lp)) {\r\n                break;\r\n            }\r\n        }\r\n    }\r\n}\r\n/** @ignore */\r\nfunction _doCallbacks(hooks, callDetails, cbArgs, hookCtx, type) {\r\n    if (type >= 0 /* CallbackType.Request */ && type <= 2 /* CallbackType.HookError */) {\r\n        _arrLoop(hooks, function (hook, idx) {\r\n            var cbks = hook.cbks;\r\n            var cb = cbks[cbNames[type]];\r\n            if (cb) {\r\n                // Set the specific hook context implementation using a lazy creation pattern\r\n                callDetails.ctx = function () {\r\n                    var ctx = hookCtx[idx] = (hookCtx[idx] || {});\r\n                    return ctx;\r\n                };\r\n                try {\r\n                    cb[_DYN_APPLY /* @min:%2eapply */](callDetails.inst, cbArgs);\r\n                }\r\n                catch (err) {\r\n                    var orgEx = callDetails.err;\r\n                    try {\r\n                        // Report Hook error via the callback\r\n                        var hookErrorCb = cbks[cbNames[2 /* CallbackType.HookError */]];\r\n                        if (hookErrorCb) {\r\n                            callDetails.err = err;\r\n                            hookErrorCb[_DYN_APPLY /* @min:%2eapply */](callDetails.inst, cbArgs);\r\n                        }\r\n                    }\r\n                    catch (e) {\r\n                        // Not much we can do here -- swallowing the exception to avoid crashing the hosting app\r\n                    }\r\n                    finally {\r\n                        // restore the original exception (if any)\r\n                        callDetails.err = orgEx;\r\n                    }\r\n                }\r\n            }\r\n        });\r\n    }\r\n}\r\n/** @ignore */\r\nfunction _createFunctionHook(aiHook) {\r\n    // Define a temporary method that queues-up a the real method call\r\n    return function () {\r\n        var _a;\r\n        var funcThis = this;\r\n        // Capture the original arguments passed to the method\r\n        var orgArgs = arguments;\r\n        var hooks = aiHook.h;\r\n        var funcArgs = (_a = {},\r\n            _a[_DYN_NAME /* @min:name */] = aiHook.n,\r\n            _a.inst = funcThis,\r\n            _a.ctx = null,\r\n            _a.set = _replaceArg,\r\n            _a);\r\n        var hookCtx = [];\r\n        var cbArgs = _createArgs([funcArgs], orgArgs);\r\n        funcArgs.evt = getInst(\"event\");\r\n        function _createArgs(target, theArgs) {\r\n            _arrLoop(theArgs, function (arg) {\r\n                target[_DYN_PUSH /* @min:%2epush */](arg);\r\n            });\r\n            return target;\r\n        }\r\n        function _replaceArg(idx, value) {\r\n            orgArgs = _createArgs([], orgArgs);\r\n            orgArgs[idx] = value;\r\n            cbArgs = _createArgs([funcArgs], orgArgs);\r\n        }\r\n        // Call the pre-request hooks\r\n        _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 0 /* CallbackType.Request */);\r\n        // Call the original function was called\r\n        var theFunc = aiHook.f;\r\n        if (theFunc) {\r\n            try {\r\n                funcArgs.rslt = theFunc[_DYN_APPLY /* @min:%2eapply */](funcThis, orgArgs);\r\n            }\r\n            catch (err) {\r\n                // Report the request callback\r\n                funcArgs.err = err;\r\n                _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 3 /* CallbackType.FunctionError */);\r\n                // rethrow the original exception so anyone listening for it can catch the exception\r\n                throw err;\r\n            }\r\n        }\r\n        // Call the post-request hooks\r\n        _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 1 /* CallbackType.Response */);\r\n        return funcArgs.rslt;\r\n    };\r\n}\r\n/** @ignore */\r\nfunction _getOwner(target, name, checkPrototype, checkParentProto) {\r\n    var owner = null;\r\n    if (target) {\r\n        if (objHasOwnProperty(target, name)) {\r\n            owner = target;\r\n        }\r\n        else if (checkPrototype) {\r\n            owner = _getOwner(_getObjProto(target), name, checkParentProto, false);\r\n        }\r\n    }\r\n    return owner;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProto(target, funcName, callbacks) {\r\n    if (target) {\r\n        return InstrumentFunc(target[strShimPrototype], funcName, callbacks, false);\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProtos(target, funcNames, callbacks) {\r\n    if (target) {\r\n        return InstrumentFuncs(target[strShimPrototype], funcNames, callbacks, false);\r\n    }\r\n    return null;\r\n}\r\nfunction _createInstrumentHook(owner, funcName, fn, callbacks) {\r\n    var aiHook = fn && fn[aiInstrumentHooks];\r\n    if (!aiHook) {\r\n        // Only hook the function once\r\n        aiHook = {\r\n            i: 0,\r\n            n: funcName,\r\n            f: fn,\r\n            h: []\r\n        };\r\n        // Override (hook) the original function\r\n        var newFunc = _createFunctionHook(aiHook);\r\n        newFunc[aiInstrumentHooks] = aiHook; // Tag and store the function hooks\r\n        owner[funcName] = newFunc;\r\n    }\r\n    var theHook = {\r\n        // tslint:disable:object-literal-shorthand\r\n        id: aiHook.i,\r\n        cbks: callbacks,\r\n        rm: function () {\r\n            // DO NOT Use () => { shorthand for the function as the this gets replaced\r\n            // with the outer this and not the this for theHook instance.\r\n            var id = this.id;\r\n            _arrLoop(aiHook.h, function (hook, idx) {\r\n                if (hook.id === id) {\r\n                    aiHook.h[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n                    return 1;\r\n                }\r\n            });\r\n        }\r\n        // tslint:enable:object-literal-shorthand\r\n    };\r\n    aiHook.i++;\r\n    aiHook.h[_DYN_PUSH /* @min:%2epush */](theHook);\r\n    return theHook;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n * @param checkParentProto - If the function doesn't exist on the target or it's prototype should it attempt to hook the parent's prototype\r\n */\r\nexport function InstrumentFunc(target, funcName, callbacks, checkPrototype, checkParentProto) {\r\n    if (checkPrototype === void 0) { checkPrototype = true; }\r\n    if (target && funcName && callbacks) {\r\n        var owner = _getOwner(target, funcName, checkPrototype, checkParentProto);\r\n        if (owner) {\r\n            var fn = owner[funcName];\r\n            if (typeof fn === strShimFunction) {\r\n                return _createInstrumentHook(owner, funcName, fn, callbacks);\r\n            }\r\n        }\r\n    }\r\n    return null;\r\n}\r\n/**\r\n * Intercept the named functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n * @param checkParentProto - If the function doesn't exist on the target or it's prototype should it attempt to hook the parent's prototype\r\n */\r\nexport function InstrumentFuncs(target, funcNames, callbacks, checkPrototype, checkParentProto) {\r\n    if (checkPrototype === void 0) { checkPrototype = true; }\r\n    var hooks = null;\r\n    _arrLoop(funcNames, function (funcName) {\r\n        var hook = InstrumentFunc(target, funcName, callbacks, checkPrototype, checkParentProto);\r\n        if (hook) {\r\n            if (!hooks) {\r\n                hooks = [];\r\n            }\r\n            hooks[_DYN_PUSH /* @min:%2epush */](hook);\r\n        }\r\n    });\r\n    return hooks;\r\n}\r\n/**\r\n * Add an instrumentation hook to the provided named \"event\" for the target class / object, this doesn't check whether the\r\n * named \"event\" is in fact a function and just assigns the instrumentation hook to the target[evtName]\r\n * @param target - The target object\r\n * @param evtName - The name of the event\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n * @param checkParentProto - If the function doesn't exist on the target or it's prototype should it attempt to hook the parent's prototype\r\n */\r\nexport function InstrumentEvent(target, evtName, callbacks, checkPrototype, checkParentProto) {\r\n    if (target && evtName && callbacks) {\r\n        var owner = _getOwner(target, evtName, checkPrototype, checkParentProto) || target;\r\n        if (owner) {\r\n            return _createInstrumentHook(owner, evtName, owner[evtName], callbacks);\r\n        }\r\n    }\r\n    return null;\r\n}\r\n//# sourceMappingURL=InstrumentHooks.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, dumpObj } from \"@nevware21/ts-utils\";\r\nimport { _DYN_DIAG_LOG, _DYN_PUSH } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nexport function createUnloadHandlerContainer() {\r\n    var handlers = [];\r\n    function _addHandler(handler) {\r\n        if (handler) {\r\n            handlers[_DYN_PUSH /* @min:%2epush */](handler);\r\n        }\r\n    }\r\n    function _runHandlers(unloadCtx, unloadState) {\r\n        arrForEach(handlers, function (handler) {\r\n            try {\r\n                handler(unloadCtx, unloadState);\r\n            }\r\n            catch (e) {\r\n                _throwInternal(unloadCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected error calling unload handler - \" + dumpObj(e));\r\n            }\r\n        });\r\n        handlers = [];\r\n    }\r\n    return {\r\n        add: _addHandler,\r\n        run: _runHandlers\r\n    };\r\n}\r\n//# sourceMappingURL=UnloadHandlerContainer.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 4\r\nexport var _DYN_IS_STORAGE_USE_DISAB0 = \"isStorageUseDisabled\"; // Count: 3\r\nexport var _DYN__ADD_HOOK = \"_addHook\"; // Count: 6\r\nexport var _DYN_CORE = \"core\"; // Count: 7\r\nexport var _DYN_DATA_TYPE = \"dataType\"; // Count: 8\r\nexport var _DYN_ENVELOPE_TYPE = \"envelopeType\"; // Count: 7\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 13\r\nexport var _DYN_TRACK = \"track\"; // Count: 7\r\nexport var _DYN_TRACK_PAGE_VIEW = \"trackPageView\"; // Count: 4\r\nexport var _DYN_TRACK_PREVIOUS_PAGE_1 = \"trackPreviousPageVisit\"; // Count: 3\r\nexport var _DYN_SEND_PAGE_VIEW_INTER2 = \"sendPageViewInternal\"; // Count: 7\r\nexport var _DYN_START_TIME = \"startTime\"; // Count: 6\r\nexport var _DYN_PROPERTIES = \"properties\"; // Count: 5\r\nexport var _DYN_DURATION = \"duration\"; // Count: 12\r\nexport var _DYN_SEND_PAGE_VIEW_PERFO3 = \"sendPageViewPerformanceInternal\"; // Count: 3\r\nexport var _DYN_POPULATE_PAGE_VIEW_P4 = \"populatePageViewPerformanceEvent\"; // Count: 3\r\nexport var _DYN_HREF = \"href\"; // Count: 6\r\nexport var _DYN_SEND_EXCEPTION_INTER5 = \"sendExceptionInternal\"; // Count: 2\r\nexport var _DYN_EXCEPTION = \"exception\"; // Count: 3\r\nexport var _DYN_ERROR = \"error\"; // Count: 5\r\nexport var _DYN__ONERROR = \"_onerror\"; // Count: 3\r\nexport var _DYN_ERROR_SRC = \"errorSrc\"; // Count: 3\r\nexport var _DYN_LINE_NUMBER = \"lineNumber\"; // Count: 5\r\nexport var _DYN_COLUMN_NUMBER = \"columnNumber\"; // Count: 5\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 4\r\nexport var _DYN__CREATE_AUTO_EXCEPTI6 = \"CreateAutoException\"; // Count: 3\r\nexport var _DYN_ADD_TELEMETRY_INITIA7 = \"addTelemetryInitializer\"; // Count: 4\r\nexport var _DYN_OVERRIDE_PAGE_VIEW_D8 = \"overridePageViewDuration\"; // Count: 2\r\nexport var _DYN_AUTO_TRACK_PAGE_VISI9 = \"autoTrackPageVisitTime\"; // Count: 2\r\nexport var _DYN_IS_BROWSER_LINK_TRAC10 = \"isBrowserLinkTrackingEnabled\"; // Count: 2\r\nexport var _DYN_LENGTH = \"length\"; // Count: 5\r\nexport var _DYN_ENABLE_AUTO_ROUTE_TR11 = \"enableAutoRouteTracking\"; // Count: 2\r\nexport var _DYN_ENABLE_UNHANDLED_PRO12 = \"enableUnhandledPromiseRejectionTracking\"; // Count: 2\r\nexport var _DYN_AUTO_UNHANDLED_PROMI13 = \"autoUnhandledPromiseInstrumented\"; // Count: 3\r\nexport var _DYN_GET_ENTRIES_BY_TYPE = \"getEntriesByType\"; // Count: 5\r\nexport var _DYN_IS_PERFORMANCE_TIMIN14 = \"isPerformanceTimingSupported\"; // Count: 2\r\nexport var _DYN_GET_PERFORMANCE_TIMI15 = \"getPerformanceTiming\"; // Count: 2\r\nexport var _DYN_NAVIGATION_START = \"navigationStart\"; // Count: 4\r\nexport var _DYN_SHOULD_COLLECT_DURAT16 = \"shouldCollectDuration\"; // Count: 3\r\nexport var _DYN_IS_PERFORMANCE_TIMIN17 = \"isPerformanceTimingDataReady\"; // Count: 2\r\nexport var _DYN_RESPONSE_START = \"responseStart\"; // Count: 5\r\nexport var _DYN_REQUEST_START = \"requestStart\"; // Count: 3\r\nexport var _DYN_LOAD_EVENT_END = \"loadEventEnd\"; // Count: 4\r\nexport var _DYN_RESPONSE_END = \"responseEnd\"; // Count: 5\r\nexport var _DYN_CONNECT_END = \"connectEnd\"; // Count: 4\r\nexport var _DYN_PAGE_VISIT_START_TIM18 = \"pageVisitStartTime\"; // Count: 2\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, arrForEach, dumpObj, getDocument, getExceptionName, getLocation, isNullOrUndefined } from \"@microsoft/applicationinsights-core-js\";\r\nimport { getPerformance, isUndefined, isWebWorker, scheduleTimeout } from \"@nevware21/ts-utils\";\r\nimport { _DYN_DURATION, _DYN_GET_ENTRIES_BY_TYPE, _DYN_GET_PERFORMANCE_TIMI15, _DYN_HREF, _DYN_IS_PERFORMANCE_TIMIN14, _DYN_IS_PERFORMANCE_TIMIN17, _DYN_LENGTH, _DYN_NAVIGATION_START, _DYN_POPULATE_PAGE_VIEW_P4, _DYN_PROPERTIES, _DYN_SEND_PAGE_VIEW_INTER2, _DYN_SEND_PAGE_VIEW_PERFO3, _DYN_SHOULD_COLLECT_DURAT16, _DYN_START_TIME, _DYN_TRACK_PAGE_VIEW } from \"../../__DynamicConstants\";\r\n/**\r\n * Class encapsulates sending page views and page view performance telemetry.\r\n */\r\nvar PageViewManager = /** @class */ (function () {\r\n    function PageViewManager(appInsights, overridePageViewDuration, core, pageViewPerformanceManager) {\r\n        dynamicProto(PageViewManager, this, function (_self) {\r\n            var queueTimer = null;\r\n            var itemQueue = [];\r\n            var pageViewPerformanceSent = false;\r\n            var firstPageViewSent = false;\r\n            var _logger;\r\n            if (core) {\r\n                _logger = core.logger;\r\n            }\r\n            function _flushChannels(isAsync) {\r\n                if (core) {\r\n                    core.flush(isAsync, function () {\r\n                        // Event flushed, callback added to prevent promise creation\r\n                    });\r\n                }\r\n            }\r\n            function _startTimer() {\r\n                if (!queueTimer) {\r\n                    queueTimer = scheduleTimeout((function () {\r\n                        queueTimer = null;\r\n                        var allItems = itemQueue.slice(0);\r\n                        var doFlush = false;\r\n                        itemQueue = [];\r\n                        arrForEach(allItems, function (item) {\r\n                            if (!item()) {\r\n                                // Not processed so rescheduled\r\n                                itemQueue.push(item);\r\n                            }\r\n                            else {\r\n                                doFlush = true;\r\n                            }\r\n                        });\r\n                        if (itemQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                            _startTimer();\r\n                        }\r\n                        if (doFlush) {\r\n                            // We process at least one item so flush the queue\r\n                            _flushChannels(true);\r\n                        }\r\n                    }), 100);\r\n                }\r\n            }\r\n            function _addQueue(cb) {\r\n                itemQueue.push(cb);\r\n                _startTimer();\r\n            }\r\n            _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */] = function (pageView, customProperties) {\r\n                var name = pageView.name;\r\n                if (isNullOrUndefined(name) || typeof name !== \"string\") {\r\n                    var doc = getDocument();\r\n                    name = pageView.name = doc && doc.title || \"\";\r\n                }\r\n                var uri = pageView.uri;\r\n                if (isNullOrUndefined(uri) || typeof uri !== \"string\") {\r\n                    var location_1 = getLocation();\r\n                    uri = pageView.uri = location_1 && location_1[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n                }\r\n                if (!firstPageViewSent) {\r\n                    var perf = getPerformance();\r\n                    // Access the performance timing object\r\n                    var navigationEntries = (perf && perf[_DYN_GET_ENTRIES_BY_TYPE /* @min:%2egetEntriesByType */] && perf[_DYN_GET_ENTRIES_BY_TYPE /* @min:%2egetEntriesByType */](\"navigation\"));\r\n                    // Edge Case the navigation Entries may return an empty array and the timeOrigin is not supported on IE\r\n                    if (navigationEntries && navigationEntries[0] && !isUndefined(perf.timeOrigin)) {\r\n                        // Get the value of loadEventStart\r\n                        var loadEventStart = navigationEntries[0].loadEventStart;\r\n                        pageView[_DYN_START_TIME /* @min:%2estartTime */] = new Date(perf.timeOrigin + loadEventStart);\r\n                    }\r\n                    else {\r\n                        // calculate the start time manually\r\n                        var duration_1 = ((customProperties || pageView[_DYN_PROPERTIES /* @min:%2eproperties */] || {})[_DYN_DURATION /* @min:%2eduration */] || 0);\r\n                        pageView[_DYN_START_TIME /* @min:%2estartTime */] = new Date(new Date().getTime() - duration_1);\r\n                    }\r\n                    firstPageViewSent = true;\r\n                }\r\n                // case 1a. if performance timing is not supported by the browser, send the page view telemetry with the duration provided by the user. If the user\r\n                // do not provide the duration, set duration to undefined\r\n                // Also this is case 4\r\n                if (!pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN14 /* @min:%2eisPerformanceTimingSupported */]()) {\r\n                    appInsights[_DYN_SEND_PAGE_VIEW_INTER2 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n                    _flushChannels(true);\r\n                    if (!isWebWorker()) {\r\n                        // no navigation timing (IE 8, iOS Safari 8.4, Opera Mini 8 - see http://caniuse.com/#feat=nav-timing)\r\n                        _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 25 /* _eInternalMessageId.NavigationTimingNotSupported */, \"trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.\");\r\n                    }\r\n                    return;\r\n                }\r\n                var pageViewSent = false;\r\n                var customDuration;\r\n                // if the performance timing is supported by the browser, calculate the custom duration\r\n                var start = pageViewPerformanceManager[_DYN_GET_PERFORMANCE_TIMI15 /* @min:%2egetPerformanceTiming */]()[_DYN_NAVIGATION_START /* @min:%2enavigationStart */];\r\n                if (start > 0) {\r\n                    customDuration = dateTimeUtilsDuration(start, +new Date);\r\n                    if (!pageViewPerformanceManager[_DYN_SHOULD_COLLECT_DURAT16 /* @min:%2eshouldCollectDuration */](customDuration)) {\r\n                        customDuration = undefined;\r\n                    }\r\n                }\r\n                // if the user has provided duration, send a page view telemetry with the provided duration. Otherwise, if\r\n                // overridePageViewDuration is set to true, send a page view telemetry with the custom duration calculated earlier\r\n                var duration;\r\n                if (!isNullOrUndefined(customProperties) &&\r\n                    !isNullOrUndefined(customProperties[_DYN_DURATION /* @min:%2eduration */])) {\r\n                    duration = customProperties[_DYN_DURATION /* @min:%2eduration */];\r\n                }\r\n                if (overridePageViewDuration || !isNaN(duration)) {\r\n                    if (isNaN(duration)) {\r\n                        // case 3\r\n                        if (!customProperties) {\r\n                            customProperties = {};\r\n                        }\r\n                        customProperties[_DYN_DURATION /* @min:%2eduration */] = customDuration;\r\n                    }\r\n                    // case 2\r\n                    appInsights[_DYN_SEND_PAGE_VIEW_INTER2 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n                    _flushChannels(true);\r\n                    pageViewSent = true;\r\n                }\r\n                // now try to send the page view performance telemetry\r\n                var maxDurationLimit = 60000;\r\n                if (!customProperties) {\r\n                    customProperties = {};\r\n                }\r\n                // Queue the event for processing\r\n                _addQueue(function () {\r\n                    var processed = false;\r\n                    try {\r\n                        if (pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN17 /* @min:%2eisPerformanceTimingDataReady */]()) {\r\n                            processed = true;\r\n                            var pageViewPerformance = {\r\n                                name: name,\r\n                                uri: uri\r\n                            };\r\n                            pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P4 /* @min:%2epopulatePageViewPerformanceEvent */](pageViewPerformance);\r\n                            if (!pageViewPerformance.isValid && !pageViewSent) {\r\n                                // If navigation timing gives invalid numbers, then go back to \"override page view duration\" mode.\r\n                                // That's the best value we can get that makes sense.\r\n                                customProperties[_DYN_DURATION /* @min:%2eduration */] = customDuration;\r\n                                appInsights[_DYN_SEND_PAGE_VIEW_INTER2 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n                            }\r\n                            else {\r\n                                if (!pageViewSent) {\r\n                                    customProperties[_DYN_DURATION /* @min:%2eduration */] = pageViewPerformance.durationMs;\r\n                                    appInsights[_DYN_SEND_PAGE_VIEW_INTER2 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n                                }\r\n                                if (!pageViewPerformanceSent) {\r\n                                    appInsights[_DYN_SEND_PAGE_VIEW_PERFO3 /* @min:%2esendPageViewPerformanceInternal */](pageViewPerformance, customProperties);\r\n                                    pageViewPerformanceSent = true;\r\n                                }\r\n                            }\r\n                        }\r\n                        else if (start > 0 && dateTimeUtilsDuration(start, +new Date) > maxDurationLimit) {\r\n                            // if performance timings are not ready but we exceeded the maximum duration limit, just log a page view telemetry\r\n                            // with the maximum duration limit. Otherwise, keep waiting until performance timings are ready\r\n                            processed = true;\r\n                            if (!pageViewSent) {\r\n                                customProperties[_DYN_DURATION /* @min:%2eduration */] = maxDurationLimit;\r\n                                appInsights[_DYN_SEND_PAGE_VIEW_INTER2 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n                            }\r\n                        }\r\n                    }\r\n                    catch (e) {\r\n                        _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 38 /* _eInternalMessageId.TrackPVFailedCalc */, \"trackPageView failed on page load calculation: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                    }\r\n                    return processed;\r\n                });\r\n            };\r\n            _self.teardown = function (unloadCtx, unloadState) {\r\n                if (queueTimer) {\r\n                    queueTimer.cancel();\r\n                    queueTimer = null;\r\n                    var allItems = itemQueue.slice(0);\r\n                    var doFlush_1 = false;\r\n                    itemQueue = [];\r\n                    arrForEach(allItems, function (item) {\r\n                        if (item()) {\r\n                            doFlush_1 = true;\r\n                        }\r\n                    });\r\n                }\r\n            };\r\n        });\r\n    }\r\n// Removed Stub for PageViewManager.prototype.trackPageView.\r\n// Removed Stub for PageViewManager.prototype.teardown.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    PageViewManager.__ieDyn=1;\n\n    return PageViewManager;\r\n}());\r\nexport { PageViewManager };\r\n//# sourceMappingURL=PageViewManager.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateTimeUtilsDuration, msToTimeSpan } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, getNavigator, getPerformance, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strIndexOf } from \"@nevware21/ts-utils\";\r\nimport { _DYN_CONNECT_END, _DYN_DURATION, _DYN_GET_ENTRIES_BY_TYPE, _DYN_GET_PERFORMANCE_TIMI15, _DYN_IS_PERFORMANCE_TIMIN14, _DYN_IS_PERFORMANCE_TIMIN17, _DYN_LENGTH, _DYN_LOAD_EVENT_END, _DYN_NAVIGATION_START, _DYN_POPULATE_PAGE_VIEW_P4, _DYN_REQUEST_START, _DYN_RESPONSE_END, _DYN_RESPONSE_START, _DYN_SHOULD_COLLECT_DURAT16, _DYN_START_TIME } from \"../../__DynamicConstants\";\r\nvar MAX_DURATION_ALLOWED = 3600000; // 1h\r\nvar botAgentNames = [\"googlebot\", \"adsbot-google\", \"apis-google\", \"mediapartners-google\"];\r\nfunction _isPerformanceTimingSupported() {\r\n    var perf = getPerformance();\r\n    return perf && !!perf.timing;\r\n}\r\nfunction _isPerformanceNavigationTimingSupported() {\r\n    var perf = getPerformance();\r\n    return perf && perf.getEntriesByType && perf.getEntriesByType(\"navigation\")[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n}\r\nfunction _isPerformanceTimingDataReady() {\r\n    var perf = getPerformance();\r\n    var timing = perf ? perf.timing : 0;\r\n    return timing\r\n        && timing.domainLookupStart > 0\r\n        && timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */] > 0\r\n        && timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */] > 0\r\n        && timing[_DYN_REQUEST_START /* @min:%2erequestStart */] > 0\r\n        && timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */] > 0\r\n        && timing[_DYN_RESPONSE_END /* @min:%2eresponseEnd */] > 0\r\n        && timing[_DYN_CONNECT_END /* @min:%2econnectEnd */] > 0\r\n        && timing.domLoading > 0;\r\n}\r\nfunction _getPerformanceTiming() {\r\n    if (_isPerformanceTimingSupported()) {\r\n        return getPerformance().timing;\r\n    }\r\n    return null;\r\n}\r\nfunction _getPerformanceNavigationTiming() {\r\n    if (_isPerformanceNavigationTimingSupported()) {\r\n        return getPerformance()[_DYN_GET_ENTRIES_BY_TYPE /* @min:%2egetEntriesByType */](\"navigation\")[0];\r\n    }\r\n    return null;\r\n}\r\n/**\r\n* This method tells if given durations should be excluded from collection.\r\n*/\r\nfunction _shouldCollectDuration() {\r\n    var durations = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        durations[_i] = arguments[_i];\r\n    }\r\n    var _navigator = getNavigator() || {};\r\n    // a full list of Google crawlers user agent strings - https://support.google.com/webmasters/answer/1061943?hl=en\r\n    var userAgent = _navigator.userAgent;\r\n    var isGoogleBot = false;\r\n    if (userAgent) {\r\n        for (var i = 0; i < botAgentNames[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n            isGoogleBot = isGoogleBot || strIndexOf(userAgent.toLowerCase(), botAgentNames[i]) !== -1;\r\n        }\r\n    }\r\n    if (isGoogleBot) {\r\n        // Don't report durations for GoogleBot, it is returning invalid values in performance.timing API.\r\n        return false;\r\n    }\r\n    else {\r\n        // for other page views, don't report if it's outside of a reasonable range\r\n        for (var i = 0; i < durations[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n            if (durations[i] < 0 || durations[i] >= MAX_DURATION_ALLOWED) {\r\n                return false;\r\n            }\r\n        }\r\n    }\r\n    return true;\r\n}\r\n/**\r\n * Class encapsulates sending page view performance telemetry.\r\n */\r\nvar PageViewPerformanceManager = /** @class */ (function () {\r\n    function PageViewPerformanceManager(core) {\r\n        var _logger = safeGetLogger(core);\r\n        dynamicProto(PageViewPerformanceManager, this, function (_self) {\r\n            _self[_DYN_POPULATE_PAGE_VIEW_P4 /* @min:%2epopulatePageViewPerformanceEvent */] = function (pageViewPerformance) {\r\n                pageViewPerformance.isValid = false;\r\n                /*\r\n                 * http://www.w3.org/TR/navigation-timing/#processing-model\r\n                 *  |-navigationStart\r\n                 *  |             |-connectEnd\r\n                 *  |             ||-requestStart\r\n                 *  |             ||             |-responseStart\r\n                 *  |             ||             |              |-responseEnd\r\n                 *  |             ||             |              |\r\n                 *  |             ||             |              |         |-loadEventEnd\r\n                 *  |---network---||---request---|---response---|---dom---|\r\n                 *  |--------------------------total----------------------|\r\n                 *\r\n                 *  total = The difference between the load event of the current document is completed and the first recorded timestamp of the performance entry : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#duration\r\n                 *  network = Redirect time + App Cache + DNS lookup time + TCP connection time\r\n                 *  request = Request time : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#request_time\r\n                 *  response = Response time\r\n                 *  dom = Document load time : https://html.spec.whatwg.org/multipage/dom.html#document-load-timing-info\r\n                 *      = Document processing time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#document_processing\r\n                 *      + Loading time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#loading\r\n                 */\r\n                var navigationTiming = _getPerformanceNavigationTiming();\r\n                var timing = _getPerformanceTiming();\r\n                var total = 0;\r\n                var network = 0;\r\n                var request = 0;\r\n                var response = 0;\r\n                var dom = 0;\r\n                if (navigationTiming || timing) {\r\n                    if (navigationTiming) {\r\n                        total = navigationTiming[_DYN_DURATION /* @min:%2eduration */];\r\n                        /**\r\n                         * support both cases:\r\n                         * - startTime is always zero: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming\r\n                         * - for older browsers where the startTime is not zero\r\n                         */\r\n                        network = navigationTiming[_DYN_START_TIME /* @min:%2estartTime */] === 0 ? navigationTiming[_DYN_CONNECT_END /* @min:%2econnectEnd */] : dateTimeUtilsDuration(navigationTiming[_DYN_START_TIME /* @min:%2estartTime */], navigationTiming[_DYN_CONNECT_END /* @min:%2econnectEnd */]);\r\n                        request = dateTimeUtilsDuration(navigationTiming.requestStart, navigationTiming[_DYN_RESPONSE_START /* @min:%2eresponseStart */]);\r\n                        response = dateTimeUtilsDuration(navigationTiming[_DYN_RESPONSE_START /* @min:%2eresponseStart */], navigationTiming[_DYN_RESPONSE_END /* @min:%2eresponseEnd */]);\r\n                        dom = dateTimeUtilsDuration(navigationTiming.responseEnd, navigationTiming[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n                    }\r\n                    else {\r\n                        total = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */], timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n                        network = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */], timing[_DYN_CONNECT_END /* @min:%2econnectEnd */]);\r\n                        request = dateTimeUtilsDuration(timing.requestStart, timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */]);\r\n                        response = dateTimeUtilsDuration(timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */], timing[_DYN_RESPONSE_END /* @min:%2eresponseEnd */]);\r\n                        dom = dateTimeUtilsDuration(timing.responseEnd, timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n                    }\r\n                    if (total === 0) {\r\n                        _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 10 /* _eInternalMessageId.ErrorPVCalc */, \"error calculating page view performance.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n                    }\r\n                    else if (!_self[_DYN_SHOULD_COLLECT_DURAT16 /* @min:%2eshouldCollectDuration */](total, network, request, response, dom)) {\r\n                        _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 45 /* _eInternalMessageId.InvalidDurationValue */, \"Invalid page load duration value. Browser perf data won't be sent.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n                    }\r\n                    else if (total < Math.floor(network) + Math.floor(request) + Math.floor(response) + Math.floor(dom)) {\r\n                        // some browsers may report individual components incorrectly so that the sum of the parts will be bigger than total PLT\r\n                        // in this case, don't report client performance from this page\r\n                        _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 8 /* _eInternalMessageId.ClientPerformanceMathError */, \"client performance math error.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n                    }\r\n                    else {\r\n                        pageViewPerformance.durationMs = total;\r\n                        // // convert to timespans\r\n                        pageViewPerformance.perfTotal = pageViewPerformance[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(total);\r\n                        pageViewPerformance.networkConnect = msToTimeSpan(network);\r\n                        pageViewPerformance.sentRequest = msToTimeSpan(request);\r\n                        pageViewPerformance.receivedResponse = msToTimeSpan(response);\r\n                        pageViewPerformance.domProcessing = msToTimeSpan(dom);\r\n                        pageViewPerformance.isValid = true;\r\n                    }\r\n                }\r\n            };\r\n            _self[_DYN_GET_PERFORMANCE_TIMI15 /* @min:%2egetPerformanceTiming */] = _getPerformanceTiming;\r\n            _self[_DYN_IS_PERFORMANCE_TIMIN14 /* @min:%2eisPerformanceTimingSupported */] = _isPerformanceTimingSupported;\r\n            _self[_DYN_IS_PERFORMANCE_TIMIN17 /* @min:%2eisPerformanceTimingDataReady */] = _isPerformanceTimingDataReady;\r\n            _self[_DYN_SHOULD_COLLECT_DURAT16 /* @min:%2eshouldCollectDuration */] = _shouldCollectDuration;\r\n        });\r\n    }\r\n// Removed Stub for PageViewPerformanceManager.prototype.populatePageViewPerformanceEvent.\r\n// Removed Stub for PageViewPerformanceManager.prototype.getPerformanceTiming.\r\n// Removed Stub for PageViewPerformanceManager.prototype.isPerformanceTimingSupported.\r\n// Removed Stub for PageViewPerformanceManager.prototype.isPerformanceTimingDataReady.\r\n// Removed Stub for PageViewPerformanceManager.prototype.shouldCollectDuration.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    PageViewPerformanceManager.__ieDyn=1;\n\n    return PageViewPerformanceManager;\r\n}());\r\nexport { PageViewPerformanceManager };\r\n//# sourceMappingURL=PageViewPerformanceManager.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* ApplicationInsights.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nvar _a;\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AnalyticsPluginIdentifier, Event as EventTelemetry, Exception, Metric, PageView, PageViewPerformance, PropertiesPluginIdentifier, RemoteDependencyData, Trace, createDistributedTraceContextFromTrace, createDomEvent, createTelemetryItem, dataSanitizeString, isCrossOriginError, strNotSpecified, utlDisableStorage, utlEnableStorage, utlSetStoragePrefix } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, InstrumentEvent, arrForEach, cfgDfBoolean, cfgDfMerge, cfgDfSet, cfgDfString, cfgDfValidate, createProcessTelemetryContext, createUniqueNamespace, dumpObj, eventOff, eventOn, findAllScripts, generateW3CId, getDocument, getExceptionName, getHistory, getLocation, getWindow, hasHistory, hasWindow, isFunction, isNullOrUndefined, isString, isUndefined, mergeEvtNamespace, onConfigChange, safeGetCookieMgr, strUndefined, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { isArray, isError, objDeepFreeze, objDefine, scheduleTimeout, strIndexOf } from \"@nevware21/ts-utils\";\r\nimport { _DYN_ADD_TELEMETRY_INITIA7, _DYN_AUTO_TRACK_PAGE_VISI9, _DYN_AUTO_UNHANDLED_PROMI13, _DYN_COLUMN_NUMBER, _DYN_CORE, _DYN_DATA_TYPE, _DYN_DIAG_LOG, _DYN_DURATION, _DYN_ENABLE_AUTO_ROUTE_TR11, _DYN_ENABLE_UNHANDLED_PRO12, _DYN_ENVELOPE_TYPE, _DYN_ERROR, _DYN_ERROR_SRC, _DYN_EXCEPTION, _DYN_HREF, _DYN_IS_BROWSER_LINK_TRAC10, _DYN_IS_STORAGE_USE_DISAB0, _DYN_LENGTH, _DYN_LINE_NUMBER, _DYN_MESSAGE, _DYN_OVERRIDE_PAGE_VIEW_D8, _DYN_POPULATE_PAGE_VIEW_P4, _DYN_PROPERTIES, _DYN_SEND_EXCEPTION_INTER5, _DYN_SEND_PAGE_VIEW_INTER2, _DYN_SEND_PAGE_VIEW_PERFO3, _DYN_START_TIME, _DYN_TO_STRING, _DYN_TRACK, _DYN_TRACK_PAGE_VIEW, _DYN_TRACK_PREVIOUS_PAGE_1, _DYN__ADD_HOOK, _DYN__CREATE_AUTO_EXCEPTI6, _DYN__ONERROR } from \"../__DynamicConstants\";\r\nimport { PageViewManager } from \"./Telemetry/PageViewManager\";\r\nimport { PageViewPerformanceManager } from \"./Telemetry/PageViewPerformanceManager\";\r\nimport { PageVisitTimeManager } from \"./Telemetry/PageVisitTimeManager\";\r\nimport { Timing } from \"./Timing\";\r\nvar strEvent = \"event\";\r\nfunction _dispatchEvent(target, evnt) {\r\n    if (target && target.dispatchEvent && evnt) {\r\n        target.dispatchEvent(evnt);\r\n    }\r\n}\r\nfunction _getReason(error) {\r\n    if (error && error.reason) {\r\n        var reason = error.reason;\r\n        if (!isString(reason) && isFunction(reason[_DYN_TO_STRING /* @min:%2etoString */])) {\r\n            return reason[_DYN_TO_STRING /* @min:%2etoString */]();\r\n        }\r\n        return dumpObj(reason);\r\n    }\r\n    // Pass the original object down which will eventually get evaluated for any message or description\r\n    return error || \"\";\r\n}\r\nvar MinMilliSeconds = 60000;\r\nvar defaultValues = objDeepFreeze((_a = {\r\n        sessionRenewalMs: cfgDfSet(_chkConfigMilliseconds, 30 * 60 * 1000),\r\n        sessionExpirationMs: cfgDfSet(_chkConfigMilliseconds, 24 * 60 * 60 * 1000),\r\n        disableExceptionTracking: cfgDfBoolean()\r\n    },\r\n    _a[_DYN_AUTO_TRACK_PAGE_VISI9 /* @min:autoTrackPageVisitTime */] = cfgDfBoolean(),\r\n    _a[_DYN_OVERRIDE_PAGE_VIEW_D8 /* @min:overridePageViewDuration */] = cfgDfBoolean(),\r\n    _a[_DYN_ENABLE_UNHANDLED_PRO12 /* @min:enableUnhandledPromiseRejectionTracking */] = cfgDfBoolean(),\r\n    _a[_DYN_AUTO_UNHANDLED_PROMI13 /* @min:autoUnhandledPromiseInstrumented */] = false,\r\n    _a.samplingPercentage = cfgDfValidate(_chkSampling, 100),\r\n    _a[_DYN_IS_STORAGE_USE_DISAB0 /* @min:isStorageUseDisabled */] = cfgDfBoolean(),\r\n    _a[_DYN_IS_BROWSER_LINK_TRAC10 /* @min:isBrowserLinkTrackingEnabled */] = cfgDfBoolean(),\r\n    _a[_DYN_ENABLE_AUTO_ROUTE_TR11 /* @min:enableAutoRouteTracking */] = cfgDfBoolean(),\r\n    _a.namePrefix = cfgDfString(),\r\n    _a.enableDebug = cfgDfBoolean(),\r\n    _a.disableFlushOnBeforeUnload = cfgDfBoolean(),\r\n    _a.disableFlushOnUnload = cfgDfBoolean(false, \"disableFlushOnBeforeUnload\"),\r\n    _a.expCfg = cfgDfMerge({ inclScripts: false, expLog: undefined, maxLogs: 50 }),\r\n    _a));\r\nfunction _chkConfigMilliseconds(value, defValue) {\r\n    value = value || defValue;\r\n    if (value < MinMilliSeconds) {\r\n        value = MinMilliSeconds;\r\n    }\r\n    return +value;\r\n}\r\nfunction _chkSampling(value) {\r\n    return !isNaN(value) && value > 0 && value <= 100;\r\n}\r\nfunction _updateStorageUsage(extConfig) {\r\n    // Not resetting the storage usage as someone may have manually called utlDisableStorage, so this will only\r\n    // reset based if the configuration option is provided\r\n    if (!isUndefined(extConfig[_DYN_IS_STORAGE_USE_DISAB0 /* @min:%2eisStorageUseDisabled */])) {\r\n        if (extConfig[_DYN_IS_STORAGE_USE_DISAB0 /* @min:%2eisStorageUseDisabled */]) {\r\n            utlDisableStorage();\r\n        }\r\n        else {\r\n            utlEnableStorage();\r\n        }\r\n    }\r\n}\r\nvar AnalyticsPlugin = /** @class */ (function (_super) {\r\n    __extends(AnalyticsPlugin, _super);\r\n    function AnalyticsPlugin() {\r\n        var _this = _super.call(this) || this;\r\n        _this.identifier = AnalyticsPluginIdentifier; // do not change name or priority\r\n        _this.priority = 180; // take from reserved priority range 100- 200\r\n        _this.autoRoutePVDelay = 500; // ms; Time to wait after a route change before triggering a pageview to allow DOM changes to take place\r\n        var _eventTracking;\r\n        var _pageTracking;\r\n        var _pageViewManager;\r\n        var _pageViewPerformanceManager;\r\n        var _pageVisitTimeManager;\r\n        var _preInitTelemetryInitializers;\r\n        var _isBrowserLinkTrackingEnabled;\r\n        var _browserLinkInitializerAdded;\r\n        var _enableAutoRouteTracking;\r\n        var _historyListenerAdded;\r\n        var _disableExceptionTracking;\r\n        var _autoExceptionInstrumented;\r\n        var _enableUnhandledPromiseRejectionTracking;\r\n        var _autoUnhandledPromiseInstrumented;\r\n        var _extConfig;\r\n        var _autoTrackPageVisitTime;\r\n        var _expCfg;\r\n        // Counts number of trackAjax invocations.\r\n        // By default we only monitor X ajax call per view to avoid too much load.\r\n        // Default value is set in config.\r\n        // This counter keeps increasing even after the limit is reached.\r\n        var _trackAjaxAttempts = 0;\r\n        // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n        var _prevUri; // Assigned in the constructor\r\n        var _currUri;\r\n        var _evtNamespace;\r\n        dynamicProto(AnalyticsPlugin, _this, function (_self, _base) {\r\n            var _addHook = _base[_DYN__ADD_HOOK /* @min:%2e_addHook */];\r\n            _initDefaults();\r\n            _self.getCookieMgr = function () {\r\n                return safeGetCookieMgr(_self[_DYN_CORE /* @min:%2ecore */]);\r\n            };\r\n            _self.processTelemetry = function (env, itemCtx) {\r\n                _self.processNext(env, itemCtx);\r\n            };\r\n            _self.trackEvent = function (event, customProperties) {\r\n                try {\r\n                    var telemetryItem = createTelemetryItem(event, EventTelemetry[_DYN_DATA_TYPE /* @min:%2edataType */], EventTelemetry[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n                    _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * Start timing an extended event. Call `stopTrackEvent` to log the event when it ends.\r\n             * @param   name    A string that identifies this event uniquely within the document.\r\n             */\r\n            _self.startTrackEvent = function (name) {\r\n                try {\r\n                    _eventTracking.start(name);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 29 /* _eInternalMessageId.StartTrackEventFailed */, \"startTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * Log an extended event that you started timing with `startTrackEvent`.\r\n             * @param   name    The string you used to identify this event in `startTrackEvent`.\r\n             * @param   properties  map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n             * @param   measurements    map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n             */\r\n            _self.stopTrackEvent = function (name, properties, measurements) {\r\n                try {\r\n                    _eventTracking.stop(name, undefined, properties, measurements);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 30 /* _eInternalMessageId.StopTrackEventFailed */, \"stopTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * @description Log a diagnostic message\r\n             * @param trace\r\n             * @param ICustomProperties.\r\n             * @memberof ApplicationInsights\r\n             */\r\n            _self.trackTrace = function (trace, customProperties) {\r\n                try {\r\n                    var telemetryItem = createTelemetryItem(trace, Trace[_DYN_DATA_TYPE /* @min:%2edataType */], Trace[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n                    _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * @description Log a numeric value that is not associated with a specific event. Typically\r\n             * used to send regular reports of performance indicators. To send single measurement, just\r\n             * use the name and average fields of {@link IMetricTelemetry}. If you take measurements\r\n             * frequently, you can reduce the telemetry bandwidth by aggregating multiple measurements\r\n             * and sending the resulting average at intervals\r\n             * @param metric - input object argument. Only name and average are mandatory.\r\n             * @param } customProperties additional data used to filter metrics in the\r\n             * portal. Defaults to empty.\r\n             * @memberof ApplicationInsights\r\n             */\r\n            _self.trackMetric = function (metric, customProperties) {\r\n                try {\r\n                    var telemetryItem = createTelemetryItem(metric, Metric[_DYN_DATA_TYPE /* @min:%2edataType */], Metric[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n                    _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 36 /* _eInternalMessageId.TrackMetricFailed */, \"trackMetric failed, metric will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * Logs that a page or other item was viewed.\r\n             * @param IPageViewTelemetry - The string you used as the name in startTrackPage. Defaults to the document title.\r\n             * @param customProperties - Additional data used to filter events and metrics. Defaults to empty.\r\n             * If a user wants to provide duration for pageLoad, it'll have to be in pageView.properties.duration\r\n             */\r\n            _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */] = function (pageView, customProperties) {\r\n                try {\r\n                    var inPv = pageView || {};\r\n                    _pageViewManager[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */](inPv, __assign(__assign(__assign({}, inPv.properties), inPv.measurements), customProperties));\r\n                    if (_autoTrackPageVisitTime) {\r\n                        _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_1 /* @min:%2etrackPreviousPageVisit */](inPv.name, inPv.uri);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageView failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * Create a page view telemetry item and send it to the SDK pipeline through the core.track API\r\n             * @param pageView - Page view item to be sent\r\n             * @param properties - Custom properties (Part C) that a user can add to the telemetry item\r\n             * @param systemProperties - System level properties (Part A) that a user can add to the telemetry item\r\n             */\r\n            _self[_DYN_SEND_PAGE_VIEW_INTER2 /* @min:%2esendPageViewInternal */] = function (pageView, properties, systemProperties) {\r\n                var doc = getDocument();\r\n                if (doc) {\r\n                    pageView.refUri = pageView.refUri === undefined ? doc.referrer : pageView.refUri;\r\n                }\r\n                if (isNullOrUndefined(pageView[_DYN_START_TIME /* @min:%2estartTime */])) {\r\n                    // calculate the start time manually\r\n                    var duration = ((properties || pageView[_DYN_PROPERTIES /* @min:%2eproperties */] || {})[_DYN_DURATION /* @min:%2eduration */] || 0);\r\n                    pageView[_DYN_START_TIME /* @min:%2estartTime */] = new Date(new Date().getTime() - duration);\r\n                }\r\n                var telemetryItem = createTelemetryItem(pageView, PageView[_DYN_DATA_TYPE /* @min:%2edataType */], PageView[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties, systemProperties);\r\n                _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n                // reset ajaxes counter\r\n                _trackAjaxAttempts = 0;\r\n            };\r\n            /**\r\n             * @ignore INTERNAL ONLY\r\n             * @param pageViewPerformance\r\n             * @param properties\r\n             */\r\n            _self[_DYN_SEND_PAGE_VIEW_PERFO3 /* @min:%2esendPageViewPerformanceInternal */] = function (pageViewPerformance, properties, systemProperties) {\r\n                var telemetryItem = createTelemetryItem(pageViewPerformance, PageViewPerformance[_DYN_DATA_TYPE /* @min:%2edataType */], PageViewPerformance[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties, systemProperties);\r\n                _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n            };\r\n            /**\r\n             * Send browser performance metrics.\r\n             * @param pageViewPerformance\r\n             * @param customProperties\r\n             */\r\n            _self.trackPageViewPerformance = function (pageViewPerformance, customProperties) {\r\n                var inPvp = pageViewPerformance || {};\r\n                try {\r\n                    _pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P4 /* @min:%2epopulatePageViewPerformanceEvent */](inPvp);\r\n                    _self[_DYN_SEND_PAGE_VIEW_PERFO3 /* @min:%2esendPageViewPerformanceInternal */](inPvp, customProperties);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageViewPerformance failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n             * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n             * and send the event.\r\n             * @param name - A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n             */\r\n            _self.startTrackPage = function (name) {\r\n                try {\r\n                    if (typeof name !== \"string\") {\r\n                        var doc = getDocument();\r\n                        name = doc && doc.title || \"\";\r\n                    }\r\n                    _pageTracking.start(name);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 31 /* _eInternalMessageId.StartTrackFailed */, \"startTrackPage failed, page view may not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n             * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n             * @param   name  The string you used as the name in startTrackPage. Defaults to the document title.\r\n             * @param   url   String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n             * @param   properties  map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n             * @param   measurements    map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n             */\r\n            _self.stopTrackPage = function (name, url, properties, measurement) {\r\n                try {\r\n                    if (typeof name !== \"string\") {\r\n                        var doc = getDocument();\r\n                        name = doc && doc.title || \"\";\r\n                    }\r\n                    if (typeof url !== \"string\") {\r\n                        var loc = getLocation();\r\n                        url = loc && loc[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n                    }\r\n                    _pageTracking.stop(name, url, properties, measurement);\r\n                    if (_autoTrackPageVisitTime) {\r\n                        _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_1 /* @min:%2etrackPreviousPageVisit */](name, url);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 32 /* _eInternalMessageId.StopTrackFailed */, \"stopTrackPage failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n            * @ignore INTERNAL ONLY\r\n            * @param exception\r\n            * @param properties\r\n            * @param systemProperties\r\n            */\r\n            _self[_DYN_SEND_EXCEPTION_INTER5 /* @min:%2esendExceptionInternal */] = function (exception, customProperties, systemProperties) {\r\n                // Adding additional edge cases to handle\r\n                // - Not passing anything (null / undefined)\r\n                var theError = (exception && (exception[_DYN_EXCEPTION /* @min:%2eexception */] || exception[_DYN_ERROR /* @min:%2eerror */])) ||\r\n                    // - Handle someone calling trackException based of v1 API where the exception was the Error\r\n                    isError(exception) && exception ||\r\n                    // - Handles no error being defined and instead of creating a new Error() instance attempt to map so any stacktrace\r\n                    //   is preserved and does not list ApplicationInsights code as the source\r\n                    { name: (exception && typeof exception), message: exception || strNotSpecified };\r\n                // If no exception object was passed assign to an empty object to avoid internal exceptions\r\n                exception = exception || {};\r\n                var exceptionPartB = new Exception(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), theError, exception[_DYN_PROPERTIES /* @min:%2eproperties */] || customProperties, exception.measurements, exception.severityLevel, exception.id).toInterface();\r\n                var doc = getDocument();\r\n                if (doc && (_expCfg === null || _expCfg === void 0 ? void 0 : _expCfg.inclScripts)) {\r\n                    var scriptsInfo = findAllScripts(doc);\r\n                    exceptionPartB[_DYN_PROPERTIES /* @min:%2eproperties */][\"exceptionScripts\"] = JSON.stringify(scriptsInfo);\r\n                }\r\n                if (_expCfg === null || _expCfg === void 0 ? void 0 : _expCfg.expLog) {\r\n                    var logs = _expCfg.expLog();\r\n                    if (logs && logs.logs && isArray(logs.logs)) {\r\n                        exceptionPartB[_DYN_PROPERTIES /* @min:%2eproperties */][\"exceptionLog\"] = logs.logs.slice(0, _expCfg.maxLogs).join(\"\\n\");\r\n                    }\r\n                }\r\n                var telemetryItem = createTelemetryItem(exceptionPartB, Exception[_DYN_DATA_TYPE /* @min:%2edataType */], Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties, systemProperties);\r\n                _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n            };\r\n            /**\r\n             * Log an exception you have caught.\r\n             *\r\n             * @param exception -   Object which contains exception to be sent\r\n             * @param } customProperties   Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n             *\r\n             * Any property of type double will be considered a measurement, and will be treated by Application Insights as a metric.\r\n             * @memberof ApplicationInsights\r\n             */\r\n            _self.trackException = function (exception, customProperties) {\r\n                if (exception && !exception[_DYN_EXCEPTION /* @min:%2eexception */] && exception[_DYN_ERROR /* @min:%2eerror */]) {\r\n                    exception[_DYN_EXCEPTION /* @min:%2eexception */] = exception[_DYN_ERROR /* @min:%2eerror */];\r\n                }\r\n                try {\r\n                    _self[_DYN_SEND_EXCEPTION_INTER5 /* @min:%2esendExceptionInternal */](exception, customProperties);\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 35 /* _eInternalMessageId.TrackExceptionFailed */, \"trackException failed, exception will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n            };\r\n            /**\r\n             * @description Custom error handler for Application Insights Analytics\r\n             * @param exception\r\n             * @memberof ApplicationInsights\r\n             */\r\n            _self[_DYN__ONERROR /* @min:%2e_onerror */] = function (exception) {\r\n                var error = exception && exception[_DYN_ERROR /* @min:%2eerror */];\r\n                var evt = exception && exception.evt;\r\n                try {\r\n                    if (!evt) {\r\n                        var _window = getWindow();\r\n                        if (_window) {\r\n                            evt = _window[strEvent];\r\n                        }\r\n                    }\r\n                    var url = (exception && exception.url) || (getDocument() || {}).URL;\r\n                    // If no error source is provided assume the default window.onerror handler\r\n                    var errorSrc = exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */] || \"window.onerror@\" + url + \":\" + (exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0) + \":\" + (exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0);\r\n                    var properties = {\r\n                        errorSrc: errorSrc,\r\n                        url: url,\r\n                        lineNumber: exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0,\r\n                        columnNumber: exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0,\r\n                        message: exception[_DYN_MESSAGE /* @min:%2emessage */]\r\n                    };\r\n                    if (isCrossOriginError(exception.message, exception.url, exception.lineNumber, exception.columnNumber, exception[_DYN_ERROR /* @min:%2eerror */])) {\r\n                        _sendCORSException(Exception[_DYN__CREATE_AUTO_EXCEPTI6 /* @min:%2eCreateAutoException */](\"Script error: The browser's same-origin policy prevents us from getting the details of this exception. Consider using the 'crossorigin' attribute.\", url, exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0, exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0, error, evt, null, errorSrc), properties);\r\n                    }\r\n                    else {\r\n                        if (!exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */]) {\r\n                            exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */] = errorSrc;\r\n                        }\r\n                        _self.trackException({ exception: exception, severityLevel: 3 /* eSeverityLevel.Error */ }, properties);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    var errorString = error ? (error.name + \", \" + error[_DYN_MESSAGE /* @min:%2emessage */]) : \"null\";\r\n                    _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 11 /* _eInternalMessageId.ExceptionWhileLoggingError */, \"_onError threw exception while logging error, error will not be collected: \"\r\n                        + getExceptionName(e), { exception: dumpObj(e), errorString: errorString });\r\n                }\r\n            };\r\n            _self[_DYN_ADD_TELEMETRY_INITIA7 /* @min:%2eaddTelemetryInitializer */] = function (telemetryInitializer) {\r\n                if (_self[_DYN_CORE /* @min:%2ecore */]) {\r\n                    // Just add to the core\r\n                    return _self[_DYN_CORE /* @min:%2ecore */][_DYN_ADD_TELEMETRY_INITIA7 /* @min:%2eaddTelemetryInitializer */](telemetryInitializer);\r\n                }\r\n                // Handle \"pre-initialization\" telemetry initializers (for backward compatibility)\r\n                if (!_preInitTelemetryInitializers) {\r\n                    _preInitTelemetryInitializers = [];\r\n                }\r\n                _preInitTelemetryInitializers.push(telemetryInitializer);\r\n            };\r\n            _self.initialize = function (config, core, extensions, pluginChain) {\r\n                if (_self.isInitialized()) {\r\n                    return;\r\n                }\r\n                if (isNullOrUndefined(core)) {\r\n                    throwError(\"Error initializing\");\r\n                }\r\n                _base.initialize(config, core, extensions, pluginChain);\r\n                try {\r\n                    _evtNamespace = mergeEvtNamespace(createUniqueNamespace(_self.identifier), core.evtNamespace && core.evtNamespace());\r\n                    if (_preInitTelemetryInitializers) {\r\n                        arrForEach(_preInitTelemetryInitializers, function (initializer) {\r\n                            core[_DYN_ADD_TELEMETRY_INITIA7 /* @min:%2eaddTelemetryInitializer */](initializer);\r\n                        });\r\n                        _preInitTelemetryInitializers = null;\r\n                    }\r\n                    _populateDefaults(config);\r\n                    _pageViewPerformanceManager = new PageViewPerformanceManager(_self[_DYN_CORE /* @min:%2ecore */]);\r\n                    _pageViewManager = new PageViewManager(_self, _extConfig.overridePageViewDuration, _self[_DYN_CORE /* @min:%2ecore */], _pageViewPerformanceManager);\r\n                    _pageVisitTimeManager = new PageVisitTimeManager(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });\r\n                    _eventTracking = new Timing(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), \"trackEvent\");\r\n                    _eventTracking.action =\r\n                        function (name, url, duration, properties, measurements) {\r\n                            if (!properties) {\r\n                                properties = {};\r\n                            }\r\n                            if (!measurements) {\r\n                                measurements = {};\r\n                            }\r\n                            properties.duration = duration[_DYN_TO_STRING /* @min:%2etoString */]();\r\n                            _self.trackEvent({ name: name, properties: properties, measurements: measurements });\r\n                        };\r\n                    // initialize page view timing\r\n                    _pageTracking = new Timing(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), \"trackPageView\");\r\n                    _pageTracking.action = function (name, url, duration, properties, measurements) {\r\n                        // duration must be a custom property in order for the collector to extract it\r\n                        if (isNullOrUndefined(properties)) {\r\n                            properties = {};\r\n                        }\r\n                        properties.duration = duration[_DYN_TO_STRING /* @min:%2etoString */]();\r\n                        var pageViewItem = {\r\n                            name: name,\r\n                            uri: url,\r\n                            properties: properties,\r\n                            measurements: measurements\r\n                        };\r\n                        _self[_DYN_SEND_PAGE_VIEW_INTER2 /* @min:%2esendPageViewInternal */](pageViewItem, properties);\r\n                    };\r\n                    if (hasWindow()) {\r\n                        _updateExceptionTracking();\r\n                        _updateLocationChange();\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    // resetting the initialized state because of failure\r\n                    _self.setInitialized(false);\r\n                    throw e;\r\n                }\r\n            };\r\n            _self._doTeardown = function (unloadCtx, unloadState) {\r\n                _pageViewManager && _pageViewManager.teardown(unloadCtx, unloadState);\r\n                // Just register to remove all events associated with this namespace\r\n                eventOff(window, null, null, _evtNamespace);\r\n                _initDefaults();\r\n            };\r\n            function _populateDefaults(config) {\r\n                var identifier = _self.identifier;\r\n                var core = _self[_DYN_CORE /* @min:%2ecore */];\r\n                _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](onConfigChange(config, function () {\r\n                    var ctx = createProcessTelemetryContext(null, config, core);\r\n                    _extConfig = ctx.getExtCfg(identifier, defaultValues);\r\n                    _expCfg = _extConfig.expCfg;\r\n                    _autoTrackPageVisitTime = _extConfig[_DYN_AUTO_TRACK_PAGE_VISI9 /* @min:%2eautoTrackPageVisitTime */];\r\n                    if (config.storagePrefix) {\r\n                        utlSetStoragePrefix(config.storagePrefix);\r\n                    }\r\n                    _updateStorageUsage(_extConfig);\r\n                    // _updateBrowserLinkTracking\r\n                    _isBrowserLinkTrackingEnabled = _extConfig[_DYN_IS_BROWSER_LINK_TRAC10 /* @min:%2eisBrowserLinkTrackingEnabled */];\r\n                    _addDefaultTelemetryInitializers();\r\n                }));\r\n            }\r\n            /**\r\n             * Log a page visit time\r\n             * @param    pageName    Name of page\r\n             * @param    pageVisitDuration Duration of visit to the page in milliseconds\r\n             */\r\n            function trackPageVisitTime(pageName, pageUrl, pageVisitTime) {\r\n                var properties = { PageName: pageName, PageUrl: pageUrl };\r\n                _self.trackMetric({\r\n                    name: \"PageVisitTime\",\r\n                    average: pageVisitTime,\r\n                    max: pageVisitTime,\r\n                    min: pageVisitTime,\r\n                    sampleCount: 1\r\n                }, properties);\r\n            }\r\n            function _addDefaultTelemetryInitializers() {\r\n                if (!_browserLinkInitializerAdded && _isBrowserLinkTrackingEnabled) {\r\n                    var browserLinkPaths_1 = [\"/browserLinkSignalR/\", \"/__browserLink/\"];\r\n                    var dropBrowserLinkRequests = function (envelope) {\r\n                        if (_isBrowserLinkTrackingEnabled && envelope.baseType === RemoteDependencyData[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n                            var remoteData = envelope.baseData;\r\n                            if (remoteData) {\r\n                                for (var i = 0; i < browserLinkPaths_1[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n                                    if (remoteData.target && strIndexOf(remoteData.target, browserLinkPaths_1[i]) >= 0) {\r\n                                        return false;\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                        return true;\r\n                    };\r\n                    _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](_self[_DYN_ADD_TELEMETRY_INITIA7 /* @min:%2eaddTelemetryInitializer */](dropBrowserLinkRequests));\r\n                    _browserLinkInitializerAdded = true;\r\n                }\r\n            }\r\n            function _sendCORSException(exception, properties) {\r\n                var telemetryItem = createTelemetryItem(exception, Exception[_DYN_DATA_TYPE /* @min:%2edataType */], Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties);\r\n                _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n            }\r\n            function _updateExceptionTracking() {\r\n                var _window = getWindow();\r\n                var locn = getLocation(true);\r\n                _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](onConfigChange(_extConfig, function () {\r\n                    _disableExceptionTracking = _extConfig.disableExceptionTracking;\r\n                    if (!_disableExceptionTracking && !_autoExceptionInstrumented && !_extConfig.autoExceptionInstrumented) {\r\n                        // We want to enable exception auto collection and it has not been done so yet\r\n                        _addHook(InstrumentEvent(_window, \"onerror\", {\r\n                            ns: _evtNamespace,\r\n                            rsp: function (callDetails, message, url, lineNumber, columnNumber, error) {\r\n                                if (!_disableExceptionTracking && callDetails.rslt !== true) {\r\n                                    _self[_DYN__ONERROR /* @min:%2e_onerror */](Exception[_DYN__CREATE_AUTO_EXCEPTI6 /* @min:%2eCreateAutoException */](message, url, lineNumber, columnNumber, error, callDetails.evt));\r\n                                }\r\n                            }\r\n                        }, false));\r\n                        _autoExceptionInstrumented = true;\r\n                    }\r\n                }));\r\n                _addUnhandledPromiseRejectionTracking(_window, locn);\r\n            }\r\n            function _updateLocationChange() {\r\n                var win = getWindow();\r\n                var locn = getLocation(true);\r\n                _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](onConfigChange(_extConfig, function () {\r\n                    _enableAutoRouteTracking = _extConfig[_DYN_ENABLE_AUTO_ROUTE_TR11 /* @min:%2eenableAutoRouteTracking */] === true;\r\n                    /**\r\n                     * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n                     */\r\n                    if (win && _enableAutoRouteTracking && !_historyListenerAdded && hasHistory()) {\r\n                        var _history = getHistory();\r\n                        if (isFunction(_history.pushState) && isFunction(_history.replaceState) && typeof Event !== strUndefined) {\r\n                            _addHistoryListener(win, _history, locn);\r\n                        }\r\n                    }\r\n                }));\r\n            }\r\n            function _getDistributedTraceCtx() {\r\n                var distributedTraceCtx = null;\r\n                if (_self[_DYN_CORE /* @min:%2ecore */] && _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx) {\r\n                    distributedTraceCtx = _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx(false);\r\n                }\r\n                if (!distributedTraceCtx) {\r\n                    // Fallback when using an older Core and PropertiesPlugin\r\n                    var properties = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);\r\n                    if (properties) {\r\n                        var context = properties.plugin.context;\r\n                        if (context) {\r\n                            distributedTraceCtx = createDistributedTraceContextFromTrace(context.telemetryTrace);\r\n                        }\r\n                    }\r\n                }\r\n                return distributedTraceCtx;\r\n            }\r\n            /**\r\n             * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n             */\r\n            function _addHistoryListener(win, history, locn) {\r\n                if (_historyListenerAdded) {\r\n                    return;\r\n                }\r\n                // Name Prefix is only referenced during the initial initialization and cannot be changed afterwards\r\n                var namePrefix = _extConfig.namePrefix || \"\";\r\n                function _popstateHandler() {\r\n                    if (_enableAutoRouteTracking) {\r\n                        _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n                    }\r\n                }\r\n                function _locationChangeHandler() {\r\n                    // We always track the changes (if the handler is installed) to handle the feature being disabled between location changes\r\n                    if (_currUri) {\r\n                        _prevUri = _currUri;\r\n                        _currUri = locn && locn[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n                    }\r\n                    else {\r\n                        _currUri = locn && locn[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n                    }\r\n                    if (_enableAutoRouteTracking) {\r\n                        var distributedTraceCtx = _getDistributedTraceCtx();\r\n                        if (distributedTraceCtx) {\r\n                            distributedTraceCtx.setTraceId(generateW3CId());\r\n                            var traceLocationName = \"_unknown_\";\r\n                            if (locn && locn.pathname) {\r\n                                traceLocationName = locn.pathname + (locn.hash || \"\");\r\n                            }\r\n                            // This populates the ai.operation.name which has a maximum size of 1024 so we need to sanitize it\r\n                            distributedTraceCtx.setName(dataSanitizeString(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), traceLocationName));\r\n                        }\r\n                        scheduleTimeout((function (uri) {\r\n                            // todo: override start time so that it is not affected by autoRoutePVDelay\r\n                            _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */]({ refUri: uri, properties: { duration: 0 } }); // SPA route change loading durations are undefined, so send 0\r\n                        }).bind(_self, _prevUri), _self.autoRoutePVDelay);\r\n                    }\r\n                }\r\n                _addHook(InstrumentEvent(history, \"pushState\", {\r\n                    ns: _evtNamespace,\r\n                    rsp: function () {\r\n                        if (_enableAutoRouteTracking) {\r\n                            _dispatchEvent(win, createDomEvent(namePrefix + \"pushState\"));\r\n                            _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n                        }\r\n                    }\r\n                }, true));\r\n                _addHook(InstrumentEvent(history, \"replaceState\", {\r\n                    ns: _evtNamespace,\r\n                    rsp: function () {\r\n                        if (_enableAutoRouteTracking) {\r\n                            _dispatchEvent(win, createDomEvent(namePrefix + \"replaceState\"));\r\n                            _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n                        }\r\n                    }\r\n                }, true));\r\n                eventOn(win, namePrefix + \"popstate\", _popstateHandler, _evtNamespace);\r\n                eventOn(win, namePrefix + \"locationchange\", _locationChangeHandler, _evtNamespace);\r\n                _historyListenerAdded = true;\r\n            }\r\n            function _addUnhandledPromiseRejectionTracking(_window, _location) {\r\n                _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](onConfigChange(_extConfig, function () {\r\n                    _enableUnhandledPromiseRejectionTracking = _extConfig[_DYN_ENABLE_UNHANDLED_PRO12 /* @min:%2eenableUnhandledPromiseRejectionTracking */] === true;\r\n                    _autoExceptionInstrumented = _autoExceptionInstrumented || _extConfig[_DYN_AUTO_UNHANDLED_PROMI13 /* @min:%2eautoUnhandledPromiseInstrumented */];\r\n                    if (_enableUnhandledPromiseRejectionTracking && !_autoUnhandledPromiseInstrumented) {\r\n                        // We want to enable exception auto collection and it has not been done so yet\r\n                        _addHook(InstrumentEvent(_window, \"onunhandledrejection\", {\r\n                            ns: _evtNamespace,\r\n                            rsp: function (callDetails, error) {\r\n                                if (_enableUnhandledPromiseRejectionTracking && callDetails.rslt !== true) { // handled could be typeof function\r\n                                    _self[_DYN__ONERROR /* @min:%2e_onerror */](Exception[_DYN__CREATE_AUTO_EXCEPTI6 /* @min:%2eCreateAutoException */](_getReason(error), _location ? _location[_DYN_HREF /* @min:%2ehref */] : \"\", 0, 0, error, callDetails.evt));\r\n                                }\r\n                            }\r\n                        }, false));\r\n                        _extConfig[_DYN_AUTO_UNHANDLED_PROMI13 /* @min:%2eautoUnhandledPromiseInstrumented */] = _autoUnhandledPromiseInstrumented = true;\r\n                    }\r\n                }));\r\n            }\r\n            /**\r\n             * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n             * @param severity - {eLoggingSeverity} - The severity of the log message\r\n             * @param msgId - {_eInternalLogMessage} - The log message.\r\n             */\r\n            function _throwInternal(severity, msgId, msg, properties, isUserAct) {\r\n                _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]().throwInternal(severity, msgId, msg, properties, isUserAct);\r\n            }\r\n            function _initDefaults() {\r\n                _eventTracking = null;\r\n                _pageTracking = null;\r\n                _pageViewManager = null;\r\n                _pageViewPerformanceManager = null;\r\n                _pageVisitTimeManager = null;\r\n                _preInitTelemetryInitializers = null;\r\n                _isBrowserLinkTrackingEnabled = false;\r\n                _browserLinkInitializerAdded = false;\r\n                _enableAutoRouteTracking = false;\r\n                _historyListenerAdded = false;\r\n                _disableExceptionTracking = false;\r\n                _autoExceptionInstrumented = false;\r\n                _enableUnhandledPromiseRejectionTracking = false;\r\n                _autoUnhandledPromiseInstrumented = false;\r\n                _autoTrackPageVisitTime = false;\r\n                // Counts number of trackAjax invocations.\r\n                // By default we only monitor X ajax call per view to avoid too much load.\r\n                // Default value is set in config.\r\n                // This counter keeps increasing even after the limit is reached.\r\n                _trackAjaxAttempts = 0;\r\n                // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n                var location = getLocation(true);\r\n                _prevUri = location && location[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n                _currUri = null;\r\n                _evtNamespace = null;\r\n                _extConfig = null;\r\n                // Define _self.config\r\n                objDefine(_self, \"config\", {\r\n                    g: function () { return _extConfig; }\r\n                });\r\n            }\r\n            // For backward compatibility\r\n            objDefine(_self, \"_pageViewManager\", { g: function () { return _pageViewManager; } });\r\n            objDefine(_self, \"_pageViewPerformanceManager\", { g: function () { return _pageViewPerformanceManager; } });\r\n            objDefine(_self, \"_pageVisitTimeManager\", { g: function () { return _pageVisitTimeManager; } });\r\n            objDefine(_self, \"_evtNamespace\", { g: function () { return \".\" + _evtNamespace; } });\r\n        });\r\n        return _this;\r\n    }\r\n// Removed Stub for AnalyticsPlugin.prototype.getCookieMgr.\r\n// Removed Stub for AnalyticsPlugin.prototype.processTelemetry.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.startTrackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.stopTrackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackTrace.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackMetric.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackPageView.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendPageViewInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendPageViewPerformanceInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackPageViewPerformance.\r\n// Removed Stub for AnalyticsPlugin.prototype.startTrackPage.\r\n// Removed Stub for AnalyticsPlugin.prototype.stopTrackPage.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendExceptionInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackException.\r\n// Removed Stub for AnalyticsPlugin.prototype._onerror.\r\n// Removed Stub for AnalyticsPlugin.prototype.addTelemetryInitializer.\r\n// Removed Stub for AnalyticsPlugin.prototype.initialize.\r\n    AnalyticsPlugin.Version = '3.3.4'; // Not currently used anywhere\r\n    return AnalyticsPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { AnalyticsPlugin };\r\n//# sourceMappingURL=AnalyticsPlugin.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseSessionStorage, utlGetSessionStorage, utlRemoveSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _warnToConsole, dateNow, dumpObj, getJSON, hasJSON, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { objDefine } from \"@nevware21/ts-utils\";\r\nimport { _DYN_PAGE_VISIT_START_TIM18, _DYN_TRACK_PREVIOUS_PAGE_1 } from \"../../__DynamicConstants\";\r\n/**\r\n * Used to track page visit durations\r\n */\r\nvar PageVisitTimeManager = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of PageVisitTimeManager\r\n     * @param pageVisitTimeTrackingHandler - Delegate that will be called to send telemetry data to AI (when trackPreviousPageVisit is called)\r\n     * @returns {}\r\n     */\r\n    function PageVisitTimeManager(logger, pageVisitTimeTrackingHandler) {\r\n        var prevPageVisitDataKeyName = \"prevPageVisitData\";\r\n        dynamicProto(PageVisitTimeManager, this, function (_self) {\r\n            _self[_DYN_TRACK_PREVIOUS_PAGE_1 /* @min:%2etrackPreviousPageVisit */] = function (currentPageName, currentPageUrl) {\r\n                try {\r\n                    // Restart timer for new page view\r\n                    var prevPageVisitTimeData = restartPageVisitTimer(currentPageName, currentPageUrl);\r\n                    // If there was a page already being timed, track the visit time for it now.\r\n                    if (prevPageVisitTimeData) {\r\n                        pageVisitTimeTrackingHandler(prevPageVisitTimeData.pageName, prevPageVisitTimeData.pageUrl, prevPageVisitTimeData.pageVisitTime);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _warnToConsole(logger, \"Auto track page visit time failed, metric will not be collected: \" + dumpObj(e));\r\n                }\r\n            };\r\n            /**\r\n             * Stops timing of current page (if exists) and starts timing for duration of visit to pageName\r\n             * @param pageName - Name of page to begin timing visit duration\r\n             * @returns {PageVisitData} Page visit data (including duration) of pageName from last call to start or restart, if exists. Null if not.\r\n             */\r\n            function restartPageVisitTimer(pageName, pageUrl) {\r\n                var prevPageVisitData = null;\r\n                try {\r\n                    prevPageVisitData = stopPageVisitTimer();\r\n                    if (utlCanUseSessionStorage()) {\r\n                        if (utlGetSessionStorage(logger, prevPageVisitDataKeyName) != null) {\r\n                            throwError(\"Cannot call startPageVisit consecutively without first calling stopPageVisit\");\r\n                        }\r\n                        var currPageVisitDataStr = getJSON().stringify(new PageVisitData(pageName, pageUrl));\r\n                        utlSetSessionStorage(logger, prevPageVisitDataKeyName, currPageVisitDataStr);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _warnToConsole(logger, \"Call to restart failed: \" + dumpObj(e));\r\n                    prevPageVisitData = null;\r\n                }\r\n                return prevPageVisitData;\r\n            }\r\n            /**\r\n             * Stops timing of current page, if exists.\r\n             * @returns {PageVisitData} Page visit data (including duration) of pageName from call to start, if exists. Null if not.\r\n             */\r\n            function stopPageVisitTimer() {\r\n                var prevPageVisitData = null;\r\n                try {\r\n                    if (utlCanUseSessionStorage()) {\r\n                        // Define end time of page's visit\r\n                        var pageVisitEndTime = dateNow();\r\n                        // Try to retrieve  page name and start time from session storage\r\n                        var pageVisitDataJsonStr = utlGetSessionStorage(logger, prevPageVisitDataKeyName);\r\n                        if (pageVisitDataJsonStr && hasJSON()) {\r\n                            // if previous page data exists, set end time of visit\r\n                            prevPageVisitData = getJSON().parse(pageVisitDataJsonStr);\r\n                            prevPageVisitData.pageVisitTime = pageVisitEndTime - prevPageVisitData[_DYN_PAGE_VISIT_START_TIM18 /* @min:%2epageVisitStartTime */];\r\n                            // Remove data from storage since we already used it\r\n                            utlRemoveSessionStorage(logger, prevPageVisitDataKeyName);\r\n                        }\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _warnToConsole(logger, \"Stop page visit timer failed: \" + dumpObj(e));\r\n                    prevPageVisitData = null;\r\n                }\r\n                return prevPageVisitData;\r\n            }\r\n            // For backward compatibility\r\n            objDefine(_self, \"_logger\", { g: function () { return logger; } });\r\n            objDefine(_self, \"pageVisitTimeTrackingHandler\", { g: function () { return pageVisitTimeTrackingHandler; } });\r\n        });\r\n    }\r\n// Removed Stub for PageVisitTimeManager.prototype.trackPreviousPageVisit.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    PageVisitTimeManager.__ieDyn=1;\n\n    return PageVisitTimeManager;\r\n}());\r\nexport { PageVisitTimeManager };\r\nvar PageVisitData = /** @class */ (function () {\r\n    function PageVisitData(pageName, pageUrl) {\r\n        this[_DYN_PAGE_VISIT_START_TIM18 /* @min:%2epageVisitStartTime */] = dateNow();\r\n        this.pageName = pageName;\r\n        this.pageUrl = pageUrl;\r\n    }\r\n    return PageVisitData;\r\n}());\r\nexport { PageVisitData };\r\n//# sourceMappingURL=PageVisitTimeManager.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Used to record timed events and page views.\r\n */\r\nvar Timing = /** @class */ (function () {\r\n    function Timing(logger, name) {\r\n        var _self = this;\r\n        var _events = {};\r\n        _self.start = function (name) {\r\n            if (typeof _events[name] !== \"undefined\") {\r\n                _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 62 /* _eInternalMessageId.StartCalledMoreThanOnce */, \"start was called more than once for this event without calling stop.\", { name: name, key: name }, true);\r\n            }\r\n            _events[name] = +new Date;\r\n        };\r\n        _self.stop = function (name, url, properties, measurements) {\r\n            var start = _events[name];\r\n            if (isNaN(start)) {\r\n                _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 63 /* _eInternalMessageId.StopCalledWithoutStart */, \"stop was called without a corresponding start.\", { name: name, key: name }, true);\r\n            }\r\n            else {\r\n                var end = +new Date;\r\n                var duration = dateTimeUtilsDuration(start, end);\r\n                _self.action(name, url, duration, properties, measurements);\r\n            }\r\n            delete _events[name];\r\n            _events[name] = undefined;\r\n        };\r\n    }\r\n    return Timing;\r\n}());\r\nexport { Timing };\r\n//# sourceMappingURL=Timing.js.map","/*!\n * NevWare21 Solutions LLC - ts-async, 0.5.4\n * https://github.com/nevware21/ts-async\n * Copyright (c) NevWare21 Solutions LLC and contributors. All rights reserved.\n * Licensed under the MIT license.\n */\nimport { isPromiseLike, objDefineProperties, getDocument, createCachedValue, safe, getInst, dumpObj, arrSlice, objDefineProp, hasSymbol, getKnownSymbol, isFunction, throwTypeError, iterForOf, scheduleTimeout, isNode, getWindow, getGlobal, objDefine, objToString, isUndefined, isArray, arrForEach, isIterable, createCustomError, isNumber, scheduleIdleCallback, utcNow, getLength, isIterator, fnCall, arrIndexOf } from '@nevware21/ts-utils';\n\nvar STR_PROMISE = \"Promise\";\nvar DONE = \"done\";\nvar VALUE = \"value\";\nvar RETURN = \"return\";\nvar REJECTED = \"rejected\";\n\nfunction doAwaitResponse(value, cb) {\n    return doAwait(value, function (value) {\n        return cb ? cb({\n            status: \"fulfilled\",\n            rejected: false,\n            value: value\n        }) : value;\n    }, function (reason) {\n        return cb ? cb({\n            status: REJECTED,\n            rejected: true,\n            reason: reason\n        }) : reason;\n    });\n}\nfunction doAwait(value, resolveFn, rejectFn, finallyFn) {\n    var result = value;\n    try {\n        if (isPromiseLike(value)) {\n            if (resolveFn || rejectFn) {\n                result = value.then(resolveFn, rejectFn);\n            }\n        }\n        else {\n            try {\n                if (resolveFn) {\n                    result = resolveFn(value);\n                }\n            }\n            catch (err) {\n                if (rejectFn) {\n                    result = rejectFn(err);\n                }\n                else {\n                    throw err;\n                }\n            }\n        }\n    }\n    finally {\n        if (finallyFn) {\n            doFinally(result, finallyFn);\n        }\n    }\n    return result;\n}\nfunction doFinally(value, finallyFn) {\n    var result = value;\n    if (finallyFn) {\n        if (isPromiseLike(value)) {\n            if (value.finally) {\n                result = value.finally(finallyFn);\n            }\n            else {\n                result = value.then(function (value) {\n                    finallyFn();\n                    return value;\n                }, function (reason) {\n                    finallyFn();\n                    throw reason;\n                });\n            }\n        }\n        else {\n            finallyFn();\n        }\n    }\n    return result;\n}\n\n/*#__NO_SIDE_EFFECTS__*/\nfunction _pureAssign(func1, func2) {\n    return func1 || func2;\n}\n\nvar _debugState;\nvar _debugResult;\nvar _debugHandled;\nvar _promiseDebugEnabled = false;\nfunction _addDebugState$1(thePromise, stateFn, resultFn, handledFn) {\n    _debugState = _debugState || { toString: function () { return \"[[PromiseState]]\"; } };\n    _debugResult = _debugResult || { toString: function () { return \"[[PromiseResult]]\"; } };\n    _debugHandled = _debugHandled || { toString: function () { return \"[[PromiseIsHandled]]\"; } };\n    var props = {};\n    props[_debugState] = { get: stateFn };\n    props[_debugResult] = { get: resultFn };\n    props[_debugHandled] = { get: handledFn };\n    objDefineProperties(thePromise, props);\n}\nfunction setPromiseDebugState(enabled, logger) {\n    _promiseDebugEnabled = enabled;\n}\n\nvar STRING_STATES =  [\n    \"pending\", \"resolving\", \"resolved\", REJECTED\n];\n\nvar DISPATCH_EVENT = \"dispatchEvent\";\nvar _hasInitEvent;\nfunction _hasInitEventFn(doc) {\n    var evt;\n    if (doc && doc.createEvent) {\n        evt = doc.createEvent(\"Event\");\n    }\n    return (!!evt && evt.initEvent);\n}\nfunction emitEvent(target, evtName, populateEvent, useNewEvent) {\n    var doc = getDocument();\n    !_hasInitEvent && (_hasInitEvent = createCachedValue(!!safe(_hasInitEventFn, [doc]).v));\n    var theEvt = _hasInitEvent.v ? doc.createEvent(\"Event\") : (useNewEvent ? new Event(evtName) : {});\n    populateEvent && populateEvent(theEvt);\n    if (_hasInitEvent.v) {\n        theEvt.initEvent(evtName, false, true);\n    }\n    if (theEvt && target[DISPATCH_EVENT]) {\n        target[DISPATCH_EVENT](theEvt);\n    }\n    else {\n        var handler = target[\"on\" + evtName];\n        if (handler) {\n            handler(theEvt);\n        }\n        else {\n            var theConsole = getInst(\"console\");\n            theConsole && (theConsole[\"error\"] || theConsole[\"log\"])(evtName, dumpObj(theEvt));\n        }\n    }\n}\n\nvar NODE_UNHANDLED_REJECTION = \"unhandledRejection\";\nvar UNHANDLED_REJECTION = NODE_UNHANDLED_REJECTION.toLowerCase();\nvar _currentPromiseId = [];\nvar _uniquePromiseId = 0;\nvar _unhandledRejectionTimeout = 10;\nvar _aggregationError;\nvar _hasPromiseRejectionEvent;\nfunction dumpFnObj(value) {\n    if (isFunction(value)) {\n        return value.toString();\n    }\n    return dumpObj(value);\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createAggregationError(values) {\n    !_aggregationError && (_aggregationError = createCachedValue(safe(getInst, [\"AggregationError\"]).v || createCustomError(\"AggregationError\", function (self, args) {\n        self.errors = args[0];\n    })));\n    return new _aggregationError.v(values);\n}\nfunction _createPromise(newPromise, processor, executor) {\n    var additionalArgs = arrSlice(arguments, 3);\n    var _state = 0 ;\n    var _hasResolved = false;\n    var _settledValue;\n    var _queue = [];\n    var _id = _uniquePromiseId++;\n    var _parentId = _currentPromiseId.length > 0 ? _currentPromiseId[_currentPromiseId.length - 1] : undefined;\n    var _handled = false;\n    var _unHandledRejectionHandler = null;\n    var _thePromise;\n    function _then(onResolved, onRejected) {\n        try {\n            _currentPromiseId.push(_id);\n            _handled = true;\n            _unHandledRejectionHandler && _unHandledRejectionHandler.cancel();\n            _unHandledRejectionHandler = null;\n            var thenPromise = newPromise(function (resolve, reject) {\n                _queue.push(function () {\n                    try {\n                        var handler = _state === 2  ? onResolved : onRejected;\n                        var value = isUndefined(handler) ? _settledValue : (isFunction(handler) ? handler(_settledValue) : handler);\n                        if (isPromiseLike(value)) {\n                            value.then(resolve, reject);\n                        }\n                        else if (handler) {\n                            resolve(value);\n                        }\n                        else if (_state === 3 ) {\n                            reject(value);\n                        }\n                        else {\n                            resolve(value);\n                        }\n                    }\n                    catch (e) {\n                        reject(e);\n                    }\n                });\n                if (_hasResolved) {\n                    _processQueue();\n                }\n            }, additionalArgs);\n            return thenPromise;\n        }\n        finally {\n            _currentPromiseId.pop();\n        }\n    }\n    function _catch(onRejected) {\n        return _then(undefined, onRejected);\n    }\n    function _finally(onFinally) {\n        var thenFinally = onFinally;\n        var catchFinally = onFinally;\n        if (isFunction(onFinally)) {\n            thenFinally = function (value) {\n                onFinally && onFinally();\n                return value;\n            };\n            catchFinally = function (reason) {\n                onFinally && onFinally();\n                throw reason;\n            };\n        }\n        return _then(thenFinally, catchFinally);\n    }\n    function _strState() {\n        return STRING_STATES[_state];\n    }\n    function _processQueue() {\n        if (_queue.length > 0) {\n            var pending = _queue.slice();\n            _queue = [];\n            _handled = true;\n            _unHandledRejectionHandler && _unHandledRejectionHandler.cancel();\n            _unHandledRejectionHandler = null;\n            processor(pending);\n        }\n    }\n    function _createSettleIfFn(newState, allowState) {\n        return function (theValue) {\n            if (_state === allowState) {\n                if (newState === 2  && isPromiseLike(theValue)) {\n                    _state = 1 ;\n                    theValue.then(_createSettleIfFn(2 , 1 ), _createSettleIfFn(3 , 1 ));\n                    return;\n                }\n                _state = newState;\n                _hasResolved = true;\n                _settledValue = theValue;\n                _processQueue();\n                if (!_handled && newState === 3  && !_unHandledRejectionHandler) {\n                    _unHandledRejectionHandler = scheduleTimeout(_notifyUnhandledRejection, _unhandledRejectionTimeout);\n                }\n            }\n        };\n    }\n    function _notifyUnhandledRejection() {\n        if (!_handled) {\n            _handled = true;\n            if (isNode()) {\n                process.emit(NODE_UNHANDLED_REJECTION, _settledValue, _thePromise);\n            }\n            else {\n                var gbl = getWindow() || getGlobal();\n                !_hasPromiseRejectionEvent && (_hasPromiseRejectionEvent = createCachedValue(safe((getInst), [STR_PROMISE + \"RejectionEvent\"]).v));\n                emitEvent(gbl, UNHANDLED_REJECTION, function (theEvt) {\n                    objDefine(theEvt, \"promise\", { g: function () { return _thePromise; } });\n                    theEvt.reason = _settledValue;\n                    return theEvt;\n                }, !!_hasPromiseRejectionEvent.v);\n            }\n        }\n    }\n    _thePromise = {\n        then: _then,\n        \"catch\": _catch,\n        finally: _finally\n    };\n    objDefineProp(_thePromise, \"state\", {\n        get: _strState\n    });\n    if (_promiseDebugEnabled) {\n        _addDebugState$1(_thePromise, _strState, function () { return objToString(_settledValue); }, function () { return _handled; });\n    }\n    if (hasSymbol()) {\n        _thePromise[getKnownSymbol(11 )] = \"IPromise\";\n    }\n    function _toString() {\n        return \"IPromise\" + (_promiseDebugEnabled ? \"[\" + _id + (!isUndefined(_parentId) ? (\":\" + _parentId) : \"\") + \"]\" : \"\") + \" \" + _strState() + (_hasResolved ? (\" - \" + dumpFnObj(_settledValue)) : \"\") + (\"\");\n    }\n    _thePromise.toString = _toString;\n    (function _initialize() {\n        if (!isFunction(executor)) {\n            throwTypeError(STR_PROMISE + \": executor is not a function - \" + dumpFnObj(executor));\n        }\n        var _rejectFn = _createSettleIfFn(3 , 0 );\n        try {\n            executor.call(_thePromise, _createSettleIfFn(2 , 0 ), _rejectFn);\n        }\n        catch (e) {\n            _rejectFn(e);\n        }\n    })();\n    return _thePromise;\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createAllPromise(newPromise) {\n    return function (input) {\n        var additionalArgs = arrSlice(arguments, 1);\n        return newPromise(function (resolve, reject) {\n            try {\n                var values_1 = [];\n                var pending_1 = 1;\n                iterForOf(input, function (item, idx) {\n                    if (item) {\n                        pending_1++;\n                        doAwait(item, function (value) {\n                            values_1[idx] = value;\n                            if (--pending_1 === 0) {\n                                resolve(values_1);\n                            }\n                        }, reject);\n                    }\n                });\n                pending_1--;\n                if (pending_1 === 0) {\n                    resolve(values_1);\n                }\n            }\n            catch (e) {\n                reject(e);\n            }\n        }, additionalArgs);\n    };\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createResolvedPromise(newPromise) {\n    return function (value) {\n        var additionalArgs = arrSlice(arguments, 1);\n        if (isPromiseLike(value)) {\n            return value;\n        }\n        return newPromise(function (resolve) {\n            resolve(value);\n        }, additionalArgs);\n    };\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createRejectedPromise(newPromise) {\n    return function (reason) {\n        var additionalArgs = arrSlice(arguments, 1);\n        return newPromise(function (_resolve, reject) {\n            reject(reason);\n        }, additionalArgs);\n    };\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createAllSettledPromise(newPromise) {\n    return createCachedValue(function (input) {\n        var additionalArgs = arrSlice(arguments, 1);\n        return newPromise(function (resolve, reject) {\n            var values = [];\n            var pending = 1;\n            function processItem(item, idx) {\n                pending++;\n                doAwaitResponse(item, function (value) {\n                    if (value.rejected) {\n                        values[idx] = {\n                            status: REJECTED,\n                            reason: value.reason\n                        };\n                    }\n                    else {\n                        values[idx] = {\n                            status: \"fulfilled\",\n                            value: value.value\n                        };\n                    }\n                    if (--pending === 0) {\n                        resolve(values);\n                    }\n                });\n            }\n            try {\n                if (isArray(input)) {\n                    arrForEach(input, processItem);\n                }\n                else if (isIterable(input)) {\n                    iterForOf(input, processItem);\n                }\n                else {\n                    throwTypeError(\"Input is not an iterable\");\n                }\n                pending--;\n                if (pending === 0) {\n                    resolve(values);\n                }\n            }\n            catch (e) {\n                reject(e);\n            }\n        }, additionalArgs);\n    });\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createRacePromise(newPromise) {\n    return createCachedValue(function (input) {\n        var additionalArgs = arrSlice(arguments, 1);\n        return newPromise(function (resolve, reject) {\n            var isDone = false;\n            function processItem(item) {\n                doAwaitResponse(item, function (value) {\n                    if (!isDone) {\n                        isDone = true;\n                        if (value.rejected) {\n                            reject(value.reason);\n                        }\n                        else {\n                            resolve(value.value);\n                        }\n                    }\n                });\n            }\n            try {\n                if (isArray(input)) {\n                    arrForEach(input, processItem);\n                }\n                else if (isIterable(input)) {\n                    iterForOf(input, processItem);\n                }\n                else {\n                    throwTypeError(\"Input is not an iterable\");\n                }\n            }\n            catch (e) {\n                reject(e);\n            }\n        }, additionalArgs);\n    });\n}\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createAnyPromise(newPromise) {\n    return createCachedValue(function (input) {\n        var additionalArgs = arrSlice(arguments, 1);\n        return newPromise(function (resolve, reject) {\n            var theErros = [];\n            var pending = 1;\n            var isDone = false;\n            function processItem(item, idx) {\n                pending++;\n                doAwaitResponse(item, function (value) {\n                    if (!value.rejected) {\n                        isDone = true;\n                        resolve(value.value);\n                        return;\n                    }\n                    else {\n                        theErros[idx] = value.reason;\n                    }\n                    if (--pending === 0 && !isDone) {\n                        reject(_createAggregationError(theErros));\n                    }\n                });\n            }\n            try {\n                if (isArray(input)) {\n                    arrForEach(input, processItem);\n                }\n                else if (isIterable(input)) {\n                    iterForOf(input, processItem);\n                }\n                else {\n                    throwTypeError(\"Input is not an iterable\");\n                }\n                pending--;\n                if (pending === 0 && !isDone) {\n                    reject(_createAggregationError(theErros));\n                }\n            }\n            catch (e) {\n                reject(e);\n            }\n        }, additionalArgs);\n    });\n}\n\nfunction syncItemProcessor(pending) {\n    arrForEach(pending, function (fn) {\n        try {\n            fn();\n        }\n        catch (e) {\n        }\n    });\n}\nfunction timeoutItemProcessor(timeout) {\n    var callbackTimeout = isNumber(timeout) ? timeout : 0;\n    return function (pending) {\n        scheduleTimeout(function () {\n            syncItemProcessor(pending);\n        }, callbackTimeout);\n    };\n}\nfunction idleItemProcessor(timeout) {\n    var options;\n    if (timeout >= 0) {\n        options = {\n            timeout: +timeout\n        };\n    }\n    return function (pending) {\n        scheduleIdleCallback(function (deadline) {\n            syncItemProcessor(pending);\n        }, options);\n    };\n}\n\nvar _allAsyncSettledCreator;\nvar _raceAsyncCreator;\nvar _anyAsyncCreator;\nfunction createAsyncPromise(executor, timeout) {\n    return _createPromise(createAsyncPromise, timeoutItemProcessor(timeout), executor, timeout);\n}\nvar createAsyncAllPromise = /*#__PURE__*/ _createAllPromise(createAsyncPromise);\nvar createAsyncResolvedPromise = /*#__PURE__*/ _createResolvedPromise(createAsyncPromise);\nvar createAsyncRejectedPromise = /*#__PURE__*/ _createRejectedPromise(createAsyncPromise);\nfunction createAsyncAllSettledPromise(input, timeout) {\n    !_allAsyncSettledCreator && (_allAsyncSettledCreator = _createAllSettledPromise(createAsyncPromise));\n    return _allAsyncSettledCreator.v(input, timeout);\n}\nfunction createAsyncRacePromise(values, timeout) {\n    !_raceAsyncCreator && (_raceAsyncCreator = _createRacePromise(createAsyncPromise));\n    return _raceAsyncCreator.v(values, timeout);\n}\nfunction createAsyncAnyPromise(values, timeout) {\n    !_anyAsyncCreator && (_anyAsyncCreator = _createAnyPromise(createAsyncPromise));\n    return _anyAsyncCreator.v(values, timeout);\n}\n\nvar _promiseCls;\nvar _allCreator;\nvar _allNativeSettledCreator;\nvar _raceNativeCreator;\nvar _anyNativeCreator;\n/*#__NO_SIDE_EFFECTS__*/\nfunction _createNativePromiseHelper(name, func) {\n    !_promiseCls && (_promiseCls = createCachedValue((safe(getInst, [STR_PROMISE]).v) || null));\n    if (_promiseCls.v && _promiseCls.v[name]) {\n        return createCachedValue(function (input, timeout) {\n            return createNativePromise(function (resolve, reject) {\n                _promiseCls.v[name](input).then(resolve, reject);\n            });\n        });\n    }\n    return func();\n}\nfunction createNativePromise(executor, timeout) {\n    !_promiseCls && (_promiseCls = createCachedValue((safe(getInst, [STR_PROMISE]).v) || null));\n    var PrmCls = _promiseCls.v;\n    if (!PrmCls) {\n        return createAsyncPromise(executor);\n    }\n    if (!isFunction(executor)) {\n        throwTypeError(STR_PROMISE + \": executor is not a function - \" + dumpObj(executor));\n    }\n    var _state = 0 ;\n    function _strState() {\n        return STRING_STATES[_state];\n    }\n    var thePromise = new PrmCls(function (resolve, reject) {\n        function _resolve(value) {\n            _state = 2 ;\n            resolve(value);\n        }\n        function _reject(reason) {\n            _state = 3 ;\n            reject(reason);\n        }\n        executor(_resolve, _reject);\n    });\n    objDefineProp(thePromise, \"state\", {\n        get: _strState\n    });\n    return thePromise;\n}\nfunction createNativeAllPromise(input, timeout) {\n    !_allCreator && (_allCreator = _createNativePromiseHelper(\"all\", function () { return createCachedValue(_createAllPromise(createNativePromise)); }));\n    return _allCreator.v(input, timeout);\n}\nvar createNativeResolvedPromise = /*#__PURE__*/ _createResolvedPromise(createNativePromise);\nvar createNativeRejectedPromise = /*#__PURE__*/ _createRejectedPromise(createNativePromise);\nfunction createNativeAllSettledPromise(input, timeout) {\n    !_allNativeSettledCreator && (_allNativeSettledCreator = _createNativePromiseHelper(\"allSettled\", function () { return _createAllSettledPromise(createNativePromise); }));\n    return _allNativeSettledCreator.v(input, timeout);\n}\nfunction createNativeRacePromise(values, timeout) {\n    !_raceNativeCreator && (_raceNativeCreator = _createNativePromiseHelper(\"race\", function () { return _createRacePromise(createNativePromise); }));\n    return _raceNativeCreator.v(values, timeout);\n}\nfunction createNativeAnyPromise(values, timeout) {\n    !_anyNativeCreator && (_anyNativeCreator = _createNativePromiseHelper(\"any\", function () { return _createAnyPromise(createNativePromise); }));\n    return _anyNativeCreator.v(values, timeout);\n}\n\nvar _allSyncSettledCreator;\nvar _raceSyncCreator;\nvar _anySyncCreator;\nfunction createSyncPromise(executor) {\n    return _createPromise(createSyncPromise, syncItemProcessor, executor);\n}\nvar createSyncAllPromise = /*#__PURE__*/ _createAllPromise(createSyncPromise);\nvar createSyncResolvedPromise = /*#__PURE__*/ _createResolvedPromise(createSyncPromise);\nvar createSyncRejectedPromise = /*#__PURE__*/ _createRejectedPromise(createSyncPromise);\nfunction createSyncAllSettledPromise(input, timeout) {\n    !_allSyncSettledCreator && (_allSyncSettledCreator = _createAllSettledPromise(createSyncPromise));\n    return _allSyncSettledCreator.v(input, timeout);\n}\nfunction createSyncRacePromise(values, timeout) {\n    !_raceSyncCreator && (_raceSyncCreator = _createRacePromise(createSyncPromise));\n    return _raceSyncCreator.v(values, timeout);\n}\nfunction createSyncAnyPromise(values, timeout) {\n    !_anySyncCreator && (_anySyncCreator = _createAnyPromise(createSyncPromise));\n    return _anySyncCreator.v(values, timeout);\n}\n\nvar _defaultIdleTimeout;\nvar _allIdleSettledCreator;\nvar _raceIdleCreator;\nvar _anyIdleCreator;\nfunction setDefaultIdlePromiseTimeout(idleDeadline) {\n    _defaultIdleTimeout = idleDeadline;\n}\nvar setDefaultIdleTimeout = ( /*#__PURE__*/_pureAssign(setDefaultIdlePromiseTimeout));\nfunction createIdlePromise(executor, timeout) {\n    var theTimeout = isUndefined(timeout) ? _defaultIdleTimeout : timeout;\n    return _createPromise(createIdlePromise, idleItemProcessor(theTimeout), executor, theTimeout);\n}\nvar createIdleAllPromise = /*#__PURE__*/ _createAllPromise(createIdlePromise);\nvar createIdleResolvedPromise = /*#__PURE__*/ _createResolvedPromise(createIdlePromise);\nvar createIdleRejectedPromise = /*#__PURE__*/ _createRejectedPromise(createIdlePromise);\nfunction createIdleAllSettledPromise(input, timeout) {\n    !_allIdleSettledCreator && (_allIdleSettledCreator = _createAllSettledPromise(createIdlePromise));\n    return _allIdleSettledCreator.v(input, timeout);\n}\nfunction createIdleRacePromise(values, timeout) {\n    !_raceIdleCreator && (_raceIdleCreator = _createRacePromise(createIdlePromise));\n    return _raceIdleCreator.v(values, timeout);\n}\nfunction createIdleAnyPromise(values, timeout) {\n    !_anyIdleCreator && (_anyIdleCreator = _createAnyPromise(createIdlePromise));\n    return _anyIdleCreator.v(values, timeout);\n}\n\nvar _promiseCreator;\nvar _allSettledCreator;\nvar _raceCreator;\nvar _anyCreator;\nfunction setCreatePromiseImpl(creator) {\n    _promiseCreator = creator ? createCachedValue(creator) : null;\n}\nfunction createPromise(executor, timeout) {\n    !_promiseCreator && (_promiseCreator = createCachedValue(createNativePromise));\n    return _promiseCreator.v.call(this, executor, timeout);\n}\nvar createAllPromise = /*#__PURE__*/ _createAllPromise(createPromise);\nvar createResolvedPromise = /*#__PURE__*/ _createResolvedPromise(createPromise);\nvar createRejectedPromise = /*#__PURE__*/ _createRejectedPromise(createPromise);\nfunction createAllSettledPromise(input, timeout) {\n    !_allSettledCreator && (_allSettledCreator = _createAllSettledPromise(createPromise));\n    return _allSettledCreator.v(input, timeout);\n}\nfunction createRacePromise(values, timeout) {\n    !_raceCreator && (_raceCreator = _createRacePromise(createPromise));\n    return _raceCreator.v(values, timeout);\n}\nfunction createAnyPromise(values, timeout) {\n    !_anyCreator && (_anyCreator = _createAnyPromise(createPromise));\n    return _anyCreator.v(values, timeout);\n}\n\nfunction createTimeoutPromise(timeout, resolveReject, message) {\n    return createPromise(function (resolve, reject) {\n        scheduleTimeout(function () {\n            (resolveReject ? resolve : reject)(!isUndefined(message) ? message : \"Timeout of \" + timeout + \"ms exceeded\");\n        }, timeout);\n    });\n}\n\nfunction _doneChk(isDone, state, value, thisArg) {\n    var result = isDone;\n    state.res = value;\n    if (!result) {\n        if (state.isDone && isFunction(state.isDone)) {\n            return doAwait(state.isDone.call(thisArg, state), function (done) {\n                state.iter++;\n                return !!done;\n            });\n        }\n        else {\n            result = !!state.isDone;\n        }\n    }\n    state.iter++;\n    return result;\n}\nfunction doWhileAsync(callbackFn, isDoneFn, thisArg) {\n    var promise;\n    var resolve;\n    var reject = function (reason) {\n        isDone = true;\n        throw reason;\n    };\n    var isDone = false;\n    var state = {\n        st: utcNow(),\n        iter: 0,\n        isDone: isDoneFn || false\n    };\n    if (callbackFn) {\n        var _createPromise_1 = function () {\n            return createPromise(function (res, rej) {\n                resolve = res;\n                reject = rej;\n            });\n        };\n        var _handleAsyncDone_1 = function (done) {\n            isDone = !!done;\n            if (!isDone) {\n                _processNext_1();\n            }\n            else {\n                resolve(state.res);\n            }\n        };\n        var _processNext_1 = function () {\n            while (!isDone) {\n                try {\n                    var cbResult = callbackFn.call(thisArg, state);\n                    if (isPromiseLike(cbResult)) {\n                        promise = promise || _createPromise_1();\n                        doAwait(cbResult, function (res) {\n                            try {\n                                doAwait(_doneChk(isDone, state, res, thisArg), _handleAsyncDone_1, reject);\n                            }\n                            catch (e) {\n                                reject(e);\n                            }\n                        }, reject);\n                        return promise;\n                    }\n                    else {\n                        var dnRes = _doneChk(isDone, state, cbResult, thisArg);\n                        if (isPromiseLike(dnRes)) {\n                            promise = promise || _createPromise_1();\n                            doAwait(dnRes, _handleAsyncDone_1, reject);\n                            return promise;\n                        }\n                        else {\n                            isDone = !!dnRes;\n                        }\n                    }\n                }\n                catch (e) {\n                    reject(e);\n                    return promise;\n                }\n            }\n            if (isDone && resolve) {\n                resolve(state.res);\n            }\n            return promise || state.res;\n        };\n        return _processNext_1();\n    }\n}\n\nfunction arrForEachAsync(theArray, callbackFn, thisArg) {\n    if (theArray) {\n        var len_1 = getLength(theArray);\n        if (len_1) {\n            var isDone = function (state) {\n                if (state.iter >= len_1 || state.res === -1) {\n                    return true;\n                }\n            };\n            return doWhileAsync(function (state) {\n                var idx = state.iter;\n                if (idx in theArray) {\n                    return callbackFn.call(thisArg || theArray, theArray[idx], idx, theArray);\n                }\n            }, isDone);\n        }\n    }\n}\n\nvar _iterSymbol;\nvar _iterAsyncSymbol;\nfunction iterForOfAsync(iter, callbackFn, thisArg) {\n    var err;\n    var iterResult;\n    var theIter = iter;\n    function onFailed(failed) {\n        err = { e: failed };\n        if (theIter.throw) {\n            iterResult = null;\n            theIter.throw(err);\n        }\n        throw failed;\n    }\n    function onFinally() {\n        try {\n            if (iterResult && !iterResult[DONE]) {\n                theIter[RETURN] && theIter[RETURN](iterResult);\n            }\n        }\n        finally {\n            if (err) {\n                throw err.e;\n            }\n        }\n    }\n    if (iter) {\n        if (!isIterator(iter)) {\n            !_iterAsyncSymbol && (_iterAsyncSymbol = createCachedValue(getKnownSymbol(0 )));\n            theIter = iter[_iterAsyncSymbol.v] ? iter[_iterAsyncSymbol.v]() : null;\n            if (!theIter) {\n                !_iterSymbol && (_iterSymbol = createCachedValue(getKnownSymbol(3 )));\n                theIter = iter[_iterSymbol.v] ? iter[_iterSymbol.v]() : null;\n            }\n        }\n        if (theIter && isIterator(theIter)) {\n            var result = void 0;\n            try {\n                result = doWhileAsync(function (state) {\n                    return doAwait(theIter.next(), function (res) {\n                        iterResult = res;\n                        if (!res[DONE]) {\n                            return fnCall(callbackFn, thisArg || theIter, iterResult[VALUE], state.iter, theIter);\n                        }\n                    }, function (reason) {\n                        state.isDone = true;\n                        onFailed(reason);\n                    });\n                }, function (state) {\n                    if (!iterResult || iterResult[DONE] || state.res === -1) {\n                        onFinally();\n                        return true;\n                    }\n                }, thisArg || theIter);\n                if (isPromiseLike(result)) {\n                    result = doFinally(result.catch(onFailed), onFinally);\n                }\n                return result;\n            }\n            catch (failed) {\n                onFailed(failed);\n            }\n            finally {\n                if (result && !isPromiseLike(result)) {\n                    onFinally();\n                }\n            }\n        }\n    }\n}\n\nvar REJECT = \"reject\";\nvar REJECTED_ERROR = \"Rejected\";\nvar _schedulerId = 0;\nvar _debugName;\nvar _debugIntState;\nvar _customErrors = {};\nfunction _rejectDone() {\n}\nfunction _createError(type, evt, message) {\n    !_customErrors[type] && (_customErrors[type] = createCustomError(type));\n    var now = utcNow();\n    return new (_customErrors[type])(\"Task [\".concat(evt.id, \"] \").concat(message || \"\", \"- \").concat((evt.st ? \"Running\" : \"Waiting\"), \": \").concat(_calcTime(now, evt.st || evt.cr)));\n}\nfunction _calcTime(now, start) {\n    return ((now - start) || \"0\") + \" ms\";\n}\nfunction _abortStaleTasks(taskQueue, staleTimeoutPeriod) {\n    var now = utcNow();\n    var expired = now - staleTimeoutPeriod;\n    arrForEach(taskQueue, function (evt) {\n        if (evt && !evt.rj && (evt.st && evt.st < expired) || (!evt.st && evt.cr && evt.cr < expired)) {\n            evt && evt[REJECT](evt.rj || _createError(\"Aborted\", evt, \"Stale \"));\n        }\n    });\n}\nfunction _removeTask(queue, taskDetail) {\n    var idx = arrIndexOf(queue, taskDetail);\n    if (idx !== -1) {\n        queue.splice(idx, 1);\n    }\n}\nfunction _addDebugState(theScheduler, nameFn, stateFn) {\n    _debugName = _debugName || { toString: function () { return \"[[SchedulerName]]\"; } };\n    _debugIntState = _debugIntState || { toString: function () { return \"[[SchedulerState]]\"; } };\n    objDefineProp(theScheduler, _debugName, { get: nameFn });\n    objDefineProp(theScheduler, _debugIntState, { get: stateFn });\n}\nfunction createTaskScheduler(newPromise, name) {\n    var _theTask;\n    var _running = [];\n    var _waiting = [];\n    var _staleTimeoutPeriod = 600000;\n    var _staleTimeoutCheckPeriod = _staleTimeoutPeriod / 10;\n    var _taskCount = 0;\n    var _schedulerName = (name ? (name + \".\") : \"\") + _schedulerId++;\n    var _blockedTimer;\n    newPromise = newPromise || createPromise;\n    var _startBlockedTimer = function () {\n        var hasTasks = (getLength(_running) + getLength(_waiting)) > 0;\n        if (_staleTimeoutPeriod > 0) {\n            if (!_blockedTimer) {\n                _blockedTimer = scheduleTimeout(function () {\n                    _abortStaleTasks(_running, _staleTimeoutPeriod);\n                    _abortStaleTasks(_waiting, _staleTimeoutPeriod);\n                    _blockedTimer && (_blockedTimer.enabled = ((getLength(_running) + getLength(_waiting)) > 0));\n                }, _staleTimeoutCheckPeriod);\n                _blockedTimer.unref();\n            }\n            _blockedTimer && (_blockedTimer.enabled = hasTasks);\n        }\n    };\n    var _queueTask = function (startAction, taskName, timeout) {\n        var _a;\n        var taskId = _schedulerName + \".\" + _taskCount++;\n        if (taskName) {\n            taskId += \"-(\" + taskName + \")\";\n        }\n        var newTask = (_a = {\n                id: taskId,\n                cr: utcNow(),\n                to: timeout\n            },\n            _a[REJECT] = function (reason) {\n                newTask.rj = reason || _createError(REJECTED_ERROR, newTask);\n                newTask[REJECT] = _rejectDone;\n            },\n            _a);\n        if (!_theTask) {\n            newTask.p = newPromise(_runTask(newTask, startAction));\n        }\n        else {\n            newTask.p = _waitForPreviousTask(newTask, _theTask, startAction);\n        }\n        _theTask = newTask;\n        return newTask.p;\n    };\n    var _runTask = function (taskDetail, startAction) {\n        taskDetail.st = utcNow();\n        _running.push(taskDetail);\n        _startBlockedTimer();\n        return function (onTaskResolve, onTaskReject) {\n            var _promiseReject = function (reason) {\n                taskDetail.rj = taskDetail.rj || reason || _createError(REJECTED_ERROR, taskDetail);\n                taskDetail[REJECT] = _rejectDone;\n                _doCleanup(taskDetail);\n                onTaskResolve = null;\n                onTaskReject && onTaskReject(reason);\n                onTaskReject = null;\n            };\n            var taskId = taskDetail.id;\n            if (taskDetail.rj) {\n                _promiseReject(taskDetail.rj);\n            }\n            else {\n                taskDetail[REJECT] = _promiseReject;\n                try {\n                    var startResult = startAction(taskId);\n                    if (taskDetail.to && isPromiseLike(startResult)) {\n                        taskDetail.t = scheduleTimeout(function () {\n                            _promiseReject(_createError(\"Timeout\", taskDetail));\n                        }, taskDetail.to);\n                    }\n                    doAwait(startResult, function (theResult) {\n                        _doCleanup(taskDetail);\n                        try {\n                            onTaskResolve && onTaskResolve(theResult);\n                        }\n                        catch (e) {\n                            onTaskReject && onTaskReject(e);\n                        }\n                        onTaskReject = null;\n                        onTaskResolve = null;\n                    }, _promiseReject);\n                }\n                catch (e) {\n                    _promiseReject(e);\n                }\n            }\n        };\n    };\n    var _waitForPreviousTask = function (taskDetail, prevTask, startAction) {\n        _waiting.push(taskDetail);\n        _startBlockedTimer();\n        return newPromise(function (onWaitResolve, onWaitReject) {\n            doAwaitResponse(prevTask.p, function () {\n                _removeTask(_waiting, taskDetail);\n                _runTask(taskDetail, startAction)(onWaitResolve, onWaitReject);\n            });\n        });\n    };\n    var _doCleanup = function (taskDetail) {\n        _removeTask(_running, taskDetail);\n        taskDetail.t && taskDetail.t.cancel();\n        taskDetail.t = null;\n        if (_theTask && _theTask === taskDetail) {\n            _theTask = null;\n            if (getLength(_running) + getLength(_waiting) === 0) {\n                _blockedTimer && _blockedTimer.cancel();\n                _blockedTimer = null;\n            }\n        }\n    };\n    var theScheduler = {\n        idle: true,\n        queue: _queueTask,\n        setStaleTimeout: function (staleTimeout, staleCheckPeriod) {\n            _blockedTimer && _blockedTimer.cancel();\n            _blockedTimer = null;\n            _staleTimeoutPeriod = staleTimeout;\n            _staleTimeoutCheckPeriod = staleCheckPeriod || staleTimeout / 10;\n            _startBlockedTimer();\n        }\n    };\n    objDefine(theScheduler, \"idle\", {\n        g: function () {\n            return getLength(_running) + getLength(_waiting) === 0;\n        }\n    });\n    _addDebugState(theScheduler, function () { return _schedulerName; }, function () {\n        return {\n            l: _theTask,\n            r: _running,\n            w: _waiting\n        };\n    });\n    return theScheduler;\n}\n\nvar toStringTagSymbol = getKnownSymbol(11 );\nvar PolyPromise = /*#__PURE__*/ (function () {\n    function PolyPromiseImpl(executor) {\n        this._$ = createAsyncPromise(executor);\n        if (toStringTagSymbol) {\n            this[toStringTagSymbol] = \"Promise\";\n        }\n        objDefineProp(this, \"state\", {\n            get: function () {\n                return this._$.state;\n            }\n        });\n    }\n    PolyPromiseImpl.all = createAsyncAllPromise;\n    PolyPromiseImpl.race = createAsyncRacePromise;\n    PolyPromiseImpl.any = createAsyncAnyPromise;\n    PolyPromiseImpl.reject = createAsyncRejectedPromise;\n    PolyPromiseImpl.resolve = createAsyncResolvedPromise;\n    PolyPromiseImpl.allSettled = createAsyncAllSettledPromise;\n    var theProto = PolyPromiseImpl.prototype;\n    theProto.then = function (onResolved, onRejected) {\n        return this._$.then(onResolved, onRejected);\n    };\n    theProto.catch = function (onRejected) {\n        return this._$.catch(onRejected);\n    };\n    theProto.finally = function (onfinally) {\n        return this._$.finally(onfinally);\n    };\n    return PolyPromiseImpl;\n}());\n\nexport { PolyPromise, arrForEachAsync, createAllPromise, createAllSettledPromise, createAnyPromise, createAsyncAllPromise, createAsyncAllSettledPromise, createAsyncAnyPromise, createAsyncPromise, createAsyncRacePromise, createAsyncRejectedPromise, createAsyncResolvedPromise, createIdleAllPromise, createIdleAllSettledPromise, createIdleAnyPromise, createIdlePromise, createIdleRacePromise, createIdleRejectedPromise, createIdleResolvedPromise, createNativeAllPromise, createNativeAllSettledPromise, createNativeAnyPromise, createNativePromise, createNativeRacePromise, createNativeRejectedPromise, createNativeResolvedPromise, createPromise, createRacePromise, createRejectedPromise, createResolvedPromise, createSyncAllPromise, createSyncAllSettledPromise, createSyncAnyPromise, createSyncPromise, createSyncRacePromise, createSyncRejectedPromise, createSyncResolvedPromise, createTaskScheduler, createTimeoutPromise, doAwait, doAwaitResponse, doFinally, doWhileAsync, iterForOfAsync, setCreatePromiseImpl, setDefaultIdlePromiseTimeout, setDefaultIdleTimeout, setPromiseDebugState };\n//# sourceMappingURL=ts-async.js.map\n","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_FEATURE_OPT_IN = \"featureOptIn\"; // Count: 4\r\nexport var _DYN_ON_CFG_CHANGE_RECEIV0 = \"onCfgChangeReceive\"; // Count: 2\r\nexport var _DYN_NON_OVERRIDE_CONFIGS = \"nonOverrideConfigs\"; // Count: 2\r\nexport var _DYN_SCHEDULE_FETCH_TIMEO1 = \"scheduleFetchTimeout\"; // Count: 2\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { isNullOrUndefined, isObject, objExtend, objForEachKey, setValueByKey } from \"@nevware21/ts-utils\";\r\nimport { _DYN_FEATURE_OPT_IN } from \"./__DynamicConstants\";\r\n/**\r\n * Delete a config key in the given cfg, if the config key exists in nonOverrideConfigs and its value is set to true\r\n * @param cfg cfg to modify\r\n * @param nonOverrideConfigs nonOverrideConfigs\r\n * @param curLevel cur config level, starting at 0\r\n * @param maxLevel max config level\r\n * @returns new copy of modified configs\r\n */\r\nexport function replaceByNonOverrideCfg(cfg, nonOverrideConfigs, curLevel, maxLevel) {\r\n    try {\r\n        var exceedMaxLevel = curLevel > maxLevel;\r\n        if (exceedMaxLevel) {\r\n            cfg = null;\r\n        }\r\n        var curCfg_1 = curLevel == 0 ? objExtend({}, cfg) : cfg; // only copy cfg at the begining level\r\n        if (curCfg_1 && nonOverrideConfigs && !exceedMaxLevel) {\r\n            objForEachKey(curCfg_1, function (key) {\r\n                var nonOverrideVal = nonOverrideConfigs[key];\r\n                if (!!nonOverrideVal) {\r\n                    if (isObject(curCfg_1[key]) && isObject(nonOverrideVal)) {\r\n                        curCfg_1[key] = replaceByNonOverrideCfg(curCfg_1[key], nonOverrideVal, ++curLevel, maxLevel);\r\n                    }\r\n                    else {\r\n                        delete curCfg_1[key];\r\n                    }\r\n                }\r\n            });\r\n        }\r\n        return curCfg_1;\r\n    }\r\n    catch (e) {\r\n        // eslint-disable-next-line no-empty\r\n    }\r\n    // if errors happen, do nothing\r\n    return cfg;\r\n}\r\n//                                                     CDN Mode, value = B (CDN value = B)\r\n//                                |--------------------------------------------------------------------------|-----------|\r\n//                                |                    | none        | disabled    | enabled     | forceOn   | forceOff  |\r\n//                                | ------------------ | ----------- | ----------- | ----------- | --------- | --------- |\r\n// | User Mode, value = A         | none               | none        | disabled    | enabled     | enabled   | disabled  |\r\n// (user Value = A)               | disabled           | disabled    | disabled    | disabled    | enabled   | disabled  |\r\n//                                | enabled            | enabled     | disabled    | enabled     | enabled   | disabled  |\r\n//                                | none(blockCdn)     | none        | none        | none        | none      | none      |\r\n//                                | disabled(blockCdn) | disabled    | disabled    | disabled    | disabled  | disabled  |\r\n//                                | enabled(blockCdn)  | enabled     | enabled     | enabled     | enabled   | enabled   |\r\n// This matrix identifies how feature based overrides are selected (if present)\r\n//                                cdn Mode (cdn Value = B)\r\n//                   |---------------------------------------------------------------------------|\r\n//                   |                    | none     | disabled | enabled  | forceOn  | forceOff |\r\n//                   | ------------------ | ---------| ---------| ---------| ---------|----------|\r\n// | User Mode       | none               | A        | A        | A || B   | B || A   | B || A   |\r\n// (user Value = A)  | disabled           | A        | A        | A        | B || A   | B || A   |\r\n//                   | enabled            | A        | A        | A || B   | B || A   | B || A   |\r\n//                   | none(blockCdn)     | A        | A        | A        | A        | A        |\r\n//                   | disabled(blockCdn) | A        | A        | A        | A        | A        |\r\n//                   | enabled(blockCdn)  | A        | A        | A        | A        | A        |\r\n// Note:\r\n// Where the \"value\" is an object (map) of encoded key/values which will be used to override the real configuration\r\n// A = either the user supplied enable/disable value (via the `config.featureOptIn[name]`) or if not defined by the user the SDK defaults of the same.\r\n// B = The enable/disable value obtained from the CDN for the named feature\r\n// These are evaluated based on the above matrix to either\r\n// - A (Always the user/sdk value)\r\n// - B (Always the value from the CDN)\r\n// - A || B (If A is null or undefined use the value from the CDN (B) otherwise A)\r\n// - B || A (If B is null or undefined use the user/SDK value otherwise use the value from the CDN)\r\n//\r\n// The result of the value may also be null / undefined, which means there are no overrides to apply when the feature is enabled\r\nvar F = \"featureOptIn.\";\r\nvar M = \".mode\";\r\nvar ON = \".onCfg\";\r\nvar OFF = \".offCfg\";\r\nexport function resolveCdnFeatureCfg(field, cdnCfg, userOptInDetails) {\r\n    var _a;\r\n    // cdn conifg value\r\n    if (!cdnCfg || !cdnCfg.enabled) {\r\n        return null;\r\n    }\r\n    var cdnFt = (cdnCfg[_DYN_FEATURE_OPT_IN /* @min:%2efeatureOptIn */] || {})[field] || { mode: 1 /* CdnFeatureMode.none */ };\r\n    var cdnM = cdnFt.mode;\r\n    var cdnOnV = cdnFt.onCfg;\r\n    var cdnOffV = cdnFt.offCfg;\r\n    var userFt = (userOptInDetails || {})[field] || { mode: 2 /* FeatureOptInMode.disable */ }; // default user mode is disable\r\n    var userM = userFt.mode;\r\n    var userOnV = userFt.onCfg;\r\n    var userOffV = userFt.offCfg;\r\n    var blockCdn = !!userFt.blockCdnCfg;\r\n    var mFld = F + field + M;\r\n    var onFld = F + field + ON;\r\n    var offFld = F + field + OFF;\r\n    var mode = userM;\r\n    var onV = userOnV;\r\n    var offV = userOffV;\r\n    if (!blockCdn) {\r\n        if (cdnM === 4 /* CdnFeatureMode.forceOn */ || cdnM === 5 /* CdnFeatureMode.forceOff */) {\r\n            mode = (cdnM == 4 /* CdnFeatureMode.forceOn */ ? 3 /* FeatureOptInMode.enable */ : 2 /* FeatureOptInMode.disable */);\r\n            onV = cdnOnV || userOnV;\r\n            offV = cdnOffV || userOffV;\r\n        }\r\n        else if (cdnM === 2 /* CdnFeatureMode.disable */ || userM === 2 /* FeatureOptInMode.disable */) {\r\n            mode = 2 /* FeatureOptInMode.disable */;\r\n            onV = userOnV || cdnOnV;\r\n            offV = userOffV || cdnOffV;\r\n        }\r\n        else if (cdnM === 3 /* CdnFeatureMode.enable */) {\r\n            mode = 3 /* FeatureOptInMode.enable */;\r\n            onV = userOnV || cdnOnV;\r\n            offV = userOffV || cdnOffV;\r\n        }\r\n        else if (cdnM === 1 /* CdnFeatureMode.none */ && userM === 1 /* FeatureOptInMode.none */) {\r\n            mode = 1 /* FeatureOptInMode.none */;\r\n        }\r\n    }\r\n    return _a = {},\r\n        _a[mFld] = mode,\r\n        _a[onFld] = onV,\r\n        _a[offFld] = offV,\r\n        _a;\r\n}\r\n// helper function to get cdn config with opt-in features\r\nexport function applyCdnfeatureCfg(cdnCfg, core) {\r\n    try {\r\n        if (!cdnCfg || !cdnCfg.enabled) {\r\n            return null;\r\n        }\r\n        if (!cdnCfg[_DYN_FEATURE_OPT_IN /* @min:%2efeatureOptIn */]) {\r\n            return cdnCfg.config;\r\n        }\r\n        var optInMap = cdnCfg[_DYN_FEATURE_OPT_IN /* @min:%2efeatureOptIn */];\r\n        var cdnConfig_1 = cdnCfg.config || {};\r\n        objForEachKey(optInMap, function (key) {\r\n            var featureVal = resolveCdnFeatureCfg(key, cdnCfg, core.config[_DYN_FEATURE_OPT_IN /* @min:%2efeatureOptIn */]);\r\n            if (!isNullOrUndefined(featureVal)) {\r\n                objForEachKey(featureVal, function (config, val) {\r\n                    setValueByKey(cdnConfig_1, config, val);\r\n                });\r\n                _overrideCdnCfgByFeature(key, featureVal, cdnConfig_1);\r\n            }\r\n        });\r\n        return cdnConfig_1;\r\n    }\r\n    catch (e) {\r\n        // eslint-disable-next-line no-empty\r\n    }\r\n    return null;\r\n}\r\nfunction _overrideCdnCfgByFeature(field, ftVal, config) {\r\n    var mode = ftVal[F + field + M];\r\n    var val = ftVal[F + field + ON];\r\n    var dVal = ftVal[F + field + OFF];\r\n    var target = null;\r\n    if (mode === 3 /* FeatureOptInMode.enable */) {\r\n        target = val;\r\n    }\r\n    if (mode === 2 /* FeatureOptInMode.disable */) {\r\n        target = dVal;\r\n    }\r\n    if (target) {\r\n        objForEachKey(target, function (key, cfg) {\r\n            setValueByKey(config, key, cfg);\r\n        });\r\n    }\r\n}\r\n//# sourceMappingURL=CfgSyncHelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* CfgSyncPlugin.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nvar _a;\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BaseTelemetryPlugin, createProcessTelemetryContext, createUniqueNamespace, eventOff, eventOn, getGlobal, getJSON, isFetchSupported, isXhrSupported, mergeEvtNamespace, onConfigChange, sendCustomEvent } from \"@microsoft/applicationinsights-core-js\";\r\nimport { doAwaitResponse } from \"@nevware21/ts-async\";\r\nimport { isFunction, isNullOrUndefined, isPlainObject, objDeepFreeze, scheduleTimeout } from \"@nevware21/ts-utils\";\r\nimport { applyCdnfeatureCfg, replaceByNonOverrideCfg } from \"./CfgSyncHelperFuncs\";\r\nimport { _DYN_NON_OVERRIDE_CONFIGS, _DYN_ON_CFG_CHANGE_RECEIV0, _DYN_SCHEDULE_FETCH_TIMEO1 } from \"./__DynamicConstants\";\r\nvar EVENT_NAME = \"ai_cfgsync\";\r\nvar STR_GET_METHOD = \"GET\";\r\nvar FETCH_TIMEOUT = 1800000; // 30 minutes\r\nvar udfVal = undefined;\r\nvar defaultNonOverrideCfg = { instrumentationKey: true, connectionString: true, endpointUrl: true };\r\nvar _defaultConfig = objDeepFreeze((_a = {\r\n        syncMode: 1 /* ICfgSyncMode.Broadcast */,\r\n        blkCdnCfg: udfVal,\r\n        customEvtName: udfVal,\r\n        cfgUrl: udfVal,\r\n        overrideSyncFn: udfVal,\r\n        overrideFetchFn: udfVal\r\n    },\r\n    _a[_DYN_ON_CFG_CHANGE_RECEIV0 /* @min:onCfgChangeReceive */] = udfVal,\r\n    _a[_DYN_SCHEDULE_FETCH_TIMEO1 /* @min:scheduleFetchTimeout */] = FETCH_TIMEOUT,\r\n    _a[_DYN_NON_OVERRIDE_CONFIGS /* @min:nonOverrideConfigs */] = defaultNonOverrideCfg,\r\n    _a));\r\nvar CfgSyncPlugin = /** @class */ (function (_super) {\r\n    __extends(CfgSyncPlugin, _super);\r\n    function CfgSyncPlugin() {\r\n        var _this = _super.call(this) || this;\r\n        _this.priority = 198;\r\n        _this.identifier = \"AppInsightsCfgSyncPlugin\";\r\n        var _extensionConfig;\r\n        var _mainConfig; // throttle config should be wrapped in IConfiguration\r\n        var _evtName;\r\n        var _evtNamespace;\r\n        var _cfgUrl;\r\n        var _timeoutHandle;\r\n        var _receiveChanges;\r\n        var _broadcastChanges;\r\n        var _blkCdnCfg;\r\n        var _fetchTimeout;\r\n        var _retryCnt;\r\n        var _onCfgChangeReceive;\r\n        var _nonOverrideConfigs;\r\n        var _fetchFn;\r\n        var _overrideFetchFn;\r\n        var _overrideSyncFn;\r\n        var _paused = false;\r\n        dynamicProto(CfgSyncPlugin, _this, function (_self, _base) {\r\n            _initDefaults();\r\n            _self.initialize = function (config, core, extensions, pluginChain) {\r\n                _base.initialize(config, core, extensions, pluginChain);\r\n                _evtNamespace = mergeEvtNamespace(createUniqueNamespace(_self.identifier), core.evtNamespace && core.evtNamespace());\r\n                _populateDefaults(config);\r\n            };\r\n            _self.getCfg = function () {\r\n                return _mainConfig;\r\n            };\r\n            _self.pause = function () {\r\n                _paused = true;\r\n                _clearScheduledTimer();\r\n            };\r\n            _self.resume = function () {\r\n                _paused = false;\r\n                _setupTimer();\r\n            };\r\n            // used for V2 to manaully trigger config udpate\r\n            _self.setCfg = function (config) {\r\n                return _setCfg(config);\r\n            };\r\n            _self.sync = function (customDetails) {\r\n                return _sendCfgsyncEvents(customDetails);\r\n            };\r\n            _self.updateEventListenerName = function (eventName) {\r\n                return _updateEventListenerName(eventName);\r\n            };\r\n            _self._doTeardown = function (unloadCtx, unloadState) {\r\n                _eventOff();\r\n                _clearScheduledTimer();\r\n                _initDefaults();\r\n            };\r\n            _self[\"_getDbgPlgTargets\"] = function () {\r\n                return [_broadcastChanges, _receiveChanges, _evtName, _blkCdnCfg, _nonOverrideConfigs];\r\n            };\r\n            function _initDefaults() {\r\n                _mainConfig = null;\r\n                _evtName = null;\r\n                _evtNamespace = null;\r\n                _cfgUrl = null;\r\n                _receiveChanges = null;\r\n                _broadcastChanges = null;\r\n                _nonOverrideConfigs = null;\r\n                _timeoutHandle = null;\r\n                _fetchTimeout = null;\r\n                _retryCnt = null;\r\n                _blkCdnCfg = null;\r\n                _overrideFetchFn = null;\r\n                _overrideSyncFn = null;\r\n                _onCfgChangeReceive = null;\r\n            }\r\n            function _populateDefaults(config) {\r\n                var identifier = _self.identifier;\r\n                var core = _self.core;\r\n                _self._addHook(onConfigChange(config, function () {\r\n                    var ctx = createProcessTelemetryContext(null, config, core);\r\n                    _extensionConfig = ctx.getExtCfg(identifier, _defaultConfig);\r\n                    var preBlkCdn = _blkCdnCfg;\r\n                    _blkCdnCfg = !!_extensionConfig.blkCdnCfg;\r\n                    // avoid initial call\r\n                    if (!isNullOrUndefined(preBlkCdn) && preBlkCdn !== _blkCdnCfg) {\r\n                        if (!_blkCdnCfg && _cfgUrl) {\r\n                            _fetchFn && _fetchFn(_cfgUrl, _onFetchComplete, _broadcastChanges);\r\n                        }\r\n                        else {\r\n                            _clearScheduledTimer();\r\n                        }\r\n                    }\r\n                    if (isNullOrUndefined(_receiveChanges)) {\r\n                        _receiveChanges = _extensionConfig.syncMode === 2 /* ICfgSyncMode.Receive */;\r\n                    }\r\n                    if (isNullOrUndefined(_broadcastChanges)) {\r\n                        _broadcastChanges = _extensionConfig.syncMode === 1 /* ICfgSyncMode.Broadcast */;\r\n                    }\r\n                    var newEvtName = _extensionConfig.customEvtName || EVENT_NAME;\r\n                    if (_evtName !== newEvtName) {\r\n                        if (_receiveChanges) {\r\n                            _updateEventListenerName(newEvtName);\r\n                        }\r\n                        else {\r\n                            _eventOff();\r\n                            _evtName = newEvtName;\r\n                        }\r\n                    }\r\n                    if (isNullOrUndefined(_cfgUrl)) {\r\n                        _cfgUrl = _extensionConfig.cfgUrl;\r\n                    }\r\n                    // if cfgUrl is set, we will ignore core config change\r\n                    if (!_cfgUrl) {\r\n                        _mainConfig = config;\r\n                        if (_broadcastChanges) {\r\n                            _sendCfgsyncEvents();\r\n                        }\r\n                    }\r\n                }));\r\n                _overrideSyncFn = _extensionConfig.overrideSyncFn;\r\n                _overrideFetchFn = _extensionConfig.overrideFetchFn;\r\n                _onCfgChangeReceive = _extensionConfig[_DYN_ON_CFG_CHANGE_RECEIV0 /* @min:%2eonCfgChangeReceive */];\r\n                _nonOverrideConfigs = _extensionConfig[_DYN_NON_OVERRIDE_CONFIGS /* @min:%2enonOverrideConfigs */]; // override values should not be changed\r\n                _fetchTimeout = _extensionConfig[_DYN_SCHEDULE_FETCH_TIMEO1 /* @min:%2escheduleFetchTimeout */];\r\n                _fetchFn = _getFetchFnInterface();\r\n                _retryCnt = 0;\r\n                // NOT support cfgURL change to avoid mutiple fetch calls\r\n                if (_cfgUrl && !_blkCdnCfg) {\r\n                    _fetchFn && _fetchFn(_cfgUrl, _onFetchComplete, _broadcastChanges);\r\n                }\r\n            }\r\n            function _setCfg(config, isAutoSync) {\r\n                if (config) {\r\n                    _mainConfig = config;\r\n                    if (!!isAutoSync && !_paused) {\r\n                        return _sendCfgsyncEvents();\r\n                    }\r\n                    if (_receiveChanges && !_paused) {\r\n                        _self.core.updateCfg(config);\r\n                        return true;\r\n                    }\r\n                }\r\n                return false;\r\n            }\r\n            function _eventOff() {\r\n                try {\r\n                    var global_1 = getGlobal();\r\n                    if (global_1) {\r\n                        eventOff(global_1, null, null, _evtNamespace);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    // eslint-disable-next-line no-empty\r\n                }\r\n            }\r\n            function _sendCfgsyncEvents(customDetails) {\r\n                try {\r\n                    if (!!_overrideSyncFn && isFunction(_overrideSyncFn)) {\r\n                        return _overrideSyncFn(_mainConfig, customDetails);\r\n                    }\r\n                    return sendCustomEvent(_evtName, _mainConfig, customDetails);\r\n                }\r\n                catch (e) {\r\n                    // eslint-disable-next-line no-empty\r\n                }\r\n                return false;\r\n            }\r\n            function _updateEventListenerName(name) {\r\n                try {\r\n                    _eventOff();\r\n                    if (name) {\r\n                        _evtName = name;\r\n                        _addEventListener();\r\n                    }\r\n                    return true;\r\n                }\r\n                catch (e) {\r\n                    // eslint-disable-next-line no-empty\r\n                }\r\n                return false;\r\n            }\r\n            function _getFetchFnInterface() {\r\n                var _fetchFn = _overrideFetchFn;\r\n                if (isNullOrUndefined(_fetchFn)) {\r\n                    if (isFetchSupported()) {\r\n                        _fetchFn = _fetchSender;\r\n                    }\r\n                    else if (isXhrSupported()) {\r\n                        _fetchFn = _xhrSender;\r\n                    }\r\n                }\r\n                return _fetchFn;\r\n            }\r\n            function _fetchSender(url, oncomplete, isAutoSync) {\r\n                var global = getGlobal();\r\n                var fetchFn = (global && global.fetch) || null;\r\n                if (url && fetchFn && isFunction(fetchFn)) {\r\n                    try {\r\n                        var init = {\r\n                            method: STR_GET_METHOD\r\n                        };\r\n                        var request = new Request(url, init);\r\n                        doAwaitResponse(fetch(request), function (result) {\r\n                            var response = result.value;\r\n                            if (!result.rejected) {\r\n                                if (response.ok) {\r\n                                    doAwaitResponse(response.text(), function (res) {\r\n                                        _doOnComplete(oncomplete, response.status, res.value, isAutoSync);\r\n                                    });\r\n                                }\r\n                                else {\r\n                                    _doOnComplete(oncomplete, response.status, null, isAutoSync);\r\n                                }\r\n                            }\r\n                            else {\r\n                                _doOnComplete(oncomplete, 400);\r\n                            }\r\n                        });\r\n                    }\r\n                    catch (e) {\r\n                        // eslint-disable-next-line no-empty\r\n                    }\r\n                }\r\n            }\r\n            function _xhrSender(url, oncomplete, isAutoSync) {\r\n                try {\r\n                    var xhr_1 = new XMLHttpRequest();\r\n                    xhr_1.open(STR_GET_METHOD, url);\r\n                    xhr_1.onreadystatechange = function () {\r\n                        if (xhr_1.readyState === XMLHttpRequest.DONE) {\r\n                            _doOnComplete(oncomplete, xhr_1.status, xhr_1.responseText, isAutoSync);\r\n                        }\r\n                    };\r\n                    xhr_1.onerror = function () {\r\n                        _doOnComplete(oncomplete, 400);\r\n                    };\r\n                    xhr_1.ontimeout = function () {\r\n                        _doOnComplete(oncomplete, 400);\r\n                    };\r\n                    xhr_1.send();\r\n                }\r\n                catch (e) {\r\n                    // eslint-disable-next-line no-empty\r\n                }\r\n            }\r\n            function _onFetchComplete(status, response, isAutoSync) {\r\n                try {\r\n                    if (status >= 200 && status < 400 && response) {\r\n                        _retryCnt = 0; // any successful response will reset retry count to 0\r\n                        var JSON_1 = getJSON();\r\n                        if (JSON_1) {\r\n                            var cdnCfg = JSON_1.parse(response); //comments are not allowed\r\n                            var cfg = applyCdnfeatureCfg(cdnCfg, _self.core);\r\n                            var newCfg = cfg && isPlainObject(cfg) && _replaceTartgetByKeys(cfg);\r\n                            newCfg && _setCfg(newCfg, isAutoSync);\r\n                            //cfg && _setCfg(cfg, isAutoSync);\r\n                        }\r\n                    }\r\n                    else {\r\n                        _retryCnt++;\r\n                    }\r\n                    if (_retryCnt < 3) {\r\n                        _setupTimer();\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    // eslint-disable-next-line no-empty\r\n                }\r\n            }\r\n            function _doOnComplete(oncomplete, status, response, isAutoSync) {\r\n                try {\r\n                    oncomplete(status, response, isAutoSync);\r\n                }\r\n                catch (e) {\r\n                    // eslint-disable-next-line no-empty\r\n                }\r\n            }\r\n            function _addEventListener() {\r\n                if (_receiveChanges) {\r\n                    var global_2 = getGlobal();\r\n                    if (global_2) {\r\n                        try {\r\n                            eventOn(global_2, _evtName, function (event) {\r\n                                // TODO: add more validation here\r\n                                // may include a \"name\" or some other features to check\r\n                                var cfgEvent = event && event.detail;\r\n                                if (_onCfgChangeReceive && cfgEvent) {\r\n                                    _onCfgChangeReceive(cfgEvent);\r\n                                }\r\n                                else {\r\n                                    var cfg = cfgEvent && cfgEvent.cfg;\r\n                                    var newCfg = cfg && isPlainObject(cfg) && _replaceTartgetByKeys(cfg);\r\n                                    newCfg && _setCfg(newCfg);\r\n                                }\r\n                            }, _evtNamespace, true);\r\n                        }\r\n                        catch (e) {\r\n                            // eslint-disable-next-line no-empty\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            // 4 levels\r\n            function _replaceTartgetByKeys(cfg, level) {\r\n                var _cfg = null;\r\n                try {\r\n                    if (cfg) {\r\n                        _cfg = replaceByNonOverrideCfg(cfg, _nonOverrideConfigs, 0, 5);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    // eslint-disable-next-line no-empty\r\n                }\r\n                return _cfg;\r\n            }\r\n            /**\r\n             * Sets up the timer which triggers fetching cdn every 30mins after inital call\r\n             */\r\n            function _setupTimer() {\r\n                if (!_timeoutHandle && _fetchTimeout) {\r\n                    _timeoutHandle = scheduleTimeout(function () {\r\n                        _timeoutHandle = null;\r\n                        _fetchFn(_cfgUrl, _onFetchComplete, _broadcastChanges);\r\n                    }, _fetchTimeout);\r\n                    _timeoutHandle.unref();\r\n                }\r\n            }\r\n            function _clearScheduledTimer() {\r\n                _timeoutHandle && _timeoutHandle.cancel();\r\n                _timeoutHandle = null;\r\n                _retryCnt = 0;\r\n            }\r\n            _self.processTelemetry = function (env, itemCtx) {\r\n                _self.processNext(env, itemCtx);\r\n            };\r\n        });\r\n        return _this;\r\n    }\r\n// Removed Stub for CfgSyncPlugin.prototype.initialize.\r\n// Removed Stub for CfgSyncPlugin.prototype.getCfg.\r\n// Removed Stub for CfgSyncPlugin.prototype.setCfg.\r\n// Removed Stub for CfgSyncPlugin.prototype.sync.\r\n// Removed Stub for CfgSyncPlugin.prototype.updateEventListenerName.\r\n// Removed Stub for CfgSyncPlugin.prototype.pause.\r\n// Removed Stub for CfgSyncPlugin.prototype.resume.\r\n    //// Removed Stub for CfgSyncPlugin.prototype.processTelemetry.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    CfgSyncPlugin.__ieDyn=1;\n\n    return CfgSyncPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { CfgSyncPlugin };\r\n//# sourceMappingURL=CfgSyncPlugin.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { arrForEach, createUniqueNamespace, eventOff, eventOn, getDocument, getNavigator, getWindow, isNullOrUndefined, isUndefined, mergeEvtNamespace } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_PUSH } from \"./__DynamicConstants\";\r\nfunction _disableEvents(target, evtNamespace) {\r\n    eventOff(target, null, null, evtNamespace);\r\n}\r\n/**\r\n * Create a new OfflineListener instance to monitor browser online / offline events\r\n * @param parentEvtNamespace - The parent event namespace to append to any specific events for this instance\r\n */\r\nexport function createOfflineListener(parentEvtNamespace) {\r\n    var _document = getDocument();\r\n    var _navigator = getNavigator(); // Gets the window.navigator or workerNavigator depending on the global\r\n    var _isListening = false;\r\n    var listenerList = [];\r\n    // Set the initial state\r\n    // rState is changed by the browser, both via events and when we check the navigator.onLine property\r\n    var rState = 1 /* eOfflineValue.Online */;\r\n    if (_navigator && !isNullOrUndefined(_navigator.onLine) && !_navigator.onLine) { // navigator.onLine is undefined in react-native\r\n        rState = 2 /* eOfflineValue.Offline */;\r\n    }\r\n    // ustate is changed by the user calling setOnlineState\r\n    var uState = 0 /* eOfflineValue.Unknown */;\r\n    // current state would be updated each time rState or uState is changed\r\n    // it is a resolved value of rState and uState\r\n    var _currentState = calCurrentState();\r\n    var _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"OfflineListener\"), parentEvtNamespace);\r\n    try {\r\n        if (_enableEvents(getWindow())) {\r\n            _isListening = true;\r\n        }\r\n        if (_document) {\r\n            // Also attach to the document.body or document\r\n            var target = _document.body || _document;\r\n            if (target.ononline) {\r\n                if (_enableEvents(target)) {\r\n                    _isListening = true;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    catch (e) {\r\n        // this makes react-native less angry\r\n        _isListening = false;\r\n    }\r\n    function _enableEvents(target) {\r\n        var enabled = false;\r\n        if (target) {\r\n            enabled = eventOn(target, \"online\", _setOnline, _evtNamespace);\r\n            if (enabled) {\r\n                eventOn(target, \"offline\", _setOffline, _evtNamespace);\r\n            }\r\n        }\r\n        return enabled;\r\n    }\r\n    function _isOnline() {\r\n        return _currentState;\r\n    }\r\n    function calCurrentState() {\r\n        if (uState === 2 /* eOfflineValue.Offline */ || rState === 2 /* eOfflineValue.Offline */) {\r\n            return false;\r\n        }\r\n        return true; // if both unknown, then we assume the network is good\r\n    }\r\n    function listnerNoticeCheck() {\r\n        // we were offline and are now online or we were online and now offline\r\n        var newState = calCurrentState();\r\n        if (_currentState !== newState) {\r\n            _currentState = newState; // use the resolved state to update\r\n            // send all the callbacks with the current state\r\n            arrForEach(listenerList, function (callback) {\r\n                var offlineState = {\r\n                    isOnline: _currentState,\r\n                    rState: rState,\r\n                    uState: uState\r\n                };\r\n                try {\r\n                    callback(offlineState);\r\n                }\r\n                catch (e) {\r\n                    // Do nothing, just making sure we run all of the callbacks\r\n                }\r\n            });\r\n        }\r\n    }\r\n    function setOnlineState(newState) {\r\n        uState = newState;\r\n        listnerNoticeCheck();\r\n    }\r\n    function _setOnline() {\r\n        rState = 1 /* eOfflineValue.Online */;\r\n        listnerNoticeCheck();\r\n    }\r\n    function _setOffline() {\r\n        rState = 2 /* eOfflineValue.Offline */;\r\n        listnerNoticeCheck();\r\n    }\r\n    function _unload() {\r\n        var win = getWindow();\r\n        if (win && _isListening) {\r\n            _disableEvents(win, _evtNamespace);\r\n            if (_document) {\r\n                // Also attach to the document.body or document\r\n                var target = _document.body || _document;\r\n                if (!isUndefined(target.ononline)) {\r\n                    _disableEvents(target, _evtNamespace);\r\n                }\r\n            }\r\n            _isListening = false;\r\n        }\r\n    }\r\n    function addListener(callback) {\r\n        listenerList[_DYN_PUSH /* @min:%2epush */](callback);\r\n        // Define rm as an instance of IUnloadHook\r\n        return {\r\n            rm: function () {\r\n                var index = listenerList.indexOf(callback);\r\n                if (index > -1) {\r\n                    return listenerList.splice(index, 1);\r\n                }\r\n                else {\r\n                    return;\r\n                }\r\n            }\r\n        };\r\n    }\r\n    return {\r\n        isOnline: _isOnline,\r\n        isListening: function () { return _isListening; },\r\n        unload: _unload,\r\n        addListener: addListener,\r\n        setOnlineState: setOnlineState\r\n    };\r\n}\r\n//# sourceMappingURL=Offline.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { createEnumStyle } from \"./EnumHelperFuncs\";\r\nexport var ActiveStatus = createEnumStyle({\r\n    NONE: 0 /* eActiveStatus.NONE */,\r\n    PENDING: 3 /* eActiveStatus.PENDING */,\r\n    INACTIVE: 1 /* eActiveStatus.INACTIVE */,\r\n    ACTIVE: 2 /* eActiveStatus.ACTIVE */\r\n});\r\n//# sourceMappingURL=InitActiveStatusEnum.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nexport var ChannelControllerPriority = 500;\r\nexport var DisabledPropertyName = \"Microsoft_ApplicationInsights_BypassAjaxInstrumentation\";\r\n// export const SampleRate = \"sampleRate\";\r\n// export const ProcessLegacy = \"ProcessLegacy\";\r\n// export const HttpMethod = \"http.method\";\r\n// export const DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\r\n// export const DEFAULT_BREEZE_PATH = \"/v2/track\";\r\n// export const strNotSpecified = \"not_specified\";\r\n// export const strIkey = \"iKey\";\r\n//# sourceMappingURL=Constants.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { createPromise, doAwaitResponse } from \"@nevware21/ts-async\";\r\nimport { arrForEach, dumpObj, getNavigator, getWindow, isFunction, objKeys } from \"@nevware21/ts-utils\";\r\nimport { _DYN_DATA, _DYN_HEADERS, _DYN_INITIALIZE, _DYN_LENGTH, _DYN_MESSAGE, _DYN_PROTOCOL, _DYN_REPLACE, _DYN_SEND_POST, _DYN_SET_REQUEST_HEADER, _DYN_STATUS, _DYN_TIMEOUT, _DYN_TO_LOWER_CASE, _DYN_URL_STRING, _DYN_VALUE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { DisabledPropertyName } from \"./Constants\";\r\nimport { _throwInternal, _warnToConsole } from \"./DiagnosticLogger\";\r\nimport { getLocation, isBeaconsSupported, isFetchSupported, isXhrSupported, useXDomainRequest } from \"./EnvUtils\";\r\nimport { _getAllResponseHeaders, formatErrorMessageXdr, formatErrorMessageXhr, getResponseText, openXhr } from \"./HelperFuncs\";\r\nvar STR_EMPTY = \"\";\r\nvar STR_NO_RESPONSE_BODY = \"NoResponseBody\";\r\nvar _noResponseQs = \"&\" + STR_NO_RESPONSE_BODY + \"=true\";\r\nvar STR_POST_METHOD = \"POST\";\r\n/**\r\n * This Internal component\r\n * Manager SendPost functions\r\n * SendPostManger\r\n * @internal for internal use only\r\n */\r\nvar SenderPostManager = /** @class */ (function () {\r\n    function SenderPostManager() {\r\n        var _syncFetchPayload = 0; // Keep track of the outstanding sync fetch payload total (as sync fetch has limits)\r\n        var _enableSendPromise;\r\n        var _isInitialized;\r\n        var _diagLog;\r\n        var _isOneDs;\r\n        var _onCompleteFuncs;\r\n        var _disableCredentials;\r\n        var _fetchCredentials;\r\n        var _fallbackInst;\r\n        var _disableXhr;\r\n        var _disableBeacon;\r\n        var _disableBeaconSync;\r\n        var _disableFetchKeepAlive;\r\n        var _addNoResponse;\r\n        var _timeoutWrapper;\r\n        dynamicProto(SenderPostManager, this, function (_self, _base) {\r\n            var _sendCredentials = true; // for 1ds\r\n            _initDefaults();\r\n            _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, diagLog) {\r\n                _diagLog = diagLog;\r\n                if (_isInitialized) {\r\n                    _throwInternal(_diagLog, 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender is already initialized\");\r\n                }\r\n                _self.SetConfig(config);\r\n                _isInitialized = true;\r\n            };\r\n            _self[\"_getDbgPlgTargets\"] = function () {\r\n                return [_isInitialized, _isOneDs, _disableCredentials, _enableSendPromise];\r\n            };\r\n            // This componet might get its config from sender, offline sender, 1ds post\r\n            // so set this function to mock dynamic changes\r\n            _self.SetConfig = function (config) {\r\n                try {\r\n                    _onCompleteFuncs = config.senderOnCompleteCallBack || {};\r\n                    _disableCredentials = !!config.disableCredentials;\r\n                    _fetchCredentials = config.fetchCredentials;\r\n                    _isOneDs = !!config.isOneDs;\r\n                    _enableSendPromise = !!config.enableSendPromise;\r\n                    _disableXhr = !!config.disableXhr;\r\n                    _disableBeacon = !!config.disableBeacon;\r\n                    _disableBeaconSync = !!config.disableBeaconSync;\r\n                    _timeoutWrapper = config.timeWrapper;\r\n                    _addNoResponse = !!config.addNoResponse;\r\n                    _disableFetchKeepAlive = !!config.disableFetchKeepAlive;\r\n                    _fallbackInst = { sendPOST: _xhrSender };\r\n                    if (!_isOneDs) {\r\n                        _sendCredentials = false; // for appInsights, set it to false always\r\n                    }\r\n                    if (_disableCredentials) {\r\n                        var location_1 = getLocation();\r\n                        if (location_1 && location_1.protocol && location_1.protocol[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === \"file:\") {\r\n                            // Special case where a local html file fails with a CORS error on Chromium browsers\r\n                            _sendCredentials = false;\r\n                        }\r\n                    }\r\n                    return true;\r\n                }\r\n                catch (e) {\r\n                    // eslint-disable-next-line no-empty\r\n                }\r\n                return false;\r\n            };\r\n            _self.getSyncFetchPayload = function () {\r\n                return _syncFetchPayload;\r\n            };\r\n            _self.getSenderInst = function (transports, sync) {\r\n                if (transports && transports[_DYN_LENGTH /* @min:%2elength */]) {\r\n                    return _getSenderInterface(transports, sync);\r\n                }\r\n                return null;\r\n            };\r\n            _self.getFallbackInst = function () {\r\n                return _fallbackInst;\r\n            };\r\n            _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] = function (unloadCtx, unloadState) {\r\n                _initDefaults();\r\n            };\r\n            /**\r\n             * success handler\r\n             */\r\n            function _onSuccess(res, onComplete) {\r\n                _doOnComplete(onComplete, 200, {}, res);\r\n            }\r\n            /**\r\n             * error handler\r\n             */\r\n            function _onError(message, onComplete) {\r\n                _throwInternal(_diagLog, 2 /* eLoggingSeverity.WARNING */, 26 /* _eInternalMessageId.OnError */, \"Failed to send telemetry.\", { message: message });\r\n                _doOnComplete(onComplete, 400, {});\r\n            }\r\n            function _onNoPayloadUrl(onComplete) {\r\n                _onError(\"No endpoint url is provided for the batch\", onComplete);\r\n            }\r\n            function _getSenderInterface(transports, syncSupport) {\r\n                var _a;\r\n                var transportType = 0 /* TransportType.NotSet */;\r\n                var sendPostFunc = null;\r\n                var lp = 0;\r\n                while (sendPostFunc == null && lp < transports[_DYN_LENGTH /* @min:%2elength */]) {\r\n                    transportType = transports[lp];\r\n                    if (!_disableXhr && transportType === 1 /* TransportType.Xhr */) {\r\n                        if (useXDomainRequest()) {\r\n                            // IE 8 and 9\r\n                            sendPostFunc = _xdrSender;\r\n                        }\r\n                        else if (isXhrSupported()) {\r\n                            sendPostFunc = _xhrSender;\r\n                        }\r\n                    }\r\n                    else if (transportType === 2 /* TransportType.Fetch */ && isFetchSupported(syncSupport) && (!syncSupport || !_disableFetchKeepAlive)) {\r\n                        sendPostFunc = _doFetchSender;\r\n                    }\r\n                    else if (transportType === 3 /* TransportType.Beacon */ && isBeaconsSupported() && (syncSupport ? !_disableBeaconSync : !_disableBeacon)) {\r\n                        sendPostFunc = _beaconSender;\r\n                    }\r\n                    lp++;\r\n                }\r\n                if (sendPostFunc) {\r\n                    return _a = {\r\n                            _transport: transportType,\r\n                            _isSync: syncSupport\r\n                        },\r\n                        _a[_DYN_SEND_POST /* @min:sendPOST */] = sendPostFunc,\r\n                        _a;\r\n                }\r\n                return null;\r\n            }\r\n            function _doOnComplete(oncomplete, status, headers, response) {\r\n                try {\r\n                    oncomplete && oncomplete(status, headers, response);\r\n                }\r\n                catch (e) {\r\n                    // eslint-disable-next-line no-empty\r\n                }\r\n            }\r\n            function _doBeaconSend(payload, oncomplete) {\r\n                var nav = getNavigator();\r\n                var url = payload[_DYN_URL_STRING /* @min:%2eurlString */];\r\n                if (!url) {\r\n                    _onNoPayloadUrl(oncomplete);\r\n                    // return true here, because we don't want to retry it with fallback sender\r\n                    return true;\r\n                }\r\n                url = payload[_DYN_URL_STRING /* @min:%2eurlString */] + (_addNoResponse ? _noResponseQs : STR_EMPTY);\r\n                var data = payload[_DYN_DATA /* @min:%2edata */];\r\n                // Chrome only allows CORS-safelisted values for the sendBeacon data argument\r\n                // see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283\r\n                // Chrome only allows CORS-safelisted values for the sendBeacon data argument\r\n                // see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283\r\n                var plainTextBatch = _isOneDs ? data : new Blob([data], { type: \"text/plain;charset=UTF-8\" });\r\n                // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n                var queued = nav.sendBeacon(url, plainTextBatch);\r\n                return queued;\r\n            }\r\n            /**\r\n             * Send Beacon API request\r\n             * @param payload - {string} - The data payload to be sent.\r\n             * @param sync - {boolean} - not used\r\n             * Note: Beacon API does not support custom headers and we are not able to get\r\n             * appId from the backend for the correct correlation.\r\n             */\r\n            function _beaconSender(payload, oncomplete, sync) {\r\n                var data = payload[_DYN_DATA /* @min:%2edata */];\r\n                try {\r\n                    if (data) {\r\n                        // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n                        if (!_doBeaconSend(payload, oncomplete)) {\r\n                            var onRetry = _onCompleteFuncs && _onCompleteFuncs.beaconOnRetry;\r\n                            if (onRetry && isFunction(onRetry)) {\r\n                                onRetry(payload, oncomplete, _doBeaconSend);\r\n                            }\r\n                            else {\r\n                                _fallbackInst && _fallbackInst[_DYN_SEND_POST /* @min:%2esendPOST */](payload, oncomplete, true);\r\n                                _throwInternal(_diagLog, 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with normal sender.\");\r\n                            }\r\n                        }\r\n                        else {\r\n                            // if can send\r\n                            _onSuccess(STR_EMPTY, oncomplete);\r\n                        }\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _isOneDs && _warnToConsole(_diagLog, \"Failed to send telemetry using sendBeacon API. Ex:\" + dumpObj(e));\r\n                    _doOnComplete(oncomplete, _isOneDs ? 0 : 400, {}, STR_EMPTY);\r\n                }\r\n                return;\r\n            }\r\n            /**\r\n             * Send XMLHttpRequest\r\n             * @param payload - {string} - The data payload to be sent.\r\n             * @param sync - {boolean} - Indicates if the request should be sent synchronously\r\n             */\r\n            function _xhrSender(payload, oncomplete, sync) {\r\n                //let  internalPayload = payload as IInternalPayloadData;\r\n                var thePromise;\r\n                var resolveFunc;\r\n                var rejectFunc;\r\n                var headers = payload[_DYN_HEADERS /* @min:%2eheaders */] || {};\r\n                if (!sync && _enableSendPromise) {\r\n                    thePromise = createPromise(function (resolve, reject) {\r\n                        resolveFunc = resolve;\r\n                        rejectFunc = reject;\r\n                    });\r\n                }\r\n                if (_isOneDs && sync && payload.disableXhrSync) {\r\n                    sync = false;\r\n                }\r\n                //const xhr = new XMLHttpRequest();\r\n                var endPointUrl = payload[_DYN_URL_STRING /* @min:%2eurlString */];\r\n                if (!endPointUrl) {\r\n                    _onNoPayloadUrl(oncomplete);\r\n                    resolveFunc && resolveFunc(false);\r\n                    return;\r\n                }\r\n                var xhr = openXhr(STR_POST_METHOD, endPointUrl, _sendCredentials, true, sync, payload[_DYN_TIMEOUT /* @min:%2etimeout */]);\r\n                if (!_isOneDs) {\r\n                    // application/json should NOT add to 1ds post by default\r\n                    xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](\"Content-type\", \"application/json\");\r\n                }\r\n                arrForEach(objKeys(headers), function (headerName) {\r\n                    xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](headerName, headers[headerName]);\r\n                });\r\n                xhr.onreadystatechange = function () {\r\n                    if (!_isOneDs) {\r\n                        _doOnReadyFunc(xhr);\r\n                        if (xhr.readyState === 4) {\r\n                            resolveFunc && resolveFunc(true);\r\n                        }\r\n                    }\r\n                };\r\n                xhr.onload = function () {\r\n                    if (_isOneDs) {\r\n                        _doOnReadyFunc(xhr);\r\n                    }\r\n                };\r\n                function _doOnReadyFunc(xhr) {\r\n                    var onReadyFunc = _onCompleteFuncs && _onCompleteFuncs.xhrOnComplete;\r\n                    var onReadyFuncExist = onReadyFunc && isFunction(onReadyFunc);\r\n                    if (onReadyFuncExist) {\r\n                        onReadyFunc(xhr, oncomplete, payload);\r\n                    }\r\n                    else {\r\n                        var response = getResponseText(xhr);\r\n                        _doOnComplete(oncomplete, xhr[_DYN_STATUS /* @min:%2estatus */], _getAllResponseHeaders(xhr, _isOneDs), response);\r\n                    }\r\n                }\r\n                xhr.onerror = function (event) {\r\n                    _doOnComplete(oncomplete, _isOneDs ? xhr[_DYN_STATUS /* @min:%2estatus */] : 400, _getAllResponseHeaders(xhr, _isOneDs), _isOneDs ? STR_EMPTY : formatErrorMessageXhr(xhr));\r\n                    rejectFunc && rejectFunc(event);\r\n                };\r\n                xhr.ontimeout = function () {\r\n                    _doOnComplete(oncomplete, _isOneDs ? xhr[_DYN_STATUS /* @min:%2estatus */] : 500, _getAllResponseHeaders(xhr, _isOneDs), _isOneDs ? STR_EMPTY : formatErrorMessageXhr(xhr));\r\n                    resolveFunc && resolveFunc(false);\r\n                };\r\n                xhr.send(payload[_DYN_DATA /* @min:%2edata */]);\r\n                return thePromise;\r\n            }\r\n            /**\r\n             * Send fetch API request\r\n             * @param payload - {string} - The data payload to be sent.\r\n             * @param sync - {boolean} - For fetch this identifies whether we are \"unloading\" (false) or a normal request\r\n             */\r\n            function _doFetchSender(payload, oncomplete, sync) {\r\n                var _a;\r\n                var endPointUrl = payload[_DYN_URL_STRING /* @min:%2eurlString */];\r\n                var batch = payload[_DYN_DATA /* @min:%2edata */];\r\n                var plainTextBatch = _isOneDs ? batch : new Blob([batch], { type: \"application/json\" });\r\n                var thePromise;\r\n                var resolveFunc;\r\n                var rejectFunc;\r\n                var requestHeaders = new Headers();\r\n                var batchLength = batch[_DYN_LENGTH /* @min:%2elength */];\r\n                var ignoreResponse = false;\r\n                var responseHandled = false;\r\n                var headers = payload[_DYN_HEADERS /* @min:%2eheaders */] || {};\r\n                //TODO: handle time out for 1ds\r\n                var init = (_a = {\r\n                        method: STR_POST_METHOD,\r\n                        body: plainTextBatch\r\n                    },\r\n                    _a[DisabledPropertyName] = true // Mark so we don't attempt to track this request\r\n                ,\r\n                    _a);\r\n                // Only add headers if there are headers to add, due to issue with some polyfills\r\n                if (payload.headers && objKeys(payload.headers)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    arrForEach(objKeys(headers), function (headerName) {\r\n                        requestHeaders.append(headerName, headers[headerName]);\r\n                    });\r\n                    init[_DYN_HEADERS /* @min:%2eheaders */] = requestHeaders;\r\n                }\r\n                if (_fetchCredentials) { // if user passed in this value via post channel (1ds), then use it\r\n                    init.credentials = _fetchCredentials;\r\n                }\r\n                else if (_sendCredentials && _isOneDs) {\r\n                    // for 1ds, Don't send credentials when URL is file://\r\n                    init.credentials = \"include\";\r\n                }\r\n                if (sync) {\r\n                    init.keepalive = true;\r\n                    _syncFetchPayload += batchLength;\r\n                    if (_isOneDs) {\r\n                        if (payload[\"_sendReason\"] === 2 /* SendRequestReason.Unload */) {\r\n                            // As a sync request (during unload), it is unlikely that we will get a chance to process the response so\r\n                            // just like beacon send assume that the events have been accepted and processed\r\n                            ignoreResponse = true;\r\n                            if (_addNoResponse) {\r\n                                endPointUrl += _noResponseQs;\r\n                            }\r\n                        }\r\n                    }\r\n                    else {\r\n                        // for appinsights, set to true for all sync request\r\n                        ignoreResponse = true;\r\n                    }\r\n                }\r\n                var request = new Request(endPointUrl, init);\r\n                try {\r\n                    // Also try and tag the request (just in case the value in init is not copied over)\r\n                    request[DisabledPropertyName] = true;\r\n                }\r\n                catch (e) {\r\n                    // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n                    // cause the request to fail and we no telemetry would be sent\r\n                }\r\n                if (!sync && _enableSendPromise) {\r\n                    thePromise = createPromise(function (resolve, reject) {\r\n                        resolveFunc = resolve;\r\n                        rejectFunc = reject;\r\n                    });\r\n                }\r\n                if (!endPointUrl) {\r\n                    _onNoPayloadUrl(oncomplete);\r\n                    resolveFunc && resolveFunc(false);\r\n                    return;\r\n                }\r\n                function _handleError(res) {\r\n                    // In case there is an error in the request. Set the status to 0 for 1ds and 400 for appInsights\r\n                    // so that the events can be retried later.\r\n                    _doOnComplete(oncomplete, _isOneDs ? 0 : 400, {}, _isOneDs ? STR_EMPTY : res);\r\n                }\r\n                function _onFetchComplete(response, payload, value) {\r\n                    var status = response[_DYN_STATUS /* @min:%2estatus */];\r\n                    var onCompleteFunc = _onCompleteFuncs.fetchOnComplete;\r\n                    if (onCompleteFunc && isFunction(onCompleteFunc)) {\r\n                        onCompleteFunc(response, oncomplete, value || STR_EMPTY, payload);\r\n                    }\r\n                    else {\r\n                        _doOnComplete(oncomplete, status, {}, value || STR_EMPTY);\r\n                    }\r\n                }\r\n                try {\r\n                    doAwaitResponse(fetch(_isOneDs ? endPointUrl : request, _isOneDs ? init : null), function (result) {\r\n                        if (sync) {\r\n                            _syncFetchPayload -= batchLength;\r\n                            batchLength = 0;\r\n                        }\r\n                        if (!responseHandled) {\r\n                            responseHandled = true;\r\n                            if (!result.rejected) {\r\n                                var response_1 = result[_DYN_VALUE /* @min:%2evalue */];\r\n                                try {\r\n                                    /**\r\n                                     * The Promise returned from fetch() won’t reject on HTTP error status even if the response is an HTTP 404 or 500.\r\n                                     * Instead, it will resolve normally (with ok status set to false), and it will only reject on network failure\r\n                                     * or if anything prevented the request from completing.\r\n                                     */\r\n                                    if (!_isOneDs && !response_1.ok) {\r\n                                        // this is for appInsights only\r\n                                        _handleError(response_1.statusText);\r\n                                        resolveFunc && resolveFunc(false);\r\n                                    }\r\n                                    else {\r\n                                        if (_isOneDs && !response_1.body) {\r\n                                            _onFetchComplete(response_1, null, STR_EMPTY);\r\n                                            resolveFunc && resolveFunc(true);\r\n                                        }\r\n                                        else {\r\n                                            doAwaitResponse(response_1.text(), function (resp) {\r\n                                                _onFetchComplete(response_1, payload, resp[_DYN_VALUE /* @min:%2evalue */]);\r\n                                                resolveFunc && resolveFunc(true);\r\n                                            });\r\n                                        }\r\n                                    }\r\n                                }\r\n                                catch (e) {\r\n                                    _handleError(dumpObj(e));\r\n                                    rejectFunc && rejectFunc(e);\r\n                                }\r\n                            }\r\n                            else {\r\n                                _handleError(result.reason && result.reason[_DYN_MESSAGE /* @min:%2emessage */]);\r\n                                rejectFunc && rejectFunc(result.reason);\r\n                            }\r\n                        }\r\n                    });\r\n                }\r\n                catch (e) {\r\n                    if (!responseHandled) {\r\n                        _handleError(dumpObj(e));\r\n                        rejectFunc && rejectFunc(e);\r\n                    }\r\n                }\r\n                if (ignoreResponse && !responseHandled) {\r\n                    // Assume success during unload processing as we most likely won't get the response\r\n                    responseHandled = true;\r\n                    _doOnComplete(oncomplete, 200, {});\r\n                    resolveFunc && resolveFunc(true);\r\n                }\r\n                if (_isOneDs && !responseHandled && payload[_DYN_TIMEOUT /* @min:%2etimeout */] > 0) {\r\n                    // Simulate timeout\r\n                    _timeoutWrapper && _timeoutWrapper.set(function () {\r\n                        if (!responseHandled) {\r\n                            // Assume a 500 response (which will cause a retry)\r\n                            responseHandled = true;\r\n                            _doOnComplete(oncomplete, 500, {});\r\n                            resolveFunc && resolveFunc(true);\r\n                        }\r\n                    }, payload[_DYN_TIMEOUT /* @min:%2etimeout */]);\r\n                }\r\n                return thePromise;\r\n            }\r\n            /**\r\n             * Send XDomainRequest\r\n             * @param payload - {string} - The data payload to be sent.\r\n             * @param sync - {boolean} - Indicates if the request should be sent synchronously\r\n             *\r\n             * Note: XDomainRequest does not support sync requests. This 'isAsync' parameter is added\r\n             * to maintain consistency with the xhrSender's contract\r\n             * Note: XDomainRequest does not support custom headers and we are not able to get\r\n             * appId from the backend for the correct correlation.\r\n             */\r\n            function _xdrSender(payload, oncomplete, sync) {\r\n                // It doesn't support custom headers, so no action is taken with current requestHeaders\r\n                var _window = getWindow();\r\n                var xdr = new XDomainRequest();\r\n                var data = payload[_DYN_DATA /* @min:%2edata */];\r\n                xdr.onload = function () {\r\n                    var response = getResponseText(xdr);\r\n                    var onloadFunc = _onCompleteFuncs && _onCompleteFuncs.xdrOnComplete;\r\n                    if (onloadFunc && isFunction(onloadFunc)) {\r\n                        onloadFunc(xdr, oncomplete, payload);\r\n                    }\r\n                    else {\r\n                        _doOnComplete(oncomplete, 200, {}, response);\r\n                    }\r\n                };\r\n                xdr.onerror = function () {\r\n                    _doOnComplete(oncomplete, 400, {}, _isOneDs ? STR_EMPTY : formatErrorMessageXdr(xdr));\r\n                };\r\n                xdr.ontimeout = function () {\r\n                    _doOnComplete(oncomplete, 500, {});\r\n                };\r\n                xdr.onprogress = function () { };\r\n                // XDomainRequest requires the same protocol as the hosting page.\r\n                // If the protocol doesn't match, we can't send the telemetry :(.\r\n                var hostingProtocol = _window && _window.location && _window.location[_DYN_PROTOCOL /* @min:%2eprotocol */] || \"\";\r\n                var endpoint = payload[_DYN_URL_STRING /* @min:%2eurlString */];\r\n                if (!endpoint) {\r\n                    _onNoPayloadUrl(oncomplete);\r\n                    return;\r\n                }\r\n                if (!_isOneDs && endpoint.lastIndexOf(hostingProtocol, 0) !== 0) {\r\n                    var msg = \"Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.\";\r\n                    _throwInternal(_diagLog, 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + msg);\r\n                    _onError(msg, oncomplete);\r\n                    return;\r\n                }\r\n                var endpointUrl = _isOneDs ? endpoint : endpoint[_DYN_REPLACE /* @min:%2ereplace */](/^(https?:)/, \"\");\r\n                xdr.open(STR_POST_METHOD, endpointUrl);\r\n                if (payload[_DYN_TIMEOUT /* @min:%2etimeout */]) {\r\n                    xdr[_DYN_TIMEOUT /* @min:%2etimeout */] = payload[_DYN_TIMEOUT /* @min:%2etimeout */];\r\n                }\r\n                xdr.send(data);\r\n                if (_isOneDs && sync) {\r\n                    _timeoutWrapper && _timeoutWrapper.set(function () {\r\n                        xdr.send(data);\r\n                    }, 0);\r\n                }\r\n                else {\r\n                    xdr.send(data);\r\n                }\r\n            }\r\n            function _initDefaults() {\r\n                _syncFetchPayload = 0;\r\n                _isInitialized = false;\r\n                _enableSendPromise = false;\r\n                _diagLog = null;\r\n                _isOneDs = null;\r\n                _onCompleteFuncs = null;\r\n                _disableCredentials = null;\r\n                _fetchCredentials = null;\r\n                _fallbackInst = null;\r\n                _disableXhr = false;\r\n                _disableBeacon = false;\r\n                _disableBeaconSync = false;\r\n                _disableFetchKeepAlive = false;\r\n                _addNoResponse = false;\r\n                _timeoutWrapper = null;\r\n            }\r\n        });\r\n    }\r\n// Removed Stub for SenderPostManager.prototype.initialize.\r\n// Removed Stub for SenderPostManager.prototype.getSyncFetchPayload.\r\n// Removed Stub for SenderPostManager.prototype.SetConfig.\r\n// Removed Stub for SenderPostManager.prototype.getSenderInst.\r\n// Removed Stub for SenderPostManager.prototype.getFallbackInst.\r\n// Removed Stub for SenderPostManager.prototype._doTeardown.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    SenderPostManager.__ieDyn=1;\n\n    return SenderPostManager;\r\n}());\r\nexport { SenderPostManager };\r\n//# sourceMappingURL=SenderPostManager.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createPromise, doAwaitResponse } from \"@nevware21/ts-async\";\r\nimport { arrSlice, getLength } from \"@nevware21/ts-utils\";\r\nimport { _DYN_UNLOAD } from \"../__DynamicConstants\";\r\n/**\r\n * Run the unload function of the target object if it exists\r\n * @param target - The target object that contains the unload function\r\n * @param isAsync - The caller identifies whether it is expecting the operation to complete synchronously or asynchronously. Even\r\n * if the caller is not waiting the operation may still be performed asynchronously depending on the component and the reverse is\r\n * also true.\r\n * @returns The result of the target function\r\n */\r\nexport function runTargetUnload(target, isAsync) {\r\n    if (target && target[_DYN_UNLOAD /* @min:%2eunload */]) {\r\n        return target[_DYN_UNLOAD /* @min:%2eunload */](isAsync);\r\n    }\r\n}\r\n/**\r\n * Call the unload function on all targets handling any returned [IPromise](https://nevware21.github.io/ts-async/typedoc/interfaces/IPromise.html)\r\n * / Promise before calling the next targets unload\r\n * @param targets - An array of the targets to unload\r\n * @param isAsync - The caller identifies whether it is expecting the operations to complete synchronously or asynchronously.  Even\r\n * if the caller is not waiting the operation may still be performed asynchronously depending on the component and the reverse is\r\n * also true.\r\n * @param done - Optional callback function to call once all of the unload functions have been called.\r\n */\r\nexport function doUnloadAll(targets, isAsync, done) {\r\n    var result;\r\n    if (!done) {\r\n        result = createPromise(function (resolved) {\r\n            done = resolved;\r\n        });\r\n    }\r\n    if (targets && getLength(targets) > 0) {\r\n        doAwaitResponse(runTargetUnload(targets[0], isAsync), function () {\r\n            doUnloadAll(arrSlice(targets, 1), isAsync, done);\r\n        });\r\n    }\r\n    else {\r\n        done();\r\n    }\r\n    return result;\r\n}\r\n//# sourceMappingURL=AsyncUtils.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dumpObj } from \"@nevware21/ts-utils\";\r\nimport { _DYN_ITEMS_RECEIVED, _DYN_LENGTH, _DYN_NAME } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { getJSON } from \"./EnvUtils\";\r\n/**\r\n * Parses the response from the backend.\r\n * @param response - XMLHttpRequest or XDomainRequest response\r\n */\r\nexport function parseResponse(response, diagLog) {\r\n    try {\r\n        if (response && response !== \"\") {\r\n            var result = getJSON().parse(response);\r\n            if (result && result[_DYN_ITEMS_RECEIVED /* @min:%2eitemsReceived */] && result[_DYN_ITEMS_RECEIVED /* @min:%2eitemsReceived */] >= result.itemsAccepted &&\r\n                result.itemsReceived - result.itemsAccepted === result.errors[_DYN_LENGTH /* @min:%2elength */]) {\r\n                return result;\r\n            }\r\n        }\r\n    }\r\n    catch (e) {\r\n        _throwInternal(diagLog, 1 /* eLoggingSeverity.CRITICAL */, 43 /* _eInternalMessageId.InvalidBackendResponse */, \"Cannot parse the response. \" + (e[_DYN_NAME /* @min:%2ename */] || dumpObj(e)), {\r\n            response: response\r\n        });\r\n    }\r\n    return null;\r\n}\r\n//# sourceMappingURL=ResponseHelpers.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { createClassFromInterface } from \"@microsoft/applicationinsights-core-js\";\r\nfunction _aiNameFunc(baseName) {\r\n    var aiName = \"ai.\" + baseName + \".\";\r\n    return function (name) {\r\n        return aiName + name;\r\n    };\r\n}\r\nvar _aiApplication = _aiNameFunc(\"application\");\r\nvar _aiDevice = _aiNameFunc(\"device\");\r\nvar _aiLocation = _aiNameFunc(\"location\");\r\nvar _aiOperation = _aiNameFunc(\"operation\");\r\nvar _aiSession = _aiNameFunc(\"session\");\r\nvar _aiUser = _aiNameFunc(\"user\");\r\nvar _aiCloud = _aiNameFunc(\"cloud\");\r\nvar _aiInternal = _aiNameFunc(\"internal\");\r\nvar ContextTagKeys = /** @class */ (function (_super) {\r\n    __extends(ContextTagKeys, _super);\r\n    function ContextTagKeys() {\r\n        return _super.call(this) || this;\r\n    }\r\n    return ContextTagKeys;\r\n}(createClassFromInterface({\r\n    applicationVersion: _aiApplication(\"ver\"),\r\n    applicationBuild: _aiApplication(\"build\"),\r\n    applicationTypeId: _aiApplication(\"typeId\"),\r\n    applicationId: _aiApplication(\"applicationId\"),\r\n    applicationLayer: _aiApplication(\"layer\"),\r\n    deviceId: _aiDevice(\"id\"),\r\n    deviceIp: _aiDevice(\"ip\"),\r\n    deviceLanguage: _aiDevice(\"language\"),\r\n    deviceLocale: _aiDevice(\"locale\"),\r\n    deviceModel: _aiDevice(\"model\"),\r\n    deviceFriendlyName: _aiDevice(\"friendlyName\"),\r\n    deviceNetwork: _aiDevice(\"network\"),\r\n    deviceNetworkName: _aiDevice(\"networkName\"),\r\n    deviceOEMName: _aiDevice(\"oemName\"),\r\n    deviceOS: _aiDevice(\"os\"),\r\n    deviceOSVersion: _aiDevice(\"osVersion\"),\r\n    deviceRoleInstance: _aiDevice(\"roleInstance\"),\r\n    deviceRoleName: _aiDevice(\"roleName\"),\r\n    deviceScreenResolution: _aiDevice(\"screenResolution\"),\r\n    deviceType: _aiDevice(\"type\"),\r\n    deviceMachineName: _aiDevice(\"machineName\"),\r\n    deviceVMName: _aiDevice(\"vmName\"),\r\n    deviceBrowser: _aiDevice(\"browser\"),\r\n    deviceBrowserVersion: _aiDevice(\"browserVersion\"),\r\n    locationIp: _aiLocation(\"ip\"),\r\n    locationCountry: _aiLocation(\"country\"),\r\n    locationProvince: _aiLocation(\"province\"),\r\n    locationCity: _aiLocation(\"city\"),\r\n    operationId: _aiOperation(\"id\"),\r\n    operationName: _aiOperation(\"name\"),\r\n    operationParentId: _aiOperation(\"parentId\"),\r\n    operationRootId: _aiOperation(\"rootId\"),\r\n    operationSyntheticSource: _aiOperation(\"syntheticSource\"),\r\n    operationCorrelationVector: _aiOperation(\"correlationVector\"),\r\n    sessionId: _aiSession(\"id\"),\r\n    sessionIsFirst: _aiSession(\"isFirst\"),\r\n    sessionIsNew: _aiSession(\"isNew\"),\r\n    userAccountAcquisitionDate: _aiUser(\"accountAcquisitionDate\"),\r\n    userAccountId: _aiUser(\"accountId\"),\r\n    userAgent: _aiUser(\"userAgent\"),\r\n    userId: _aiUser(\"id\"),\r\n    userStoreRegion: _aiUser(\"storeRegion\"),\r\n    userAuthUserId: _aiUser(\"authUserId\"),\r\n    userAnonymousUserAcquisitionDate: _aiUser(\"anonUserAcquisitionDate\"),\r\n    userAuthenticatedUserAcquisitionDate: _aiUser(\"authUserAcquisitionDate\"),\r\n    cloudName: _aiCloud(\"name\"),\r\n    cloudRole: _aiCloud(\"role\"),\r\n    cloudRoleVer: _aiCloud(\"roleVer\"),\r\n    cloudRoleInstance: _aiCloud(\"roleInstance\"),\r\n    cloudEnvironment: _aiCloud(\"environment\"),\r\n    cloudLocation: _aiCloud(\"location\"),\r\n    cloudDeploymentUnit: _aiCloud(\"deploymentUnit\"),\r\n    internalNodeName: _aiInternal(\"nodeName\"),\r\n    internalSdkVersion: _aiInternal(\"sdkVersion\"),\r\n    internalAgentVersion: _aiInternal(\"agentVersion\"),\r\n    internalSnippet: _aiInternal(\"snippet\"),\r\n    internalSdkSrc: _aiInternal(\"sdkSrc\")\r\n})));\r\nexport { ContextTagKeys };\r\n//# sourceMappingURL=ContextTagKeys.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { ContextTagKeys } from \"./Contracts/ContextTagKeys\";\r\nexport var Extensions = {\r\n    UserExt: \"user\",\r\n    DeviceExt: \"device\",\r\n    TraceExt: \"trace\",\r\n    WebExt: \"web\",\r\n    AppExt: \"app\",\r\n    OSExt: \"os\",\r\n    SessionExt: \"ses\",\r\n    SDKExt: \"sdk\"\r\n};\r\nexport var CtxTagKeys = new ContextTagKeys();\r\n//# sourceMappingURL=PartAExtensions.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../../Constants\";\r\nimport { _DYN_NAME } from \"../../__DynamicConstants\";\r\nimport { dataSanitizeString } from \"./DataSanitizer\";\r\nvar Envelope = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of telemetry data.\r\n     */\r\n    function Envelope(logger, data, name) {\r\n        var _this = this;\r\n        var _self = this;\r\n        _self.ver = 1;\r\n        _self.sampleRate = 100.0;\r\n        _self.tags = {};\r\n        _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n        _self.data = data;\r\n        _self.time = toISOString(new Date());\r\n        _self.aiDataContract = {\r\n            time: 1 /* FieldType.Required */,\r\n            iKey: 1 /* FieldType.Required */,\r\n            name: 1 /* FieldType.Required */,\r\n            sampleRate: function () {\r\n                return (_this.sampleRate === 100) ? 4 /* FieldType.Hidden */ : 1 /* FieldType.Required */;\r\n            },\r\n            tags: 1 /* FieldType.Required */,\r\n            data: 1 /* FieldType.Required */\r\n        };\r\n    }\r\n    return Envelope;\r\n}());\r\nexport { Envelope };\r\n//# sourceMappingURL=Envelope.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Data = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of telemetry data.\r\n     */\r\n    function Data(baseType, data) {\r\n        /**\r\n         * The data contract for serializing this object.\r\n         */\r\n        this.aiDataContract = {\r\n            baseType: 1 /* FieldType.Required */,\r\n            baseData: 1 /* FieldType.Required */\r\n        };\r\n        this.baseType = baseType;\r\n        this.baseData = data;\r\n    }\r\n    return Data;\r\n}());\r\nexport { Data };\r\n//# sourceMappingURL=Data.js.map","/*\n * Application Insights JavaScript SDK - Channel, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// ###################################################################################################################################################\r\n// Note: DON'T Export these const from the package as we are still targeting IE/ES5 this will export a mutable variables that someone could change ###\r\n// ###################################################################################################################################################\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nexport var STR_DURATION = \"duration\";\r\n//# sourceMappingURL=InternalConstants.js.map","/*\n * Application Insights JavaScript SDK - Channel, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_TAGS = \"tags\"; // Count: 17\r\nexport var _DYN_DEVICE_TYPE = \"deviceType\"; // Count: 3\r\nexport var _DYN_DATA = \"data\"; // Count: 15\r\nexport var _DYN_NAME = \"name\"; // Count: 8\r\nexport var _DYN_TRACE_ID = \"traceID\"; // Count: 5\r\nexport var _DYN_LENGTH = \"length\"; // Count: 38\r\nexport var _DYN_STRINGIFY = \"stringify\"; // Count: 5\r\nexport var _DYN_MEASUREMENTS = \"measurements\"; // Count: 7\r\nexport var _DYN_DATA_TYPE = \"dataType\"; // Count: 10\r\nexport var _DYN_ENVELOPE_TYPE = \"envelopeType\"; // Count: 7\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 7\r\nexport var _DYN__GET = \"_get\"; // Count: 5\r\nexport var _DYN_ENQUEUE = \"enqueue\"; // Count: 7\r\nexport var _DYN_COUNT = \"count\"; // Count: 7\r\nexport var _DYN_EVENTS_LIMIT_IN_MEM = \"eventsLimitInMem\"; // Count: 2\r\nexport var _DYN_PUSH = \"push\"; // Count: 9\r\nexport var _DYN_ITEM = \"item\"; // Count: 6\r\nexport var _DYN_EMIT_LINE_DELIMITED_0 = \"emitLineDelimitedJson\"; // Count: 3\r\nexport var _DYN_CLEAR = \"clear\"; // Count: 6\r\nexport var _DYN_CREATE_NEW = \"createNew\"; // Count: 3\r\nexport var _DYN_MARK_AS_SENT = \"markAsSent\"; // Count: 4\r\nexport var _DYN_CLEAR_SENT = \"clearSent\"; // Count: 5\r\nexport var _DYN_BUFFER_OVERRIDE = \"bufferOverride\"; // Count: 3\r\nexport var _DYN__BUFFER__KEY = \"BUFFER_KEY\"; // Count: 5\r\nexport var _DYN__SENT__BUFFER__KEY = \"SENT_BUFFER_KEY\"; // Count: 8\r\nexport var _DYN_CONCAT = \"concat\"; // Count: 6\r\nexport var _DYN__MAX__BUFFER__SIZE = \"MAX_BUFFER_SIZE\"; // Count: 5\r\nexport var _DYN_TRIGGER_SEND = \"triggerSend\"; // Count: 5\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 16\r\nexport var _DYN_INITIALIZE = \"initialize\"; // Count: 3\r\nexport var _DYN__SENDER = \"_sender\"; // Count: 5\r\nexport var _DYN_ENDPOINT_URL = \"endpointUrl\"; // Count: 5\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 5\r\nexport var _DYN_CUSTOM_HEADERS = \"customHeaders\"; // Count: 3\r\nexport var _DYN_MAX_BATCH_SIZE_IN_BY1 = \"maxBatchSizeInBytes\"; // Count: 2\r\nexport var _DYN_ONUNLOAD_DISABLE_BEA2 = \"onunloadDisableBeacon\"; // Count: 3\r\nexport var _DYN_IS_BEACON_API_DISABL3 = \"isBeaconApiDisabled\"; // Count: 3\r\nexport var _DYN_ALWAYS_USE_XHR_OVERR4 = \"alwaysUseXhrOverride\"; // Count: 2\r\nexport var _DYN_DISABLE_XHR = \"disableXhr\"; // Count: 3\r\nexport var _DYN_ENABLE_SESSION_STORA5 = \"enableSessionStorageBuffer\"; // Count: 2\r\nexport var _DYN__BUFFER = \"_buffer\"; // Count: 9\r\nexport var _DYN_ONUNLOAD_DISABLE_FET6 = \"onunloadDisableFetch\"; // Count: 2\r\nexport var _DYN_DISABLE_SEND_BEACON_7 = \"disableSendBeaconSplit\"; // Count: 2\r\nexport var _DYN_ENABLE_SEND_PROMISE = \"enableSendPromise\"; // Count: 2\r\nexport var _DYN_GET_SENDER_INST = \"getSenderInst\"; // Count: 4\r\nexport var _DYN_UNLOAD_TRANSPORTS = \"unloadTransports\"; // Count: 2\r\nexport var _DYN_CONVERT_UNDEFINED = \"convertUndefined\"; // Count: 2\r\nexport var _DYN_MAX_BATCH_INTERVAL = \"maxBatchInterval\"; // Count: 2\r\nexport var _DYN_SERIALIZE = \"serialize\"; // Count: 4\r\nexport var _DYN__ON_ERROR = \"_onError\"; // Count: 7\r\nexport var _DYN__ON_PARTIAL_SUCCESS = \"_onPartialSuccess\"; // Count: 3\r\nexport var _DYN__ON_SUCCESS = \"_onSuccess\"; // Count: 6\r\nexport var _DYN_ITEMS_RECEIVED = \"itemsReceived\"; // Count: 3\r\nexport var _DYN_ITEMS_ACCEPTED = \"itemsAccepted\"; // Count: 3\r\nexport var _DYN_ORI_PAYLOAD = \"oriPayload\"; // Count: 3\r\nexport var _DYN_BASE_TYPE = \"baseType\"; // Count: 4\r\nexport var _DYN_SAMPLE_RATE = \"sampleRate\"; // Count: 4\r\nexport var _DYN_EVENTS_SEND_REQUEST = \"eventsSendRequest\"; // Count: 2\r\nexport var _DYN_GET_SAMPLING_SCORE = \"getSamplingScore\"; // Count: 2\r\nexport var _DYN_GET_HASH_CODE_SCORE = \"getHashCodeScore\"; // Count: 4\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Channel, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __assignFn as __assign } from \"@microsoft/applicationinsights-shims\";\r\nimport { CtxTagKeys, Data, Envelope, Event, Exception, HttpMethod, Metric, PageView, PageViewPerformance, RemoteDependencyData, SampleRate, Trace, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, _warnToConsole, getJSON, hasJSON, isNullOrUndefined, isNumber, isString, isTruthy, objForEachKey, optimizeObject, setValue, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_DURATION } from \"./InternalConstants\";\r\nimport { _DYN_DATA, _DYN_DATA_TYPE, _DYN_DEVICE_TYPE, _DYN_ENVELOPE_TYPE, _DYN_LENGTH, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_STRINGIFY, _DYN_TAGS, _DYN_TO_STRING, _DYN_TRACE_ID } from \"./__DynamicConstants\";\r\n// these two constants are used to filter out properties not needed when trying to extract custom properties and measurements from the incoming payload\r\nvar strBaseType = \"baseType\";\r\nvar strBaseData = \"baseData\";\r\nvar strProperties = \"properties\";\r\nvar strTrue = \"true\";\r\nfunction _setValueIf(target, field, value) {\r\n    return setValue(target, field, value, isTruthy);\r\n}\r\n/*\r\n * Maps Part A data from CS 4.0\r\n */\r\nfunction _extractPartAExtensions(logger, item, env) {\r\n    // todo: switch to keys from common in this method\r\n    var envTags = env[_DYN_TAGS /* @min:%2etags */] = env[_DYN_TAGS /* @min:%2etags */] || {};\r\n    var itmExt = item.ext = item.ext || {};\r\n    var itmTags = item[_DYN_TAGS /* @min:%2etags */] = item[_DYN_TAGS /* @min:%2etags */] || [];\r\n    var extUser = itmExt.user;\r\n    if (extUser) {\r\n        _setValueIf(envTags, CtxTagKeys.userAuthUserId, extUser.authId);\r\n        _setValueIf(envTags, CtxTagKeys.userId, extUser.id || extUser.localId);\r\n    }\r\n    var extApp = itmExt.app;\r\n    if (extApp) {\r\n        _setValueIf(envTags, CtxTagKeys.sessionId, extApp.sesId);\r\n    }\r\n    var extDevice = itmExt.device;\r\n    if (extDevice) {\r\n        _setValueIf(envTags, CtxTagKeys.deviceId, extDevice.id || extDevice.localId);\r\n        _setValueIf(envTags, CtxTagKeys[_DYN_DEVICE_TYPE /* @min:%2edeviceType */], extDevice.deviceClass);\r\n        _setValueIf(envTags, CtxTagKeys.deviceIp, extDevice.ip);\r\n        _setValueIf(envTags, CtxTagKeys.deviceModel, extDevice.model);\r\n        _setValueIf(envTags, CtxTagKeys[_DYN_DEVICE_TYPE /* @min:%2edeviceType */], extDevice[_DYN_DEVICE_TYPE /* @min:%2edeviceType */]);\r\n    }\r\n    var web = item.ext.web;\r\n    if (web) {\r\n        _setValueIf(envTags, CtxTagKeys.deviceLanguage, web.browserLang);\r\n        _setValueIf(envTags, CtxTagKeys.deviceBrowserVersion, web.browserVer);\r\n        _setValueIf(envTags, CtxTagKeys.deviceBrowser, web.browser);\r\n        var envData = env[_DYN_DATA /* @min:%2edata */] = env[_DYN_DATA /* @min:%2edata */] || {};\r\n        var envBaseData = envData[strBaseData] = envData[strBaseData] || {};\r\n        var envProps = envBaseData[strProperties] = envBaseData[strProperties] || {};\r\n        _setValueIf(envProps, \"domain\", web.domain);\r\n        _setValueIf(envProps, \"isManual\", web.isManual ? strTrue : null);\r\n        _setValueIf(envProps, \"screenRes\", web.screenRes);\r\n        _setValueIf(envProps, \"userConsent\", web.userConsent ? strTrue : null);\r\n    }\r\n    var extOs = itmExt.os;\r\n    if (extOs) {\r\n        _setValueIf(envTags, CtxTagKeys.deviceOS, extOs[_DYN_NAME /* @min:%2ename */]);\r\n        _setValueIf(envTags, CtxTagKeys.deviceOSVersion, extOs.osVer);\r\n    }\r\n    // No support for mapping Trace.traceState to 2.0 as it is currently empty\r\n    var extTrace = itmExt.trace;\r\n    if (extTrace) {\r\n        _setValueIf(envTags, CtxTagKeys.operationParentId, extTrace.parentID);\r\n        _setValueIf(envTags, CtxTagKeys.operationName, dataSanitizeString(logger, extTrace[_DYN_NAME /* @min:%2ename */]));\r\n        _setValueIf(envTags, CtxTagKeys.operationId, extTrace[_DYN_TRACE_ID /* @min:%2etraceID */]);\r\n    }\r\n    // Sample 4.0 schema\r\n    //  {\r\n    //     \"time\" : \"2018-09-05T22:51:22.4936Z\",\r\n    //     \"name\" : \"MetricWithNamespace\",\r\n    //     \"iKey\" : \"ABC-5a4cbd20-e601-4ef5-a3c6-5d6577e4398e\",\r\n    //     \"ext\": {  \"cloud\": {\r\n    //          \"role\": \"WATSON3\",\r\n    //          \"roleInstance\": \"CO4AEAP00000260\"\r\n    //      },\r\n    //      \"device\": {}, \"correlation\": {} },\r\n    //      \"tags\": [\r\n    //        { \"amazon.region\" : \"east2\" },\r\n    //        { \"os.expid\" : \"wp:02df239\" }\r\n    //     ]\r\n    //   }\r\n    var tgs = {};\r\n    // deals with tags.push({object})\r\n    for (var i = itmTags[_DYN_LENGTH /* @min:%2elength */] - 1; i >= 0; i--) {\r\n        var tg = itmTags[i];\r\n        objForEachKey(tg, function (key, value) {\r\n            tgs[key] = value;\r\n        });\r\n        itmTags.splice(i, 1);\r\n    }\r\n    // deals with tags[key]=value (and handles hasOwnProperty)\r\n    objForEachKey(itmTags, function (tg, value) {\r\n        tgs[tg] = value;\r\n    });\r\n    var theTags = __assign(__assign({}, envTags), tgs);\r\n    if (!theTags[CtxTagKeys.internalSdkVersion]) {\r\n        // Append a version in case it is not already set\r\n        theTags[CtxTagKeys.internalSdkVersion] = dataSanitizeString(logger, \"javascript:\".concat(EnvelopeCreator.Version), 64);\r\n    }\r\n    env[_DYN_TAGS /* @min:%2etags */] = optimizeObject(theTags);\r\n}\r\nfunction _extractPropsAndMeasurements(data, properties, measurements) {\r\n    if (!isNullOrUndefined(data)) {\r\n        objForEachKey(data, function (key, value) {\r\n            if (isNumber(value)) {\r\n                measurements[key] = value;\r\n            }\r\n            else if (isString(value)) {\r\n                properties[key] = value;\r\n            }\r\n            else if (hasJSON()) {\r\n                properties[key] = getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n            }\r\n        });\r\n    }\r\n}\r\nfunction _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue) {\r\n    if (!isNullOrUndefined(properties)) {\r\n        objForEachKey(properties, function (key, value) {\r\n            properties[key] = value || customUndefinedValue;\r\n        });\r\n    }\r\n}\r\n// TODO: Do we want this to take logger as arg or use this._logger as nonstatic?\r\nfunction _createEnvelope(logger, envelopeType, telemetryItem, data) {\r\n    var envelope = new Envelope(logger, data, envelopeType);\r\n    _setValueIf(envelope, \"sampleRate\", telemetryItem[SampleRate]);\r\n    if ((telemetryItem[strBaseData] || {}).startTime) {\r\n        // Starting from Version 3.0.3, the time property will be assigned by the startTime value,\r\n        // which records the loadEvent time for the pageView event.\r\n        envelope.time = toISOString(telemetryItem[strBaseData].startTime);\r\n    }\r\n    envelope.iKey = telemetryItem.iKey;\r\n    var iKeyNoDashes = telemetryItem.iKey.replace(/-/g, \"\");\r\n    envelope[_DYN_NAME /* @min:%2ename */] = envelope[_DYN_NAME /* @min:%2ename */].replace(\"{0}\", iKeyNoDashes);\r\n    // extract all extensions from ctx\r\n    _extractPartAExtensions(logger, telemetryItem, envelope);\r\n    // loop through the envelope tags (extension of Part A) and pick out the ones that should go in outgoing envelope tags\r\n    telemetryItem[_DYN_TAGS /* @min:%2etags */] = telemetryItem[_DYN_TAGS /* @min:%2etags */] || [];\r\n    return optimizeObject(envelope);\r\n}\r\nfunction EnvelopeCreatorInit(logger, telemetryItem) {\r\n    if (isNullOrUndefined(telemetryItem[strBaseData])) {\r\n        _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 46 /* _eInternalMessageId.TelemetryEnvelopeInvalid */, \"telemetryItem.baseData cannot be null.\");\r\n    }\r\n}\r\nexport var EnvelopeCreator = {\r\n    Version: '3.3.4'\r\n};\r\nexport function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n    EnvelopeCreatorInit(logger, telemetryItem);\r\n    var customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n    var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n    _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n    if (!isNullOrUndefined(customUndefinedValue)) {\r\n        _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n    }\r\n    var bd = telemetryItem[strBaseData];\r\n    if (isNullOrUndefined(bd)) {\r\n        _warnToConsole(logger, \"Invalid input for dependency data\");\r\n        return null;\r\n    }\r\n    var method = bd[strProperties] && bd[strProperties][HttpMethod] ? bd[strProperties][HttpMethod] : \"GET\";\r\n    var remoteDepData = new RemoteDependencyData(logger, bd.id, bd.target, bd[_DYN_NAME /* @min:%2ename */], bd[STR_DURATION /* @min:%2eduration */], bd.success, bd.responseCode, method, bd.type, bd.correlationContext, customProperties, customMeasurements);\r\n    var data = new Data(RemoteDependencyData[_DYN_DATA_TYPE /* @min:%2edataType */], remoteDepData);\r\n    return _createEnvelope(logger, RemoteDependencyData[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function EventEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n    EnvelopeCreatorInit(logger, telemetryItem);\r\n    var customProperties = {};\r\n    var customMeasurements = {};\r\n    if (telemetryItem[strBaseType] !== Event[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n        customProperties[\"baseTypeSource\"] = telemetryItem[strBaseType]; // save the passed in base type as a property\r\n    }\r\n    if (telemetryItem[strBaseType] === Event[_DYN_DATA_TYPE /* @min:%2edataType */]) { // take collection\r\n        customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n        customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n    }\r\n    else { // if its not a known type, convert to custom event\r\n        if (telemetryItem[strBaseData]) {\r\n            _extractPropsAndMeasurements(telemetryItem[strBaseData], customProperties, customMeasurements);\r\n        }\r\n    }\r\n    // Extract root level properties from part C telemetryItem.data\r\n    _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n    if (!isNullOrUndefined(customUndefinedValue)) {\r\n        _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n    }\r\n    var eventName = telemetryItem[strBaseData][_DYN_NAME /* @min:%2ename */];\r\n    var eventData = new Event(logger, eventName, customProperties, customMeasurements);\r\n    var data = new Data(Event[_DYN_DATA_TYPE /* @min:%2edataType */], eventData);\r\n    return _createEnvelope(logger, Event[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function ExceptionEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n    EnvelopeCreatorInit(logger, telemetryItem);\r\n    // Extract root level properties from part C telemetryItem.data\r\n    var customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n    var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n    _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n    if (!isNullOrUndefined(customUndefinedValue)) {\r\n        _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n    }\r\n    var bd = telemetryItem[strBaseData];\r\n    var exData = Exception.CreateFromInterface(logger, bd, customProperties, customMeasurements);\r\n    var data = new Data(Exception[_DYN_DATA_TYPE /* @min:%2edataType */], exData);\r\n    return _createEnvelope(logger, Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function MetricEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n    EnvelopeCreatorInit(logger, telemetryItem);\r\n    var baseData = telemetryItem[strBaseData];\r\n    var props = baseData[strProperties] || {};\r\n    var measurements = baseData[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n    _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], props, measurements);\r\n    if (!isNullOrUndefined(customUndefinedValue)) {\r\n        _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n    }\r\n    var baseMetricData = new Metric(logger, baseData[_DYN_NAME /* @min:%2ename */], baseData.average, baseData.sampleCount, baseData.min, baseData.max, baseData.stdDev, props, measurements);\r\n    var data = new Data(Metric[_DYN_DATA_TYPE /* @min:%2edataType */], baseMetricData);\r\n    return _createEnvelope(logger, Metric[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function PageViewEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n    EnvelopeCreatorInit(logger, telemetryItem);\r\n    // Since duration is not part of the domain properties in Common Schema, extract it from part C\r\n    var duration;\r\n    var baseData = telemetryItem[strBaseData];\r\n    if (!isNullOrUndefined(baseData) &&\r\n        !isNullOrUndefined(baseData[strProperties]) &&\r\n        !isNullOrUndefined(baseData[strProperties][STR_DURATION])) { // from part B properties\r\n        duration = baseData[strProperties][STR_DURATION];\r\n        delete baseData[strProperties][STR_DURATION];\r\n    }\r\n    else if (!isNullOrUndefined(telemetryItem[_DYN_DATA /* @min:%2edata */]) &&\r\n        !isNullOrUndefined(telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION])) { // from custom properties\r\n        duration = telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION];\r\n        delete telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION];\r\n    }\r\n    var bd = telemetryItem[strBaseData];\r\n    // special case: pageview.id is grabbed from current operation id. Analytics plugin is decoupled from properties plugin, so this is done here instead. This can be made a default telemetry intializer instead if needed to be decoupled from channel\r\n    var currentContextId;\r\n    if (((telemetryItem.ext || {}).trace || {})[_DYN_TRACE_ID /* @min:%2etraceID */]) {\r\n        currentContextId = telemetryItem.ext.trace[_DYN_TRACE_ID /* @min:%2etraceID */];\r\n    }\r\n    var id = bd.id || currentContextId;\r\n    var name = bd[_DYN_NAME /* @min:%2ename */];\r\n    var url = bd.uri;\r\n    var properties = bd[strProperties] || {};\r\n    var measurements = bd[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n    // refUri is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n    if (!isNullOrUndefined(bd.refUri)) {\r\n        properties[\"refUri\"] = bd.refUri;\r\n    }\r\n    // pageType is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n    if (!isNullOrUndefined(bd.pageType)) {\r\n        properties[\"pageType\"] = bd.pageType;\r\n    }\r\n    // isLoggedIn is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n    if (!isNullOrUndefined(bd.isLoggedIn)) {\r\n        properties[\"isLoggedIn\"] = bd.isLoggedIn[_DYN_TO_STRING /* @min:%2etoString */]();\r\n    }\r\n    // pageTags is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n    if (!isNullOrUndefined(bd[strProperties])) {\r\n        var pageTags = bd[strProperties];\r\n        objForEachKey(pageTags, function (key, value) {\r\n            properties[key] = value;\r\n        });\r\n    }\r\n    _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], properties, measurements);\r\n    if (!isNullOrUndefined(customUndefinedValue)) {\r\n        _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n    }\r\n    var pageViewData = new PageView(logger, name, url, duration, properties, measurements, id);\r\n    var data = new Data(PageView[_DYN_DATA_TYPE /* @min:%2edataType */], pageViewData);\r\n    return _createEnvelope(logger, PageView[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function PageViewPerformanceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n    EnvelopeCreatorInit(logger, telemetryItem);\r\n    var bd = telemetryItem[strBaseData];\r\n    var name = bd[_DYN_NAME /* @min:%2ename */];\r\n    var url = bd.uri || bd.url;\r\n    var properties = bd[strProperties] || {};\r\n    var measurements = bd[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n    _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], properties, measurements);\r\n    if (!isNullOrUndefined(customUndefinedValue)) {\r\n        _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n    }\r\n    var baseData = new PageViewPerformance(logger, name, url, undefined, properties, measurements, bd);\r\n    var data = new Data(PageViewPerformance[_DYN_DATA_TYPE /* @min:%2edataType */], baseData);\r\n    return _createEnvelope(logger, PageViewPerformance[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function TraceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n    EnvelopeCreatorInit(logger, telemetryItem);\r\n    var message = telemetryItem[strBaseData].message;\r\n    var severityLevel = telemetryItem[strBaseData].severityLevel;\r\n    var props = telemetryItem[strBaseData][strProperties] || {};\r\n    var measurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n    _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], props, measurements);\r\n    if (!isNullOrUndefined(customUndefinedValue)) {\r\n        _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n    }\r\n    var baseData = new Trace(logger, message, severityLevel, props, measurements);\r\n    var data = new Data(Trace[_DYN_DATA_TYPE /* @min:%2edataType */], baseData);\r\n    return _createEnvelope(logger, Trace[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\n//# sourceMappingURL=EnvelopeCreator.js.map","/*\n * Application Insights JavaScript SDK - Channel, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlGetSessionStorage, utlRemoveSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, arrForEach, arrIndexOf, dumpObj, getExceptionName, getJSON, isArray, isFunction, isNullOrUndefined, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_BUFFER_OVERRIDE, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_CONCAT, _DYN_COUNT, _DYN_CREATE_NEW, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENQUEUE, _DYN_EVENTS_LIMIT_IN_MEM, _DYN_ITEM, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_PUSH, _DYN_STRINGIFY, _DYN__BUFFER__KEY, _DYN__GET, _DYN__MAX__BUFFER__SIZE, _DYN__SENT__BUFFER__KEY } from \"./__DynamicConstants\";\r\nvar BaseSendBuffer = /** @class */ (function () {\r\n    function BaseSendBuffer(logger, config) {\r\n        var _buffer = [];\r\n        var _bufferFullMessageSent = false;\r\n        var _maxRetryCnt = config.maxRetryCnt;\r\n        this[_DYN__GET /* @min:%2e_get */] = function () {\r\n            return _buffer;\r\n        };\r\n        this._set = function (buffer) {\r\n            _buffer = buffer;\r\n            return _buffer;\r\n        };\r\n        dynamicProto(BaseSendBuffer, this, function (_self) {\r\n            _self[_DYN_ENQUEUE /* @min:%2eenqueue */] = function (payload) {\r\n                if (_self[_DYN_COUNT /* @min:%2ecount */]() >= config[_DYN_EVENTS_LIMIT_IN_MEM /* @min:%2eeventsLimitInMem */]) {\r\n                    // sent internal log only once per page view\r\n                    if (!_bufferFullMessageSent) {\r\n                        _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 105 /* _eInternalMessageId.InMemoryStorageBufferFull */, \"Maximum in-memory buffer size reached: \" + _self[_DYN_COUNT /* @min:%2ecount */](), true);\r\n                        _bufferFullMessageSent = true;\r\n                    }\r\n                    return;\r\n                }\r\n                payload.cnt = payload.cnt || 0;\r\n                // max retry is defined, and max retry is reached, do not add the payload to buffer\r\n                if (!isNullOrUndefined(_maxRetryCnt)) {\r\n                    if (payload.cnt > _maxRetryCnt) {\r\n                        // TODO: add log here on dropping payloads\r\n                        return;\r\n                    }\r\n                }\r\n                _buffer[_DYN_PUSH /* @min:%2epush */](payload);\r\n                return;\r\n            };\r\n            _self[_DYN_COUNT /* @min:%2ecount */] = function () {\r\n                return _buffer[_DYN_LENGTH /* @min:%2elength */];\r\n            };\r\n            _self.size = function () {\r\n                var size = _buffer[_DYN_LENGTH /* @min:%2elength */];\r\n                for (var lp = 0; lp < _buffer[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n                    size += (_buffer[lp].item)[_DYN_LENGTH /* @min:%2elength */];\r\n                }\r\n                if (!config[_DYN_EMIT_LINE_DELIMITED_0 /* @min:%2eemitLineDelimitedJson */]) {\r\n                    size += 2;\r\n                }\r\n                return size;\r\n            };\r\n            _self[_DYN_CLEAR /* @min:%2eclear */] = function () {\r\n                _buffer = [];\r\n                _bufferFullMessageSent = false;\r\n            };\r\n            _self.getItems = function () {\r\n                return _buffer.slice(0);\r\n            };\r\n            _self.batchPayloads = function (payloads) {\r\n                if (payloads && payloads[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    var payloadStr_1 = [];\r\n                    arrForEach(payloads, function (payload) {\r\n                        payloadStr_1[_DYN_PUSH /* @min:%2epush */](payload[_DYN_ITEM /* @min:%2eitem */]);\r\n                    });\r\n                    var batch = config[_DYN_EMIT_LINE_DELIMITED_0 /* @min:%2eemitLineDelimitedJson */] ?\r\n                        payloadStr_1.join(\"\\n\") :\r\n                        \"[\" + payloadStr_1.join(\",\") + \"]\";\r\n                    return batch;\r\n                }\r\n                return null;\r\n            };\r\n            _self[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = function (newLogger, newConfig, canUseSessionStorage) {\r\n                var items = _buffer.slice(0);\r\n                newLogger = newLogger || logger;\r\n                newConfig = newConfig || {};\r\n                var newBuffer = !!canUseSessionStorage ? new SessionStorageSendBuffer(newLogger, newConfig) : new ArraySendBuffer(newLogger, newConfig);\r\n                arrForEach(items, function (payload) {\r\n                    newBuffer[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n                });\r\n                return newBuffer;\r\n            };\r\n        });\r\n    }\r\n// Removed Stub for BaseSendBuffer.prototype.enqueue.\r\n// Removed Stub for BaseSendBuffer.prototype.count.\r\n// Removed Stub for BaseSendBuffer.prototype.size.\r\n// Removed Stub for BaseSendBuffer.prototype.clear.\r\n// Removed Stub for BaseSendBuffer.prototype.getItems.\r\n// Removed Stub for BaseSendBuffer.prototype.batchPayloads.\r\n// Removed Stub for BaseSendBuffer.prototype.createNew.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    BaseSendBuffer.__ieDyn=1;\n\n    return BaseSendBuffer;\r\n}());\r\n/*\r\n * An array based send buffer.\r\n */\r\nvar ArraySendBuffer = /** @class */ (function (_super) {\r\n    __extends(ArraySendBuffer, _super);\r\n    function ArraySendBuffer(logger, config) {\r\n        var _this = _super.call(this, logger, config) || this;\r\n        dynamicProto(ArraySendBuffer, _this, function (_self, _base) {\r\n            _self[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */] = function (payload) {\r\n                _base[_DYN_CLEAR /* @min:%2eclear */]();\r\n            };\r\n            _self[_DYN_CLEAR_SENT /* @min:%2eclearSent */] = function (payload) {\r\n                // not supported\r\n            };\r\n        });\r\n        return _this;\r\n    }\r\n// Removed Stub for ArraySendBuffer.prototype.markAsSent.\r\n// Removed Stub for ArraySendBuffer.prototype.clearSent.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    ArraySendBuffer.__ieDyn=1;\n\n    return ArraySendBuffer;\r\n}(BaseSendBuffer));\r\nexport { ArraySendBuffer };\r\nvar PREVIOUS_KEYS = [\"AI_buffer\", \"AI_sentBuffer\"];\r\n/*\r\n * Session storage buffer holds a copy of all unsent items in the browser session storage.\r\n */\r\nvar SessionStorageSendBuffer = /** @class */ (function (_super) {\r\n    __extends(SessionStorageSendBuffer, _super);\r\n    function SessionStorageSendBuffer(logger, config) {\r\n        var _this = _super.call(this, logger, config) || this;\r\n        var _bufferFullMessageSent = false;\r\n        //Note: should not use config.namePrefix directly, because it will always refers to the latest namePrefix\r\n        var _namePrefix = config === null || config === void 0 ? void 0 : config.namePrefix;\r\n        // TODO: add remove buffer override as well\r\n        var _b = config[_DYN_BUFFER_OVERRIDE /* @min:%2ebufferOverride */] || { getItem: utlGetSessionStorage, setItem: utlSetSessionStorage }, getItem = _b.getItem, setItem = _b.setItem;\r\n        var _maxRetryCnt = config.maxRetryCnt;\r\n        dynamicProto(SessionStorageSendBuffer, _this, function (_self, _base) {\r\n            var bufferItems = _getBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */]);\r\n            var itemsInSentBuffer = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n            var previousItems = _getPreviousEvents();\r\n            var notDeliveredItems = itemsInSentBuffer[_DYN_CONCAT /* @min:%2econcat */](previousItems);\r\n            var buffer = _self._set(bufferItems[_DYN_CONCAT /* @min:%2econcat */](notDeliveredItems));\r\n            // If the buffer has too many items, drop items from the end.\r\n            if (buffer[_DYN_LENGTH /* @min:%2elength */] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n                buffer[_DYN_LENGTH /* @min:%2elength */] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */];\r\n            }\r\n            _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], []);\r\n            _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], buffer);\r\n            _self[_DYN_ENQUEUE /* @min:%2eenqueue */] = function (payload) {\r\n                if (_self[_DYN_COUNT /* @min:%2ecount */]() >= SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n                    // sent internal log only once per page view\r\n                    if (!_bufferFullMessageSent) {\r\n                        _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Maximum buffer size reached: \" + _self[_DYN_COUNT /* @min:%2ecount */](), true);\r\n                        _bufferFullMessageSent = true;\r\n                    }\r\n                    return;\r\n                }\r\n                payload.cnt = payload.cnt || 0;\r\n                // max retry is defined, and max retry is reached, do not add the payload to buffer\r\n                if (!isNullOrUndefined(_maxRetryCnt)) {\r\n                    if (payload.cnt > _maxRetryCnt) {\r\n                        // TODO: add log here on dropping payloads\r\n                        return;\r\n                    }\r\n                }\r\n                _base[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n                _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, _self[_DYN__GET /* @min:%2e_get */]());\r\n            };\r\n            _self[_DYN_CLEAR /* @min:%2eclear */] = function () {\r\n                _base[_DYN_CLEAR /* @min:%2eclear */]();\r\n                _setBuffer(SessionStorageSendBuffer.BUFFER_KEY, _self[_DYN__GET /* @min:%2e_get */]());\r\n                _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], []);\r\n                _bufferFullMessageSent = false;\r\n            };\r\n            _self[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */] = function (payload) {\r\n                _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._set(_removePayloadsFromBuffer(payload, _self[_DYN__GET /* @min:%2e_get */]())));\r\n                var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n                if (sentElements instanceof Array && payload instanceof Array) {\r\n                    sentElements = sentElements[_DYN_CONCAT /* @min:%2econcat */](payload);\r\n                    if (sentElements[_DYN_LENGTH /* @min:%2elength */] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n                        // We send telemetry normally. If the SENT_BUFFER is too big we don't add new elements\r\n                        // until we receive a response from the backend and the buffer has free space again (see clearSent method)\r\n                        _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Sent buffer reached its maximum size: \" + sentElements[_DYN_LENGTH /* @min:%2elength */], true);\r\n                        sentElements[_DYN_LENGTH /* @min:%2elength */] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */];\r\n                    }\r\n                    _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], sentElements);\r\n                }\r\n            };\r\n            _self[_DYN_CLEAR_SENT /* @min:%2eclearSent */] = function (payload) {\r\n                var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n                sentElements = _removePayloadsFromBuffer(payload, sentElements);\r\n                _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], sentElements);\r\n            };\r\n            _self[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = function (newLogger, newConfig, canUseSessionStorage) {\r\n                canUseSessionStorage = !!canUseSessionStorage;\r\n                var unsentItems = _self[_DYN__GET /* @min:%2e_get */]().slice(0);\r\n                var sentItems = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]).slice(0);\r\n                newLogger = newLogger || logger;\r\n                newConfig = newConfig || {};\r\n                // to make sure that we do not send duplicated payloads when it is switched back to previous one\r\n                _self[_DYN_CLEAR /* @min:%2eclear */]();\r\n                var newBuffer = canUseSessionStorage ? new SessionStorageSendBuffer(newLogger, newConfig) : new ArraySendBuffer(newLogger, newConfig);\r\n                arrForEach(unsentItems, function (payload) {\r\n                    newBuffer[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n                });\r\n                if (canUseSessionStorage) {\r\n                    // arr buffer will clear all payloads if markAsSent() is called\r\n                    newBuffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](sentItems);\r\n                }\r\n                return newBuffer;\r\n            };\r\n            function _removePayloadsFromBuffer(payloads, buffer) {\r\n                var remaining = [];\r\n                var payloadStr = [];\r\n                arrForEach(payloads, function (payload) {\r\n                    payloadStr[_DYN_PUSH /* @min:%2epush */](payload[_DYN_ITEM /* @min:%2eitem */]);\r\n                });\r\n                arrForEach(buffer, function (value) {\r\n                    if (!isFunction(value) && arrIndexOf(payloadStr, value[_DYN_ITEM /* @min:%2eitem */]) === -1) {\r\n                        remaining[_DYN_PUSH /* @min:%2epush */](value);\r\n                    }\r\n                });\r\n                return remaining;\r\n            }\r\n            function _getBuffer(key) {\r\n                var prefixedKey = key;\r\n                prefixedKey = _namePrefix ? _namePrefix + \"_\" + prefixedKey : prefixedKey;\r\n                return _getBufferBase(prefixedKey);\r\n            }\r\n            function _getBufferBase(key) {\r\n                try {\r\n                    var bufferJson = getItem(logger, key);\r\n                    if (bufferJson) {\r\n                        var buffer_1 = getJSON().parse(bufferJson);\r\n                        if (isString(buffer_1)) {\r\n                            // When using some version prototype.js the stringify / parse cycle does not decode array's correctly\r\n                            buffer_1 = getJSON().parse(buffer_1);\r\n                        }\r\n                        if (buffer_1 && isArray(buffer_1)) {\r\n                            return buffer_1;\r\n                        }\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 42 /* _eInternalMessageId.FailedToRestoreStorageBuffer */, \" storage key: \" + key + \", \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n                return [];\r\n            }\r\n            function _setBuffer(key, buffer) {\r\n                var prefixedKey = key;\r\n                try {\r\n                    prefixedKey = _namePrefix ? _namePrefix + \"_\" + prefixedKey : prefixedKey;\r\n                    var bufferJson = JSON[_DYN_STRINGIFY /* @min:%2estringify */](buffer);\r\n                    setItem(logger, prefixedKey, bufferJson);\r\n                }\r\n                catch (e) {\r\n                    // if there was an error, clear the buffer\r\n                    // telemetry is stored in the _buffer array so we won't loose any items\r\n                    setItem(logger, prefixedKey, JSON[_DYN_STRINGIFY /* @min:%2estringify */]([]));\r\n                    _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 41 /* _eInternalMessageId.FailedToSetStorageBuffer */, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e) + \". Buffer cleared\", { exception: dumpObj(e) });\r\n                }\r\n            }\r\n            // this removes buffer with prefix+key\r\n            function _getPreviousEvents() {\r\n                var items = [];\r\n                try {\r\n                    arrForEach(PREVIOUS_KEYS, function (key) {\r\n                        var events = _getItemsFromPreviousKey(key);\r\n                        items = items[_DYN_CONCAT /* @min:%2econcat */](events);\r\n                        // to make sure that we also transfer items from old prefixed + key buffer\r\n                        if (_namePrefix) {\r\n                            var prefixedKey = _namePrefix + \"_\" + key;\r\n                            var prefixEvents = _getItemsFromPreviousKey(prefixedKey);\r\n                            items = items[_DYN_CONCAT /* @min:%2econcat */](prefixEvents);\r\n                        }\r\n                    });\r\n                    return items;\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 41 /* _eInternalMessageId.FailedToSetStorageBuffer */, \"Transfer events from previous buffers: \" + getExceptionName(e) + \". previous Buffer items can not be removed\", { exception: dumpObj(e) });\r\n                }\r\n                return [];\r\n            }\r\n            // transform string[] to IInternalStorageItem[]\r\n            function _getItemsFromPreviousKey(key) {\r\n                try {\r\n                    var items = _getBufferBase(key);\r\n                    var transFormedItems_1 = [];\r\n                    arrForEach(items, function (item) {\r\n                        var internalItem = {\r\n                            item: item,\r\n                            cnt: 0 // previous events will be default to 0 count\r\n                        };\r\n                        transFormedItems_1[_DYN_PUSH /* @min:%2epush */](internalItem);\r\n                    });\r\n                    // remove the session storage if we can add events back\r\n                    utlRemoveSessionStorage(logger, key);\r\n                    return transFormedItems_1;\r\n                }\r\n                catch (e) {\r\n                    // eslint-disable-next-line no-empty\r\n                }\r\n                return [];\r\n            }\r\n        });\r\n        return _this;\r\n    }\r\n// Removed Stub for SessionStorageSendBuffer.prototype.enqueue.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.clear.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.markAsSent.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.clearSent.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.createNew.\r\n    var _a;\r\n    _a = SessionStorageSendBuffer;\r\n    SessionStorageSendBuffer.VERSION = \"_1\";\r\n    SessionStorageSendBuffer.BUFFER_KEY = \"AI_buffer\" + _a.VERSION;\r\n    SessionStorageSendBuffer.SENT_BUFFER_KEY = \"AI_sentBuffer\" + _a.VERSION;\r\n    // Maximum number of payloads stored in the buffer. If the buffer is full, new elements will be dropped.\r\n    SessionStorageSendBuffer.MAX_BUFFER_SIZE = 2000;\r\n    return SessionStorageSendBuffer;\r\n}(BaseSendBuffer));\r\nexport { SessionStorageSendBuffer };\r\n//# sourceMappingURL=SendBuffer.js.map","/*\n * Application Insights JavaScript SDK - Channel, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nvar _a, _b;\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, Event, Exception, Metric, PageView, PageViewPerformance, ProcessLegacy, RemoteDependencyData, RequestHeaders, SampleRate, Trace, createOfflineListener, isInternalApplicationInsightsEndpoint, utlCanUseSessionStorage, utlSetStoragePrefix } from \"@microsoft/applicationinsights-common\";\r\nimport { ActiveStatus, BaseTelemetryPlugin, SenderPostManager, _throwInternal, _warnToConsole, arrForEach, cfgDfBoolean, cfgDfValidate, createProcessTelemetryContext, createUniqueNamespace, dateNow, dumpObj, formatErrorMessageXdr, formatErrorMessageXhr, getExceptionName, getIEVersion, isArray, isBeaconsSupported, isFetchSupported, isNullOrUndefined, mergeEvtNamespace, objExtend, onConfigChange, parseResponse, prependTransports, runTargetUnload } from \"@microsoft/applicationinsights-core-js\";\r\nimport { isNumber, isPromiseLike, isString, isTruthy, objDeepFreeze, objDefine, scheduleTimeout } from \"@nevware21/ts-utils\";\r\nimport { DependencyEnvelopeCreator, EventEnvelopeCreator, ExceptionEnvelopeCreator, MetricEnvelopeCreator, PageViewEnvelopeCreator, PageViewPerformanceEnvelopeCreator, TraceEnvelopeCreator } from \"./EnvelopeCreator\";\r\nimport { ArraySendBuffer, SessionStorageSendBuffer } from \"./SendBuffer\";\r\nimport { Serializer } from \"./Serializer\";\r\nimport { Sample } from \"./TelemetryProcessors/Sample\";\r\nimport { _DYN_ALWAYS_USE_XHR_OVERR4, _DYN_BASE_TYPE, _DYN_BUFFER_OVERRIDE, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_CONVERT_UNDEFINED, _DYN_COUNT, _DYN_CREATE_NEW, _DYN_CUSTOM_HEADERS, _DYN_DATA, _DYN_DIAG_LOG, _DYN_DISABLE_SEND_BEACON_7, _DYN_DISABLE_XHR, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENABLE_SEND_PROMISE, _DYN_ENABLE_SESSION_STORA5, _DYN_ENDPOINT_URL, _DYN_ENQUEUE, _DYN_EVENTS_LIMIT_IN_MEM, _DYN_EVENTS_SEND_REQUEST, _DYN_GET_SENDER_INST, _DYN_INITIALIZE, _DYN_INSTRUMENTATION_KEY, _DYN_IS_BEACON_API_DISABL3, _DYN_ITEM, _DYN_ITEMS_ACCEPTED, _DYN_ITEMS_RECEIVED, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_MAX_BATCH_INTERVAL, _DYN_MAX_BATCH_SIZE_IN_BY1, _DYN_ONUNLOAD_DISABLE_BEA2, _DYN_ONUNLOAD_DISABLE_FET6, _DYN_ORI_PAYLOAD, _DYN_PUSH, _DYN_SAMPLE_RATE, _DYN_SERIALIZE, _DYN_TAGS, _DYN_TRIGGER_SEND, _DYN_UNLOAD_TRANSPORTS, _DYN__BUFFER, _DYN__ON_ERROR, _DYN__ON_PARTIAL_SUCCESS, _DYN__ON_SUCCESS, _DYN__SENDER } from \"./__DynamicConstants\";\r\nvar UNDEFINED_VALUE = undefined;\r\nvar EMPTY_STR = \"\";\r\nvar FetchSyncRequestSizeLimitBytes = 65000; // approx 64kb (the current Edge, Firefox and Chrome max limit)\r\nfunction _getResponseText(xhr) {\r\n    try {\r\n        return xhr.responseText;\r\n    }\r\n    catch (e) {\r\n        // Best effort, as XHR may throw while XDR wont so just ignore\r\n    }\r\n    return null;\r\n}\r\nfunction isOverrideFn(httpXHROverride) {\r\n    return httpXHROverride && httpXHROverride.sendPOST;\r\n}\r\nvar defaultAppInsightsChannelConfig = objDeepFreeze((_a = {\r\n        // Use the default value (handles empty string in the configuration)\r\n        endpointUrl: cfgDfValidate(isTruthy, DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH)\r\n    },\r\n    _a[_DYN_EMIT_LINE_DELIMITED_0 /* @min:emitLineDelimitedJson */] = cfgDfBoolean(),\r\n    _a[_DYN_MAX_BATCH_INTERVAL /* @min:maxBatchInterval */] = 15000,\r\n    _a[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:maxBatchSizeInBytes */] = 102400,\r\n    _a.disableTelemetry = cfgDfBoolean(),\r\n    _a[_DYN_ENABLE_SESSION_STORA5 /* @min:enableSessionStorageBuffer */] = cfgDfBoolean(true),\r\n    _a.isRetryDisabled = cfgDfBoolean(),\r\n    _a[_DYN_IS_BEACON_API_DISABL3 /* @min:isBeaconApiDisabled */] = cfgDfBoolean(true),\r\n    _a[_DYN_DISABLE_SEND_BEACON_7 /* @min:disableSendBeaconSplit */] = cfgDfBoolean(true),\r\n    _a[_DYN_DISABLE_XHR /* @min:disableXhr */] = cfgDfBoolean(),\r\n    _a[_DYN_ONUNLOAD_DISABLE_FET6 /* @min:onunloadDisableFetch */] = cfgDfBoolean(),\r\n    _a[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:onunloadDisableBeacon */] = cfgDfBoolean(),\r\n    _a[_DYN_INSTRUMENTATION_KEY /* @min:instrumentationKey */] = UNDEFINED_VALUE,\r\n    _a.namePrefix = UNDEFINED_VALUE,\r\n    _a.samplingPercentage = cfgDfValidate(_chkSampling, 100),\r\n    _a[_DYN_CUSTOM_HEADERS /* @min:customHeaders */] = UNDEFINED_VALUE,\r\n    _a[_DYN_CONVERT_UNDEFINED /* @min:convertUndefined */] = UNDEFINED_VALUE,\r\n    _a[_DYN_EVENTS_LIMIT_IN_MEM /* @min:eventsLimitInMem */] = 10000,\r\n    _a[_DYN_BUFFER_OVERRIDE /* @min:bufferOverride */] = false,\r\n    _a.httpXHROverride = { isVal: isOverrideFn, v: UNDEFINED_VALUE },\r\n    _a[_DYN_ALWAYS_USE_XHR_OVERR4 /* @min:alwaysUseXhrOverride */] = cfgDfBoolean(),\r\n    _a.transports = UNDEFINED_VALUE,\r\n    _a.retryCodes = UNDEFINED_VALUE,\r\n    _a.maxRetryCnt = { isVal: isNumber, v: 10 },\r\n    _a));\r\nfunction _chkSampling(value) {\r\n    return !isNaN(value) && value > 0 && value <= 100;\r\n}\r\nvar EnvelopeTypeCreator = (_b = {},\r\n    _b[Event.dataType] = EventEnvelopeCreator,\r\n    _b[Trace.dataType] = TraceEnvelopeCreator,\r\n    _b[PageView.dataType] = PageViewEnvelopeCreator,\r\n    _b[PageViewPerformance.dataType] = PageViewPerformanceEnvelopeCreator,\r\n    _b[Exception.dataType] = ExceptionEnvelopeCreator,\r\n    _b[Metric.dataType] = MetricEnvelopeCreator,\r\n    _b[RemoteDependencyData.dataType] = DependencyEnvelopeCreator,\r\n    _b);\r\nvar Sender = /** @class */ (function (_super) {\r\n    __extends(Sender, _super);\r\n    function Sender() {\r\n        var _this = _super.call(this) || this;\r\n        _this.priority = 1001;\r\n        _this.identifier = BreezeChannelIdentifier;\r\n        // Don't set the defaults here, set them in the _initDefaults() as this is also called during unload\r\n        var _consecutiveErrors; // How many times in a row a retryable error condition has occurred.\r\n        var _retryAt; // The time to retry at in milliseconds from 1970/01/01 (this makes the timer calculation easy).\r\n        var _lastSend; // The time of the last send operation.\r\n        var _paused; // Flag indicating that the sending should be paused\r\n        var _timeoutHandle; // Handle to the timer for delayed sending of batches of data.\r\n        var _serializer;\r\n        var _stamp_specific_redirects;\r\n        var _headers;\r\n        var _syncFetchPayload = 0; // Keep track of the outstanding sync fetch payload total (as sync fetch has limits)\r\n        var _syncUnloadSender; // The identified sender to use for the synchronous unload stage\r\n        var _offlineListener;\r\n        var _evtNamespace;\r\n        var _endpointUrl;\r\n        var _orgEndpointUrl;\r\n        var _maxBatchSizeInBytes;\r\n        var _beaconSupported;\r\n        var _beaconOnUnloadSupported;\r\n        var _beaconNormalSupported;\r\n        var _customHeaders;\r\n        var _disableTelemetry;\r\n        var _instrumentationKey;\r\n        var _convertUndefined;\r\n        var _isRetryDisabled;\r\n        var _maxBatchInterval;\r\n        var _sessionStorageUsed;\r\n        var _bufferOverrideUsed;\r\n        var _namePrefix;\r\n        var _enableSendPromise;\r\n        var _alwaysUseCustomSend;\r\n        var _disableXhr;\r\n        var _fetchKeepAlive;\r\n        var _xhrSend;\r\n        var _fallbackSend;\r\n        var _disableBeaconSplit;\r\n        var _sendPostMgr;\r\n        var _retryCodes;\r\n        dynamicProto(Sender, _this, function (_self, _base) {\r\n            _initDefaults();\r\n            _self.pause = function () {\r\n                _clearScheduledTimer();\r\n                _paused = true;\r\n            };\r\n            _self.resume = function () {\r\n                if (_paused) {\r\n                    _paused = false;\r\n                    _retryAt = null;\r\n                    // flush if we have exceeded the max-size already\r\n                    _checkMaxSize();\r\n                    _setupTimer();\r\n                }\r\n            };\r\n            _self.flush = function (isAsync, callBack, sendReason) {\r\n                if (isAsync === void 0) { isAsync = true; }\r\n                if (!_paused) {\r\n                    // Clear the normal schedule timer as we are going to try and flush ASAP\r\n                    _clearScheduledTimer();\r\n                    try {\r\n                        return _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](isAsync, null, sendReason || 1 /* SendRequestReason.ManualFlush */);\r\n                    }\r\n                    catch (e) {\r\n                        _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 22 /* _eInternalMessageId.FlushFailed */, \"flush failed, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                    }\r\n                }\r\n            };\r\n            _self.onunloadFlush = function () {\r\n                if (!_paused) {\r\n                    if (_beaconSupported || _alwaysUseCustomSend) {\r\n                        try {\r\n                            return _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, _doUnloadSend, 2 /* SendRequestReason.Unload */);\r\n                        }\r\n                        catch (e) {\r\n                            _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 20 /* _eInternalMessageId.FailedToSendQueuedTelemetry */, \"failed to flush with beacon sender on page unload, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                        }\r\n                    }\r\n                    else {\r\n                        _self.flush(false);\r\n                    }\r\n                }\r\n            };\r\n            _self.addHeader = function (name, value) {\r\n                _headers[name] = value;\r\n            };\r\n            _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, core, extensions, pluginChain) {\r\n                if (_self.isInitialized()) {\r\n                    _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender is already initialized\");\r\n                }\r\n                _base[_DYN_INITIALIZE /* @min:%2einitialize */](config, core, extensions, pluginChain);\r\n                var identifier = _self.identifier;\r\n                _serializer = new Serializer(core.logger);\r\n                _consecutiveErrors = 0;\r\n                _retryAt = null;\r\n                _lastSend = 0;\r\n                _self[_DYN__SENDER /* @min:%2e_sender */] = null;\r\n                _stamp_specific_redirects = 0;\r\n                var diagLog = _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n                _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"Sender\"), core.evtNamespace && core.evtNamespace());\r\n                _offlineListener = createOfflineListener(_evtNamespace);\r\n                // This function will be re-called whenever any referenced configuration is changed\r\n                _self._addHook(onConfigChange(config, function (details) {\r\n                    var config = details.cfg;\r\n                    if (config.storagePrefix) {\r\n                        utlSetStoragePrefix(config.storagePrefix);\r\n                    }\r\n                    var ctx = createProcessTelemetryContext(null, config, core);\r\n                    // getExtCfg only finds undefined values from core\r\n                    var senderConfig = ctx.getExtCfg(identifier, defaultAppInsightsChannelConfig);\r\n                    var curExtUrl = senderConfig[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */];\r\n                    // if it is not inital change (_endpointUrl has value)\r\n                    // if current sender endpoint url is not changed directly\r\n                    // means ExtCfg is not changed directly\r\n                    // then we need to monitor endpoint url changes from core\r\n                    if (_endpointUrl && curExtUrl === _endpointUrl) {\r\n                        var coreUrl = config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */];\r\n                        // if core endpoint url is changed\r\n                        if (coreUrl && coreUrl !== curExtUrl) {\r\n                            // and endpoint promise changes is handled by this as well\r\n                            senderConfig[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */] = coreUrl;\r\n                        }\r\n                    }\r\n                    if (isPromiseLike(senderConfig[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */])) {\r\n                        // if it is promise, means the endpoint url is from core.endpointurl\r\n                        senderConfig[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */] = config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n                    }\r\n                    objDefine(_self, \"_senderConfig\", {\r\n                        g: function () {\r\n                            return senderConfig;\r\n                        }\r\n                    });\r\n                    // Only update the endpoint if the original config !== the current config\r\n                    // This is so any redirect endpointUrl is not overwritten\r\n                    if (_orgEndpointUrl !== senderConfig[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]) {\r\n                        if (_orgEndpointUrl) {\r\n                            // TODO: add doc to remind users to flush before changing endpoint, otherwise all unsent payload will be sent to new endpoint\r\n                        }\r\n                        _endpointUrl = _orgEndpointUrl = senderConfig[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */];\r\n                    }\r\n                    // or is not string\r\n                    if (core.activeStatus() === ActiveStatus.PENDING) {\r\n                        // waiting for core promises to be resolved\r\n                        // NOTE: if active status is set to pending, stop sending, clear timer here\r\n                        _self.pause();\r\n                    }\r\n                    else if (core.activeStatus() === ActiveStatus.ACTIVE) {\r\n                        // core status changed from pending to other status\r\n                        _self.resume();\r\n                    }\r\n                    if (_customHeaders && _customHeaders !== senderConfig[_DYN_CUSTOM_HEADERS /* @min:%2ecustomHeaders */]) {\r\n                        // Removing any previously defined custom headers as they have changed\r\n                        arrForEach(_customHeaders, function (customHeader) {\r\n                            delete _headers[customHeader.header];\r\n                        });\r\n                    }\r\n                    _maxBatchSizeInBytes = senderConfig[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:%2emaxBatchSizeInBytes */];\r\n                    _beaconSupported = (senderConfig[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:%2eonunloadDisableBeacon */] === false || senderConfig[_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */] === false) && isBeaconsSupported();\r\n                    _beaconOnUnloadSupported = senderConfig[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:%2eonunloadDisableBeacon */] === false && isBeaconsSupported();\r\n                    _beaconNormalSupported = senderConfig[_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */] === false && isBeaconsSupported();\r\n                    _alwaysUseCustomSend = senderConfig[_DYN_ALWAYS_USE_XHR_OVERR4 /* @min:%2ealwaysUseXhrOverride */];\r\n                    _disableXhr = !!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */];\r\n                    _retryCodes = senderConfig.retryCodes;\r\n                    var bufferOverride = senderConfig[_DYN_BUFFER_OVERRIDE /* @min:%2ebufferOverride */];\r\n                    var canUseSessionStorage = !!senderConfig[_DYN_ENABLE_SESSION_STORA5 /* @min:%2eenableSessionStorageBuffer */] &&\r\n                        (!!bufferOverride || utlCanUseSessionStorage());\r\n                    var namePrefix = senderConfig.namePrefix;\r\n                    //Note: emitLineDelimitedJson and eventsLimitInMem is directly accessed via config in senderBuffer\r\n                    //Therefore, if canUseSessionStorage is not changed, we do not need to re initialize a new one\r\n                    var shouldUpdate = (canUseSessionStorage !== _sessionStorageUsed)\r\n                        || (canUseSessionStorage && (_namePrefix !== namePrefix)) // prefixName is only used in session storage\r\n                        || (canUseSessionStorage && (_bufferOverrideUsed !== bufferOverride));\r\n                    if (_self[_DYN__BUFFER /* @min:%2e_buffer */]) {\r\n                        // case1 (Pre and Now enableSessionStorageBuffer settings are same)\r\n                        // if namePrefix changes, transfer current buffer to new buffer\r\n                        // else no action needed\r\n                        //case2 (Pre and Now enableSessionStorageBuffer settings are changed)\r\n                        // transfer current buffer to new buffer\r\n                        if (shouldUpdate) {\r\n                            try {\r\n                                _self._buffer = _self._buffer[_DYN_CREATE_NEW /* @min:%2ecreateNew */](diagLog, senderConfig, canUseSessionStorage);\r\n                            }\r\n                            catch (e) {\r\n                                _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 12 /* _eInternalMessageId.FailedAddingTelemetryToBuffer */, \"failed to transfer telemetry to different buffer storage, telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                            }\r\n                        }\r\n                        _checkMaxSize();\r\n                    }\r\n                    else {\r\n                        _self[_DYN__BUFFER /* @min:%2e_buffer */] = canUseSessionStorage\r\n                            ? new SessionStorageSendBuffer(diagLog, senderConfig) : new ArraySendBuffer(diagLog, senderConfig);\r\n                    }\r\n                    _namePrefix = namePrefix;\r\n                    _sessionStorageUsed = canUseSessionStorage;\r\n                    _bufferOverrideUsed = bufferOverride;\r\n                    _fetchKeepAlive = !senderConfig[_DYN_ONUNLOAD_DISABLE_FET6 /* @min:%2eonunloadDisableFetch */] && isFetchSupported(true);\r\n                    _disableBeaconSplit = !!senderConfig[_DYN_DISABLE_SEND_BEACON_7 /* @min:%2edisableSendBeaconSplit */];\r\n                    _self._sample = new Sample(senderConfig.samplingPercentage, diagLog);\r\n                    _instrumentationKey = senderConfig[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n                    if (!isPromiseLike(_instrumentationKey) && !_validateInstrumentationKey(_instrumentationKey, config)) {\r\n                        _throwInternal(diagLog, 1 /* eLoggingSeverity.CRITICAL */, 100 /* _eInternalMessageId.InvalidInstrumentationKey */, \"Invalid Instrumentation key \" + _instrumentationKey);\r\n                    }\r\n                    _customHeaders = senderConfig[_DYN_CUSTOM_HEADERS /* @min:%2ecustomHeaders */];\r\n                    if (isString(_endpointUrl) && !isInternalApplicationInsightsEndpoint(_endpointUrl) && _customHeaders && _customHeaders[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                        arrForEach(_customHeaders, function (customHeader) {\r\n                            _this.addHeader(customHeader.header, customHeader.value);\r\n                        });\r\n                    }\r\n                    else {\r\n                        _customHeaders = null;\r\n                    }\r\n                    _enableSendPromise = senderConfig[_DYN_ENABLE_SEND_PROMISE /* @min:%2eenableSendPromise */];\r\n                    var sendPostConfig = _getSendPostMgrConfig();\r\n                    // only init it once\r\n                    if (!_sendPostMgr) {\r\n                        _sendPostMgr = new SenderPostManager();\r\n                        _sendPostMgr[_DYN_INITIALIZE /* @min:%2einitialize */](sendPostConfig, diagLog);\r\n                    }\r\n                    else {\r\n                        _sendPostMgr.SetConfig(sendPostConfig);\r\n                    }\r\n                    var customInterface = senderConfig.httpXHROverride;\r\n                    var httpInterface = null;\r\n                    var syncInterface = null;\r\n                    // User requested transport(s) values > Beacon > Fetch > XHR\r\n                    // Beacon would be filtered out if user has set disableBeaconApi to true at _getSenderInterface\r\n                    var theTransports = prependTransports([3 /* TransportType.Beacon */, 1 /* TransportType.Xhr */, 2 /* TransportType.Fetch */], senderConfig.transports);\r\n                    httpInterface = _sendPostMgr && _sendPostMgr[_DYN_GET_SENDER_INST /* @min:%2egetSenderInst */](theTransports, false);\r\n                    var xhrInterface = _sendPostMgr && _sendPostMgr.getFallbackInst();\r\n                    _xhrSend = function (payload, isAsync) {\r\n                        return _doSend(xhrInterface, payload, isAsync);\r\n                    };\r\n                    _fallbackSend = function (payload, isAsync) {\r\n                        return _doSend(xhrInterface, payload, isAsync, false);\r\n                    };\r\n                    httpInterface = _alwaysUseCustomSend ? customInterface : (httpInterface || customInterface || xhrInterface);\r\n                    _self[_DYN__SENDER /* @min:%2e_sender */] = function (payload, isAsync) {\r\n                        return _doSend(httpInterface, payload, isAsync);\r\n                    };\r\n                    if (_fetchKeepAlive) {\r\n                        // Try and use the fetch with keepalive\r\n                        _syncUnloadSender = _fetchKeepAliveSender;\r\n                    }\r\n                    var syncTransports = prependTransports([3 /* TransportType.Beacon */, 1 /* TransportType.Xhr */], senderConfig[_DYN_UNLOAD_TRANSPORTS /* @min:%2eunloadTransports */]);\r\n                    if (!_fetchKeepAlive) {\r\n                        // remove fetch from theTransports\r\n                        syncTransports = syncTransports.filter(function (transport) { return transport !== 2 /* TransportType.Fetch */; });\r\n                    }\r\n                    syncInterface = _sendPostMgr && _sendPostMgr[_DYN_GET_SENDER_INST /* @min:%2egetSenderInst */](syncTransports, true);\r\n                    syncInterface = _alwaysUseCustomSend ? customInterface : (syncInterface || customInterface);\r\n                    if ((_alwaysUseCustomSend || senderConfig[_DYN_UNLOAD_TRANSPORTS /* @min:%2eunloadTransports */] || !_syncUnloadSender) && syncInterface) {\r\n                        _syncUnloadSender = function (payload, isAsync) {\r\n                            return _doSend(syncInterface, payload, isAsync);\r\n                        };\r\n                    }\r\n                    if (!_syncUnloadSender) {\r\n                        _syncUnloadSender = _xhrSend;\r\n                    }\r\n                    _disableTelemetry = senderConfig.disableTelemetry;\r\n                    _convertUndefined = senderConfig[_DYN_CONVERT_UNDEFINED /* @min:%2econvertUndefined */] || UNDEFINED_VALUE;\r\n                    _isRetryDisabled = senderConfig.isRetryDisabled;\r\n                    _maxBatchInterval = senderConfig[_DYN_MAX_BATCH_INTERVAL /* @min:%2emaxBatchInterval */];\r\n                }));\r\n            };\r\n            _self.processTelemetry = function (telemetryItem, itemCtx) {\r\n                var _a;\r\n                itemCtx = _self._getTelCtx(itemCtx);\r\n                var diagLogger = itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n                try {\r\n                    var isValidate = _validate(telemetryItem, diagLogger);\r\n                    if (!isValidate) {\r\n                        return;\r\n                    }\r\n                    var aiEnvelope = _getEnvelope(telemetryItem, diagLogger);\r\n                    if (!aiEnvelope) {\r\n                        return;\r\n                    }\r\n                    // check if the incoming payload is too large, truncate if necessary\r\n                    var payload = _serializer[_DYN_SERIALIZE /* @min:%2eserialize */](aiEnvelope);\r\n                    // flush if we would exceed the max-size limit by adding this item\r\n                    var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n                    _checkMaxSize(payload);\r\n                    var payloadItem = (_a = {},\r\n                        _a[_DYN_ITEM /* @min:item */] = payload,\r\n                        _a.cnt = 0 // inital cnt will always be 0\r\n                    ,\r\n                        _a);\r\n                    // enqueue the payload\r\n                    buffer[_DYN_ENQUEUE /* @min:%2eenqueue */](payloadItem);\r\n                    // ensure an invocation timeout is set\r\n                    _setupTimer();\r\n                }\r\n                catch (e) {\r\n                    _throwInternal(diagLogger, 2 /* eLoggingSeverity.WARNING */, 12 /* _eInternalMessageId.FailedAddingTelemetryToBuffer */, \"Failed adding telemetry to the sender's buffer, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                }\r\n                // hand off the telemetry item to the next plugin\r\n                _self.processNext(telemetryItem, itemCtx);\r\n            };\r\n            _self.isCompletelyIdle = function () {\r\n                return !_paused && _syncFetchPayload === 0 && _self._buffer[_DYN_COUNT /* @min:%2ecount */]() === 0;\r\n            };\r\n            _self.getOfflineListener = function () {\r\n                return _offlineListener;\r\n            };\r\n            /**\r\n             * xhr state changes\r\n             */\r\n            _self._xhrReadyStateChange = function (xhr, payload, countOfItemsInPayload) {\r\n                // since version 3.2.0, this function is no-op\r\n                if (_isStringArr(payload)) {\r\n                    return;\r\n                }\r\n                return _xhrReadyStateChange(xhr, payload, countOfItemsInPayload);\r\n            };\r\n            /**\r\n             * Immediately send buffered data\r\n             * @param async - {boolean} - Indicates if the events should be sent asynchronously\r\n             * @param forcedSender - {SenderFunction} - Indicates the forcedSender, undefined if not passed\r\n             */\r\n            _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */] = function (async, forcedSender, sendReason) {\r\n                if (async === void 0) { async = true; }\r\n                var result;\r\n                if (!_paused) {\r\n                    try {\r\n                        var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n                        // Send data only if disableTelemetry is false\r\n                        if (!_disableTelemetry) {\r\n                            if (buffer[_DYN_COUNT /* @min:%2ecount */]() > 0) {\r\n                                var payload = buffer.getItems();\r\n                                _notifySendRequest(sendReason || 0 /* SendRequestReason.Undefined */, async);\r\n                                // invoke send\r\n                                if (forcedSender) {\r\n                                    result = forcedSender.call(_self, payload, async);\r\n                                }\r\n                                else {\r\n                                    result = _self[_DYN__SENDER /* @min:%2e_sender */](payload, async);\r\n                                }\r\n                            }\r\n                            // update lastSend time to enable throttling\r\n                            _lastSend = +new Date;\r\n                        }\r\n                        else {\r\n                            buffer[_DYN_CLEAR /* @min:%2eclear */]();\r\n                        }\r\n                        _clearScheduledTimer();\r\n                    }\r\n                    catch (e) {\r\n                        /* Ignore this error for IE under v10 */\r\n                        var ieVer = getIEVersion();\r\n                        if (!ieVer || ieVer > 9) {\r\n                            _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Telemetry transmission failed, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                        }\r\n                    }\r\n                }\r\n                return result;\r\n            };\r\n            _self.getOfflineSupport = function () {\r\n                var _a;\r\n                return _a = {\r\n                        getUrl: function () {\r\n                            return _endpointUrl;\r\n                        },\r\n                        createPayload: _createPayload\r\n                    },\r\n                    _a[_DYN_SERIALIZE /* @min:serialize */] = _serialize,\r\n                    _a.batch = _batch,\r\n                    _a.shouldProcess = function (evt) {\r\n                        return !!_validate(evt);\r\n                    },\r\n                    _a;\r\n            };\r\n            _self._doTeardown = function (unloadCtx, unloadState) {\r\n                _self.onunloadFlush();\r\n                runTargetUnload(_offlineListener, false);\r\n                _initDefaults();\r\n            };\r\n            /**\r\n             * error handler\r\n             */\r\n            _self[_DYN__ON_ERROR /* @min:%2e_onError */] = function (payload, message, event) {\r\n                // since version 3.1.3, string[] is no-op\r\n                if (_isStringArr(payload)) {\r\n                    return;\r\n                }\r\n                return _onError(payload, message, event);\r\n            };\r\n            /**\r\n             * partial success handler\r\n             */\r\n            _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */] = function (payload, results) {\r\n                // since version 3.1.3, string[] is no-op\r\n                if (_isStringArr(payload)) {\r\n                    return;\r\n                }\r\n                return _onPartialSuccess(payload, results);\r\n            };\r\n            /**\r\n             * success handler\r\n             */\r\n            _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */] = function (payload, countOfItemsInPayload) {\r\n                // since version 3.1.3, string[] is no-op\r\n                if (_isStringArr(payload)) {\r\n                    return;\r\n                }\r\n                return _onSuccess(payload, countOfItemsInPayload);\r\n                //_self._buffer && _self._buffer.clearSent(payload);\r\n            };\r\n            /**\r\n             * xdr state changes\r\n             */\r\n            _self._xdrOnLoad = function (xdr, payload) {\r\n                // since version 3.1.3, string[] is no-op\r\n                if (_isStringArr(payload)) {\r\n                    return;\r\n                }\r\n                return _xdrOnLoad(xdr, payload);\r\n            };\r\n            function _xdrOnLoad(xdr, payload) {\r\n                var responseText = _getResponseText(xdr);\r\n                if (xdr && (responseText + \"\" === \"200\" || responseText === \"\")) {\r\n                    _consecutiveErrors = 0;\r\n                    _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, 0);\r\n                }\r\n                else {\r\n                    var results = parseResponse(responseText);\r\n                    if (results && results[_DYN_ITEMS_RECEIVED /* @min:%2eitemsReceived */] && results[_DYN_ITEMS_RECEIVED /* @min:%2eitemsReceived */] > results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]\r\n                        && !_isRetryDisabled) {\r\n                        _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, results);\r\n                    }\r\n                    else {\r\n                        _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, formatErrorMessageXdr(xdr));\r\n                    }\r\n                }\r\n            }\r\n            function _getSendPostMgrConfig() {\r\n                var _a;\r\n                try {\r\n                    var onCompleteFuncs = {\r\n                        xdrOnComplete: function (xdr, oncomplete, payload) {\r\n                            var data = _getPayloadArr(payload);\r\n                            if (!data) {\r\n                                return;\r\n                            }\r\n                            return _xdrOnLoad(xdr, data);\r\n                        },\r\n                        fetchOnComplete: function (response, onComplete, resValue, payload) {\r\n                            var data = _getPayloadArr(payload);\r\n                            if (!data) {\r\n                                return;\r\n                            }\r\n                            return _checkResponsStatus(response.status, data, response.url, data[_DYN_LENGTH /* @min:%2elength */], response.statusText, resValue || \"\");\r\n                        },\r\n                        xhrOnComplete: function (request, oncomplete, payload) {\r\n                            var data = _getPayloadArr(payload);\r\n                            if (!data) {\r\n                                return;\r\n                            }\r\n                            return _xhrReadyStateChange(request, data, data[_DYN_LENGTH /* @min:%2elength */]);\r\n                        },\r\n                        beaconOnRetry: function (data, onComplete, canSend) {\r\n                            return _onBeaconRetry(data, onComplete, canSend);\r\n                        }\r\n                    };\r\n                    var config = (_a = {},\r\n                        _a[_DYN_ENABLE_SEND_PROMISE /* @min:enableSendPromise */] = _enableSendPromise,\r\n                        _a.isOneDs = false,\r\n                        _a.disableCredentials = false,\r\n                        _a[_DYN_DISABLE_XHR /* @min:disableXhr */] = _disableXhr,\r\n                        _a.disableBeacon = !_beaconNormalSupported,\r\n                        _a.disableBeaconSync = !_beaconOnUnloadSupported,\r\n                        _a.senderOnCompleteCallBack = onCompleteFuncs,\r\n                        _a);\r\n                    return config;\r\n                }\r\n                catch (e) {\r\n                    // eslint-disable-next-line no-empty\r\n                }\r\n                return null;\r\n            }\r\n            /**\r\n             * xhr state changes\r\n             */\r\n            function _xhrReadyStateChange(xhr, payload, countOfItemsInPayload) {\r\n                if (xhr.readyState === 4) {\r\n                    _checkResponsStatus(xhr.status, payload, xhr.responseURL, countOfItemsInPayload, formatErrorMessageXhr(xhr), _getResponseText(xhr) || xhr.response);\r\n                }\r\n            }\r\n            /**\r\n             * error handler\r\n             */\r\n            function _onError(payload, message, event) {\r\n                _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 26 /* _eInternalMessageId.OnError */, \"Failed to send telemetry.\", { message: message });\r\n                _self._buffer && _self._buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n            }\r\n            /**\r\n             * partial success handler\r\n             */\r\n            function _onPartialSuccess(payload, results) {\r\n                var failed = [];\r\n                var retry = [];\r\n                // Iterate through the reversed array of errors so that splicing doesn't have invalid indexes after the first item.\r\n                var errors = results.errors.reverse();\r\n                for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {\r\n                    var error = errors_1[_i];\r\n                    var extracted = payload.splice(error.index, 1)[0];\r\n                    if (_isRetriable(error.statusCode)) {\r\n                        retry[_DYN_PUSH /* @min:%2epush */](extracted);\r\n                    }\r\n                    else {\r\n                        // All other errors, including: 402 (Monthly quota exceeded) and 439 (Too many requests and refresh cache).\r\n                        failed[_DYN_PUSH /* @min:%2epush */](extracted);\r\n                    }\r\n                }\r\n                if (payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]);\r\n                }\r\n                if (failed[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    _self[_DYN__ON_ERROR /* @min:%2e_onError */](failed, formatErrorMessageXhr(null, [\"partial success\", results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */], \"of\", results.itemsReceived].join(\" \")));\r\n                }\r\n                if (retry[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    _resendPayload(retry);\r\n                    _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Partial success. \" +\r\n                        \"Delivered: \" + payload[_DYN_LENGTH /* @min:%2elength */] + \", Failed: \" + failed[_DYN_LENGTH /* @min:%2elength */] +\r\n                        \". Will retry to send \" + retry[_DYN_LENGTH /* @min:%2elength */] + \" our of \" + results[_DYN_ITEMS_RECEIVED /* @min:%2eitemsReceived */] + \" items\");\r\n                }\r\n            }\r\n            /**\r\n             * success handler\r\n             */\r\n            function _onSuccess(payload, countOfItemsInPayload) {\r\n                _self._buffer && _self._buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n            }\r\n            function _getPayloadArr(payload) {\r\n                try {\r\n                    if (payload) {\r\n                        var internalPayload = payload;\r\n                        var arr = internalPayload[_DYN_ORI_PAYLOAD /* @min:%2eoriPayload */];\r\n                        if (arr && arr[_DYN_LENGTH /* @min:%2elength */]) {\r\n                            return arr;\r\n                        }\r\n                        return null;\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    // eslint-disable-next-line no-empty\r\n                }\r\n                return null;\r\n            }\r\n            function _validate(telemetryItem, diagLogger) {\r\n                if (_disableTelemetry) {\r\n                    // Do not send/save data\r\n                    return false;\r\n                }\r\n                // validate input\r\n                if (!telemetryItem) {\r\n                    diagLogger && _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 7 /* _eInternalMessageId.CannotSendEmptyTelemetry */, \"Cannot send empty telemetry\");\r\n                    return false;\r\n                }\r\n                // validate event\r\n                if (telemetryItem.baseData && !telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */]) {\r\n                    diagLogger && _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 70 /* _eInternalMessageId.InvalidEvent */, \"Cannot send telemetry without baseData and baseType\");\r\n                    return false;\r\n                }\r\n                if (!telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */]) {\r\n                    // Default\r\n                    telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */] = \"EventData\";\r\n                }\r\n                // ensure a sender was constructed\r\n                if (!_self[_DYN__SENDER /* @min:%2e_sender */]) {\r\n                    diagLogger && _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender was not initialized\");\r\n                    return false;\r\n                }\r\n                // check if this item should be sampled in, else add sampleRate tag\r\n                if (!_isSampledIn(telemetryItem)) {\r\n                    // Item is sampled out, do not send it\r\n                    diagLogger && _throwInternal(diagLogger, 2 /* eLoggingSeverity.WARNING */, 33 /* _eInternalMessageId.TelemetrySampledAndNotSent */, \"Telemetry item was sampled out and not sent\", { SampleRate: _self._sample[_DYN_SAMPLE_RATE /* @min:%2esampleRate */] });\r\n                    return false;\r\n                }\r\n                else {\r\n                    telemetryItem[SampleRate] = _self._sample[_DYN_SAMPLE_RATE /* @min:%2esampleRate */];\r\n                }\r\n                return true;\r\n            }\r\n            function _getEnvelope(telemetryItem, diagLogger) {\r\n                // construct an envelope that Application Insights endpoint can understand\r\n                // if ikey of telemetry is provided and not empty, envelope will use this iKey instead of senderConfig iKey\r\n                var defaultEnvelopeIkey = telemetryItem.iKey || _instrumentationKey;\r\n                var aiEnvelope = Sender.constructEnvelope(telemetryItem, defaultEnvelopeIkey, diagLogger, _convertUndefined);\r\n                if (!aiEnvelope) {\r\n                    _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 47 /* _eInternalMessageId.CreateEnvelopeError */, \"Unable to create an AppInsights envelope\");\r\n                    return;\r\n                }\r\n                var doNotSendItem = false;\r\n                // this is for running in legacy mode, where customer may already have a custom initializer present\r\n                if (telemetryItem[_DYN_TAGS /* @min:%2etags */] && telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy]) {\r\n                    arrForEach(telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy], function (callBack) {\r\n                        try {\r\n                            if (callBack && callBack(aiEnvelope) === false) {\r\n                                doNotSendItem = true;\r\n                                _warnToConsole(diagLogger, \"Telemetry processor check returns false\");\r\n                            }\r\n                        }\r\n                        catch (e) {\r\n                            // log error but dont stop executing rest of the telemetry initializers\r\n                            // doNotSendItem = true;\r\n                            _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n                        }\r\n                    });\r\n                    delete telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy];\r\n                }\r\n                if (doNotSendItem) {\r\n                    return; // do not send, no need to execute next plugin\r\n                }\r\n                return aiEnvelope;\r\n            }\r\n            function _serialize(item) {\r\n                var rlt = EMPTY_STR;\r\n                var diagLogger = _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n                try {\r\n                    var valid = _validate(item, diagLogger);\r\n                    var envelope = null;\r\n                    if (valid) {\r\n                        envelope = _getEnvelope(item, diagLogger);\r\n                    }\r\n                    if (envelope) {\r\n                        rlt = _serializer[_DYN_SERIALIZE /* @min:%2eserialize */](envelope);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    // eslint-disable-next-line no-empty\r\n                }\r\n                return rlt;\r\n            }\r\n            function _batch(arr) {\r\n                var rlt = EMPTY_STR;\r\n                if (arr && arr[_DYN_LENGTH /* @min:%2elength */]) {\r\n                    rlt = \"[\" + arr.join(\",\") + \"]\";\r\n                }\r\n                return rlt;\r\n            }\r\n            function _createPayload(data) {\r\n                var _a;\r\n                var headers = _getHeaders();\r\n                return _a = {\r\n                        urlString: _endpointUrl\r\n                    },\r\n                    _a[_DYN_DATA /* @min:data */] = data,\r\n                    _a.headers = headers,\r\n                    _a;\r\n            }\r\n            function _isSampledIn(envelope) {\r\n                return _self._sample.isSampledIn(envelope);\r\n            }\r\n            function _getOnComplete(payload, status, headers, response) {\r\n                // ***********************************************************************************************\r\n                //TODO: handle other status codes\r\n                if (status === 200 && payload) {\r\n                    _self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);\r\n                }\r\n                else {\r\n                    response && _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, response);\r\n                }\r\n            }\r\n            function _doSend(sendInterface, payload, isAsync, markAsSent) {\r\n                if (markAsSent === void 0) { markAsSent = true; }\r\n                var onComplete = function (status, headers, response) {\r\n                    return _getOnComplete(payload, status, headers, response);\r\n                };\r\n                var payloadData = _getPayload(payload);\r\n                var sendPostFunc = sendInterface && sendInterface.sendPOST;\r\n                if (sendPostFunc && payloadData) {\r\n                    // ***********************************************************************************************\r\n                    // mark payload as sent at the beginning of calling each send function\r\n                    if (markAsSent) {\r\n                        _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n                    }\r\n                    return sendPostFunc(payloadData, onComplete, !isAsync);\r\n                }\r\n                return null;\r\n            }\r\n            function _getPayload(payload) {\r\n                var _a;\r\n                if (isArray(payload) && payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    var batch = _self[_DYN__BUFFER /* @min:%2e_buffer */].batchPayloads(payload);\r\n                    var headers = _getHeaders();\r\n                    var payloadData = (_a = {},\r\n                        _a[_DYN_DATA /* @min:data */] = batch,\r\n                        _a.urlString = _endpointUrl,\r\n                        _a.headers = headers,\r\n                        _a.disableXhrSync = _disableXhr,\r\n                        _a.disableFetchKeepAlive = !_fetchKeepAlive,\r\n                        _a[_DYN_ORI_PAYLOAD /* @min:oriPayload */] = payload,\r\n                        _a);\r\n                    return payloadData;\r\n                }\r\n                return null;\r\n            }\r\n            function _getHeaders() {\r\n                try {\r\n                    var headers = _headers || {};\r\n                    if (isInternalApplicationInsightsEndpoint(_endpointUrl)) {\r\n                        headers[RequestHeaders[6 /* eRequestHeaders.sdkContextHeader */]] = RequestHeaders[7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */];\r\n                    }\r\n                    return headers;\r\n                }\r\n                catch (e) {\r\n                    // eslint-disable-next-line no-empty\r\n                }\r\n                return null;\r\n            }\r\n            function _checkMaxSize(incomingPayload) {\r\n                var incomingSize = incomingPayload ? incomingPayload[_DYN_LENGTH /* @min:%2elength */] : 0;\r\n                if ((_self[_DYN__BUFFER /* @min:%2e_buffer */].size() + incomingSize) > _maxBatchSizeInBytes) {\r\n                    if (!_offlineListener || _offlineListener.isOnline()) { // only trigger send when currently online\r\n                        _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 10 /* SendRequestReason.MaxBatchSize */);\r\n                    }\r\n                    return true;\r\n                }\r\n                return false;\r\n            }\r\n            function _checkResponsStatus(status, payload, responseUrl, countOfItemsInPayload, errorMessage, res) {\r\n                var response = null;\r\n                if (!_self._appId) {\r\n                    response = parseResponse(res);\r\n                    if (response && response.appId) {\r\n                        _self._appId = response.appId;\r\n                    }\r\n                }\r\n                if ((status < 200 || status >= 300) && status !== 0) {\r\n                    // Update End Point url if permanent redirect or moved permanently\r\n                    // Updates the end point url before retry\r\n                    if (status === 301 || status === 307 || status === 308) {\r\n                        if (!_checkAndUpdateEndPointUrl(responseUrl)) {\r\n                            _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n                            return;\r\n                        }\r\n                    }\r\n                    if (_offlineListener && !_offlineListener.isOnline()) { // offline\r\n                        // Note: Don't check for status == 0, since adblock gives this code\r\n                        if (!_isRetryDisabled) {\r\n                            var offlineBackOffMultiplier = 10; // arbritrary number\r\n                            _resendPayload(payload, offlineBackOffMultiplier);\r\n                            _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". Offline - Response Code: \".concat(status, \". Offline status: \").concat(!_offlineListener.isOnline(), \". Will retry to send \").concat(payload.length, \" items.\"));\r\n                        }\r\n                        return;\r\n                    }\r\n                    if (!_isRetryDisabled && _isRetriable(status)) {\r\n                        _resendPayload(payload);\r\n                        _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" +\r\n                            \"Response code \" + status + \". Will retry to send \" + payload[_DYN_LENGTH /* @min:%2elength */] + \" items.\");\r\n                    }\r\n                    else {\r\n                        _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n                    }\r\n                }\r\n                else {\r\n                    // check if the xhr's responseURL or fetch's response.url is same as endpoint url\r\n                    // TODO after 10 redirects force send telemetry with 'redirect=false' as query parameter.\r\n                    _checkAndUpdateEndPointUrl(responseUrl);\r\n                    if (status === 206) {\r\n                        if (!response) {\r\n                            response = parseResponse(res);\r\n                        }\r\n                        if (response && !_isRetryDisabled) {\r\n                            _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, response);\r\n                        }\r\n                        else {\r\n                            _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n                        }\r\n                    }\r\n                    else {\r\n                        _consecutiveErrors = 0;\r\n                        _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, countOfItemsInPayload);\r\n                    }\r\n                }\r\n            }\r\n            function _checkAndUpdateEndPointUrl(responseUrl) {\r\n                // Maximum stamp specific redirects allowed(uncomment this when breeze is ready with not allowing redirects feature)\r\n                if (_stamp_specific_redirects >= 10) {\r\n                    //  _self._senderConfig.endpointUrl = () => Sender._getDefaultAppInsightsChannelConfig().endpointUrl()+\"/?redirect=false\";\r\n                    //  _stamp_specific_redirects = 0;\r\n                    return false;\r\n                }\r\n                if (!isNullOrUndefined(responseUrl) && responseUrl !== \"\") {\r\n                    if (responseUrl !== _endpointUrl) {\r\n                        _endpointUrl = responseUrl;\r\n                        ++_stamp_specific_redirects;\r\n                        return true;\r\n                    }\r\n                }\r\n                return false;\r\n            }\r\n            function _doUnloadSend(payload, isAsync) {\r\n                if (_syncUnloadSender) {\r\n                    // We are unloading so always call the sender with sync set to false\r\n                    _syncUnloadSender(payload, false);\r\n                }\r\n                else {\r\n                    // Fallback to the previous beacon Sender (which causes a CORB warning on chrome now)\r\n                    var beaconInst = _sendPostMgr && _sendPostMgr[_DYN_GET_SENDER_INST /* @min:%2egetSenderInst */]([3 /* TransportType.Beacon */], true);\r\n                    return _doSend(beaconInst, payload, isAsync);\r\n                }\r\n            }\r\n            function _onBeaconRetry(payload, onComplete, canSend) {\r\n                var internalPayload = payload;\r\n                var data = internalPayload && internalPayload[_DYN_ORI_PAYLOAD /* @min:%2eoriPayload */];\r\n                if (!_disableBeaconSplit) {\r\n                    // Failed to send entire payload so try and split data and try to send as much events as possible\r\n                    var droppedPayload = [];\r\n                    for (var lp = 0; lp < data[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n                        var thePayload = data[lp];\r\n                        var arr = [thePayload];\r\n                        var item = _getPayload(arr);\r\n                        if (!canSend(item, onComplete)) {\r\n                            // Can't send anymore, so split the batch and drop the rest\r\n                            droppedPayload[_DYN_PUSH /* @min:%2epush */](thePayload);\r\n                        }\r\n                        else {\r\n                            _self._onSuccess(arr, arr[_DYN_LENGTH /* @min:%2elength */]);\r\n                        }\r\n                    }\r\n                    if (droppedPayload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                        _fallbackSend && _fallbackSend(droppedPayload, true);\r\n                        _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with normal sender.\");\r\n                    }\r\n                }\r\n                else {\r\n                    _fallbackSend && _fallbackSend(data, true);\r\n                    _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with normal sender.\");\r\n                }\r\n            }\r\n            function _isStringArr(arr) {\r\n                try {\r\n                    if (arr && arr[_DYN_LENGTH /* @min:%2elength */]) {\r\n                        return (isString(arr[0]));\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    //TODO: log, sender use IInternalStorageItem instead of string since 3.1.3\r\n                }\r\n                return null;\r\n            }\r\n            function _fetchKeepAliveSender(payload, isAsync) {\r\n                var transport = null;\r\n                if (isArray(payload)) {\r\n                    var payloadSize = payload[_DYN_LENGTH /* @min:%2elength */];\r\n                    for (var lp = 0; lp < payload[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n                        payloadSize += payload[lp].item[_DYN_LENGTH /* @min:%2elength */];\r\n                    }\r\n                    var syncFetchPayload = _sendPostMgr.getSyncFetchPayload();\r\n                    if ((syncFetchPayload + payloadSize) <= FetchSyncRequestSizeLimitBytes) {\r\n                        transport = 2 /* TransportType.Fetch */;\r\n                    }\r\n                    else if (isBeaconsSupported()) {\r\n                        // Fallback to beacon sender as we at least get told which events can't be scheduled\r\n                        transport = 3 /* TransportType.Beacon */;\r\n                    }\r\n                    else {\r\n                        // Payload is going to be too big so just try and send via XHR\r\n                        transport = 1 /* TransportType.Xhr */;\r\n                        _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with xhrSender.\");\r\n                    }\r\n                    var inst = _sendPostMgr && _sendPostMgr[_DYN_GET_SENDER_INST /* @min:%2egetSenderInst */]([transport], true);\r\n                    return _doSend(inst, payload, isAsync);\r\n                }\r\n                return null;\r\n            }\r\n            /**\r\n             * Resend payload. Adds payload back to the send buffer and setup a send timer (with exponential backoff).\r\n             * @param payload\r\n             */\r\n            function _resendPayload(payload, linearFactor) {\r\n                if (linearFactor === void 0) { linearFactor = 1; }\r\n                if (!payload || payload[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n                    return;\r\n                }\r\n                var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n                buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n                _consecutiveErrors++;\r\n                for (var _i = 0, payload_1 = payload; _i < payload_1.length; _i++) {\r\n                    var item = payload_1[_i];\r\n                    item.cnt = item.cnt || 0; // to make sure we have cnt for each payload\r\n                    item.cnt++; // when resend, increase cnt\r\n                    buffer[_DYN_ENQUEUE /* @min:%2eenqueue */](item);\r\n                }\r\n                // setup timer\r\n                _setRetryTime(linearFactor);\r\n                _setupTimer();\r\n            }\r\n            /**\r\n             * Calculates the time to wait before retrying in case of an error based on\r\n             * http://en.wikipedia.org/wiki/Exponential_backoff\r\n             */\r\n            function _setRetryTime(linearFactor) {\r\n                var SlotDelayInSeconds = 10;\r\n                var delayInSeconds;\r\n                if (_consecutiveErrors <= 1) {\r\n                    delayInSeconds = SlotDelayInSeconds;\r\n                }\r\n                else {\r\n                    var backOffSlot = (Math.pow(2, _consecutiveErrors) - 1) / 2;\r\n                    // tslint:disable-next-line:insecure-random\r\n                    var backOffDelay = Math.floor(Math.random() * backOffSlot * SlotDelayInSeconds) + 1;\r\n                    backOffDelay = linearFactor * backOffDelay;\r\n                    delayInSeconds = Math.max(Math.min(backOffDelay, 3600), SlotDelayInSeconds);\r\n                }\r\n                // TODO: Log the backoff time like the C# version does.\r\n                var retryAfterTimeSpan = dateNow() + (delayInSeconds * 1000);\r\n                // TODO: Log the retry at time like the C# version does.\r\n                _retryAt = retryAfterTimeSpan;\r\n            }\r\n            /**\r\n             * Sets up the timer which triggers actually sending the data.\r\n             */\r\n            function _setupTimer() {\r\n                if (!_timeoutHandle && !_paused) {\r\n                    var retryInterval = _retryAt ? Math.max(0, _retryAt - dateNow()) : 0;\r\n                    var timerValue = Math.max(_maxBatchInterval, retryInterval);\r\n                    _timeoutHandle = scheduleTimeout(function () {\r\n                        _timeoutHandle = null;\r\n                        _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 1 /* SendRequestReason.NormalSchedule */);\r\n                    }, timerValue);\r\n                }\r\n            }\r\n            function _clearScheduledTimer() {\r\n                _timeoutHandle && _timeoutHandle.cancel();\r\n                _timeoutHandle = null;\r\n                _retryAt = null;\r\n            }\r\n            /**\r\n             * Checks if the SDK should resend the payload after receiving this status code from the backend.\r\n             * @param statusCode\r\n             */\r\n            function _isRetriable(statusCode) {\r\n                // retryCodes = [] means should not retry\r\n                if (!isNullOrUndefined(_retryCodes)) {\r\n                    return _retryCodes[_DYN_LENGTH /* @min:%2elength */] && _retryCodes.indexOf(statusCode) > -1;\r\n                }\r\n                return statusCode === 401 // Unauthorized\r\n                    // Removing as private links can return a 403 which causes excessive retries and session storage usage\r\n                    // || statusCode === 403 // Forbidden\r\n                    || statusCode === 408 // Timeout\r\n                    || statusCode === 429 // Too many requests.\r\n                    || statusCode === 500 // Internal server error.\r\n                    || statusCode === 502 // Bad Gateway.\r\n                    || statusCode === 503 // Service unavailable.\r\n                    || statusCode === 504; // Gateway timeout.\r\n            }\r\n            // Using function lookups for backward compatibility as the getNotifyMgr() did not exist until after v2.5.6\r\n            function _getNotifyMgr() {\r\n                var func = \"getNotifyMgr\";\r\n                if (_self.core[func]) {\r\n                    return _self.core[func]();\r\n                }\r\n                // using _self.core['_notificationManager'] for backward compatibility\r\n                return _self.core[\"_notificationManager\"];\r\n            }\r\n            function _notifySendRequest(sendRequest, isAsync) {\r\n                var manager = _getNotifyMgr();\r\n                if (manager && manager[_DYN_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */]) {\r\n                    try {\r\n                        manager[_DYN_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */](sendRequest, isAsync);\r\n                    }\r\n                    catch (e) {\r\n                        _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 74 /* _eInternalMessageId.NotificationException */, \"send request notification failed: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                    }\r\n                }\r\n            }\r\n            /**\r\n             * Validate UUID Format\r\n             * Specs taken from https://tools.ietf.org/html/rfc4122 and breeze repo\r\n             */\r\n            function _validateInstrumentationKey(instrumentationKey, config) {\r\n                var disableValidation = config.disableInstrumentationKeyValidation;\r\n                var disableIKeyValidationFlag = isNullOrUndefined(disableValidation) ? false : disableValidation;\r\n                if (disableIKeyValidationFlag) {\r\n                    return true;\r\n                }\r\n                var UUID_Regex = \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\";\r\n                var regexp = new RegExp(UUID_Regex);\r\n                return regexp.test(instrumentationKey);\r\n            }\r\n            function _initDefaults() {\r\n                _self[_DYN__SENDER /* @min:%2e_sender */] = null;\r\n                _self[_DYN__BUFFER /* @min:%2e_buffer */] = null;\r\n                _self._appId = null;\r\n                _self._sample = null;\r\n                _headers = {};\r\n                _offlineListener = null;\r\n                _consecutiveErrors = 0;\r\n                _retryAt = null;\r\n                _lastSend = null;\r\n                _paused = false;\r\n                _timeoutHandle = null;\r\n                _serializer = null;\r\n                _stamp_specific_redirects = 0;\r\n                _syncFetchPayload = 0;\r\n                _syncUnloadSender = null;\r\n                _evtNamespace = null;\r\n                _endpointUrl = null;\r\n                _orgEndpointUrl = null;\r\n                _maxBatchSizeInBytes = 0;\r\n                _beaconSupported = false;\r\n                _customHeaders = null;\r\n                _disableTelemetry = false;\r\n                _instrumentationKey = null;\r\n                _convertUndefined = UNDEFINED_VALUE;\r\n                _isRetryDisabled = false;\r\n                _sessionStorageUsed = null;\r\n                _namePrefix = UNDEFINED_VALUE;\r\n                _disableXhr = false;\r\n                _fetchKeepAlive = false;\r\n                _disableBeaconSplit = false;\r\n                _xhrSend = null;\r\n                _fallbackSend = null;\r\n                _sendPostMgr = null;\r\n                objDefine(_self, \"_senderConfig\", {\r\n                    g: function () {\r\n                        return objExtend({}, defaultAppInsightsChannelConfig);\r\n                    }\r\n                });\r\n            }\r\n        });\r\n        return _this;\r\n    }\r\n    Sender.constructEnvelope = function (orig, iKey, logger, convertUndefined) {\r\n        var envelope;\r\n        if (iKey !== orig.iKey && !isNullOrUndefined(iKey)) {\r\n            envelope = __assign(__assign({}, orig), { iKey: iKey });\r\n        }\r\n        else {\r\n            envelope = orig;\r\n        }\r\n        var creator = EnvelopeTypeCreator[envelope.baseType] || EventEnvelopeCreator;\r\n        return creator(logger, envelope, convertUndefined);\r\n    };\r\n// Removed Stub for Sender.prototype.pause.\r\n// Removed Stub for Sender.prototype.resume.\r\n// Removed Stub for Sender.prototype.flush.\r\n// Removed Stub for Sender.prototype.onunloadFlush.\r\n// Removed Stub for Sender.prototype.initialize.\r\n// Removed Stub for Sender.prototype.processTelemetry.\r\n// Removed Stub for Sender.prototype._xhrReadyStateChange.\r\n// Removed Stub for Sender.prototype.triggerSend.\r\n// Removed Stub for Sender.prototype._onError.\r\n// Removed Stub for Sender.prototype._onPartialSuccess.\r\n// Removed Stub for Sender.prototype._onSuccess.\r\n// Removed Stub for Sender.prototype._xdrOnLoad.\r\n// Removed Stub for Sender.prototype.addHeader.\r\n// Removed Stub for Sender.prototype.isCompletelyIdle.\r\n// Removed Stub for Sender.prototype.getOfflineSupport.\r\n// Removed Stub for Sender.prototype.getOfflineListener.\r\n    return Sender;\r\n}(BaseTelemetryPlugin));\r\nexport { Sender };\r\n//# sourceMappingURL=Sender.js.map","/*\n * Application Insights JavaScript SDK - Channel, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _throwInternal, getJSON, isArray, isFunction, isObject, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_PUSH, _DYN_SERIALIZE, _DYN_STRINGIFY, _DYN_TO_STRING } from \"./__DynamicConstants\";\r\nvar Serializer = /** @class */ (function () {\r\n    function Serializer(logger) {\r\n        dynamicProto(Serializer, this, function (_self) {\r\n            /**\r\n             * Serializes the current object to a JSON string.\r\n             */\r\n            _self[_DYN_SERIALIZE /* @min:%2eserialize */] = function (input) {\r\n                var output = _serializeObject(input, \"root\");\r\n                try {\r\n                    return getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](output);\r\n                }\r\n                catch (e) {\r\n                    // if serialization fails return an empty string\r\n                    _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e[_DYN_TO_STRING /* @min:%2etoString */])) ? e[_DYN_TO_STRING /* @min:%2etoString */]() : \"Error serializing object\", null, true);\r\n                }\r\n            };\r\n            function _serializeObject(source, name) {\r\n                var circularReferenceCheck = \"__aiCircularRefCheck\";\r\n                var output = {};\r\n                if (!source) {\r\n                    _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, \"cannot serialize object because it is null or undefined\", { name: name }, true);\r\n                    return output;\r\n                }\r\n                if (source[circularReferenceCheck]) {\r\n                    _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 50 /* _eInternalMessageId.CircularReferenceDetected */, \"Circular reference detected while serializing object\", { name: name }, true);\r\n                    return output;\r\n                }\r\n                if (!source.aiDataContract) {\r\n                    // special case for measurements/properties/tags\r\n                    if (name === \"measurements\") {\r\n                        output = _serializeStringMap(source, \"number\", name);\r\n                    }\r\n                    else if (name === \"properties\") {\r\n                        output = _serializeStringMap(source, \"string\", name);\r\n                    }\r\n                    else if (name === \"tags\") {\r\n                        output = _serializeStringMap(source, \"string\", name);\r\n                    }\r\n                    else if (isArray(source)) {\r\n                        output = _serializeArray(source, name);\r\n                    }\r\n                    else {\r\n                        _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"Attempting to serialize an object which does not implement ISerializable\", { name: name }, true);\r\n                        try {\r\n                            // verify that the object can be stringified\r\n                            getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](source);\r\n                            output = source;\r\n                        }\r\n                        catch (e) {\r\n                            // if serialization fails return an empty string\r\n                            _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e[_DYN_TO_STRING /* @min:%2etoString */])) ? e[_DYN_TO_STRING /* @min:%2etoString */]() : \"Error serializing object\", null, true);\r\n                        }\r\n                    }\r\n                    return output;\r\n                }\r\n                source[circularReferenceCheck] = true;\r\n                objForEachKey(source.aiDataContract, function (field, contract) {\r\n                    var isRequired = (isFunction(contract)) ? (contract() & 1 /* FieldType.Required */) : (contract & 1 /* FieldType.Required */);\r\n                    var isHidden = (isFunction(contract)) ? (contract() & 4 /* FieldType.Hidden */) : (contract & 4 /* FieldType.Hidden */);\r\n                    var isArray = contract & 2 /* FieldType.Array */;\r\n                    var isPresent = source[field] !== undefined;\r\n                    var isObj = isObject(source[field]) && source[field] !== null;\r\n                    if (isRequired && !isPresent && !isArray) {\r\n                        _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 24 /* _eInternalMessageId.MissingRequiredFieldSpecification */, \"Missing required field specification. The field is required but not present on source\", { field: field, name: name });\r\n                        // If not in debug mode, continue and hope the error is permissible\r\n                    }\r\n                    else if (!isHidden) { // Don't serialize hidden fields\r\n                        var value = void 0;\r\n                        if (isObj) {\r\n                            if (isArray) {\r\n                                // special case; recurse on each object in the source array\r\n                                value = _serializeArray(source[field], field);\r\n                            }\r\n                            else {\r\n                                // recurse on the source object in this field\r\n                                value = _serializeObject(source[field], field);\r\n                            }\r\n                        }\r\n                        else {\r\n                            // assign the source field to the output even if undefined or required\r\n                            value = source[field];\r\n                        }\r\n                        // only emit this field if the value is defined\r\n                        if (value !== undefined) {\r\n                            output[field] = value;\r\n                        }\r\n                    }\r\n                });\r\n                delete source[circularReferenceCheck];\r\n                return output;\r\n            }\r\n            function _serializeArray(sources, name) {\r\n                var output;\r\n                if (!!sources) {\r\n                    if (!isArray(sources)) {\r\n                        _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 54 /* _eInternalMessageId.ItemNotInArray */, \"This field was specified as an array in the contract but the item is not an array.\\r\\n\", { name: name }, true);\r\n                    }\r\n                    else {\r\n                        output = [];\r\n                        for (var i = 0; i < sources[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n                            var source = sources[i];\r\n                            var item = _serializeObject(source, name + \"[\" + i + \"]\");\r\n                            output[_DYN_PUSH /* @min:%2epush */](item);\r\n                        }\r\n                    }\r\n                }\r\n                return output;\r\n            }\r\n            function _serializeStringMap(map, expectedType, name) {\r\n                var output;\r\n                if (map) {\r\n                    output = {};\r\n                    objForEachKey(map, function (field, value) {\r\n                        if (expectedType === \"string\") {\r\n                            if (value === undefined) {\r\n                                output[field] = \"undefined\";\r\n                            }\r\n                            else if (value === null) {\r\n                                output[field] = \"null\";\r\n                            }\r\n                            else if (!value[_DYN_TO_STRING /* @min:%2etoString */]) {\r\n                                output[field] = \"invalid field: toString() is not defined.\";\r\n                            }\r\n                            else {\r\n                                output[field] = value[_DYN_TO_STRING /* @min:%2etoString */]();\r\n                            }\r\n                        }\r\n                        else if (expectedType === \"number\") {\r\n                            if (value === undefined) {\r\n                                output[field] = \"undefined\";\r\n                            }\r\n                            else if (value === null) {\r\n                                output[field] = \"null\";\r\n                            }\r\n                            else {\r\n                                var num = parseFloat(value);\r\n                                output[field] = num;\r\n                            }\r\n                        }\r\n                        else {\r\n                            output[field] = \"invalid field: \" + name + \" is of unknown type.\";\r\n                            _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, output[field], null, true);\r\n                        }\r\n                    });\r\n                }\r\n                return output;\r\n            }\r\n        });\r\n    }\r\n// Removed Stub for Serializer.prototype.serialize.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    Serializer.__ieDyn=1;\n\n    return Serializer;\r\n}());\r\nexport { Serializer };\r\n//# sourceMappingURL=Serializer.js.map","/*\n * Application Insights JavaScript SDK - Channel, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_CONCAT, _DYN_LENGTH } from \"../../__DynamicConstants\";\r\n// (Magic number) DJB algorithm can't work on shorter strings (results in poor distribution\r\nvar MIN_INPUT_LENGTH = 8;\r\nvar HashCodeScoreGenerator = /** @class */ (function () {\r\n    function HashCodeScoreGenerator() {\r\n    }\r\n    HashCodeScoreGenerator.prototype.getHashCodeScore = function (key) {\r\n        var score = this.getHashCode(key) / HashCodeScoreGenerator.INT_MAX_VALUE;\r\n        return score * 100;\r\n    };\r\n    HashCodeScoreGenerator.prototype.getHashCode = function (input) {\r\n        if (input === \"\") {\r\n            return 0;\r\n        }\r\n        while (input[_DYN_LENGTH /* @min:%2elength */] < MIN_INPUT_LENGTH) {\r\n            input = input[_DYN_CONCAT /* @min:%2econcat */](input);\r\n        }\r\n        // 5381 is a magic number: http://stackoverflow.com/questions/10696223/reason-for-5381-number-in-djb-hash-function\r\n        var hash = 5381;\r\n        for (var i = 0; i < input[_DYN_LENGTH /* @min:%2elength */]; ++i) {\r\n            hash = ((hash << 5) + hash) + input.charCodeAt(i);\r\n            // 'hash' is of number type which means 53 bit integer (http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types-number-type)\r\n            // 'hash & hash' will keep it 32 bit integer - just to make it clearer what the result is.\r\n            hash = hash & hash;\r\n        }\r\n        return Math.abs(hash);\r\n    };\r\n    // We're using 32 bit math, hence max value is (2^31 - 1)\r\n    HashCodeScoreGenerator.INT_MAX_VALUE = 2147483647;\r\n    return HashCodeScoreGenerator;\r\n}());\r\nexport { HashCodeScoreGenerator };\r\n//# sourceMappingURL=HashCodeScoreGenerator.js.map","/*\n * Application Insights JavaScript SDK - Channel, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { ContextTagKeys } from \"@microsoft/applicationinsights-common\";\r\nimport { _DYN_GET_HASH_CODE_SCORE, _DYN_GET_SAMPLING_SCORE, _DYN_TAGS, _DYN_TRACE_ID } from \"../../__DynamicConstants\";\r\nimport { HashCodeScoreGenerator } from \"./HashCodeScoreGenerator\";\r\nvar SamplingScoreGenerator = /** @class */ (function () {\r\n    function SamplingScoreGenerator() {\r\n        var _self = this;\r\n        var hashCodeGenerator = new HashCodeScoreGenerator();\r\n        var keys = new ContextTagKeys();\r\n        _self[_DYN_GET_SAMPLING_SCORE /* @min:%2egetSamplingScore */] = function (item) {\r\n            var score = 0;\r\n            if (item[_DYN_TAGS /* @min:%2etags */] && item[_DYN_TAGS /* @min:%2etags */][keys.userId]) { // search in tags first, then ext\r\n                score = hashCodeGenerator.getHashCodeScore(item[_DYN_TAGS /* @min:%2etags */][keys.userId]);\r\n            }\r\n            else if (item.ext && item.ext.user && item.ext.user.id) {\r\n                score = hashCodeGenerator[_DYN_GET_HASH_CODE_SCORE /* @min:%2egetHashCodeScore */](item.ext.user.id);\r\n            }\r\n            else if (item[_DYN_TAGS /* @min:%2etags */] && item[_DYN_TAGS /* @min:%2etags */][keys.operationId]) { // search in tags first, then ext\r\n                score = hashCodeGenerator.getHashCodeScore(item[_DYN_TAGS /* @min:%2etags */][keys.operationId]);\r\n            }\r\n            else if (item.ext && item.ext.telemetryTrace && item.ext.telemetryTrace[_DYN_TRACE_ID /* @min:%2etraceID */]) {\r\n                score = hashCodeGenerator.getHashCodeScore(item.ext.telemetryTrace[_DYN_TRACE_ID /* @min:%2etraceID */]);\r\n            }\r\n            else {\r\n                // tslint:disable-next-line:insecure-random\r\n                score = (Math.random() * 100);\r\n            }\r\n            return score;\r\n        };\r\n    }\r\n    return SamplingScoreGenerator;\r\n}());\r\nexport { SamplingScoreGenerator };\r\n//# sourceMappingURL=SamplingScoreGenerator.js.map","/*\n * Application Insights JavaScript SDK - Channel, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { Metric } from \"@microsoft/applicationinsights-common\";\r\nimport { safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_DATA_TYPE, _DYN_GET_SAMPLING_SCORE, _DYN_SAMPLE_RATE } from \"../__DynamicConstants\";\r\nimport { SamplingScoreGenerator } from \"./SamplingScoreGenerators/SamplingScoreGenerator\";\r\nvar Sample = /** @class */ (function () {\r\n    function Sample(sampleRate, logger) {\r\n        // We're using 32 bit math, hence max value is (2^31 - 1)\r\n        this.INT_MAX_VALUE = 2147483647;\r\n        var _logger = logger || safeGetLogger(null);\r\n        if (sampleRate > 100 || sampleRate < 0) {\r\n            _logger.throwInternal(2 /* eLoggingSeverity.WARNING */, 58 /* _eInternalMessageId.SampleRateOutOfRange */, \"Sampling rate is out of range (0..100). Sampling will be disabled, you may be sending too much data which may affect your AI service level.\", { samplingRate: sampleRate }, true);\r\n            sampleRate = 100;\r\n        }\r\n        this[_DYN_SAMPLE_RATE /* @min:%2esampleRate */] = sampleRate;\r\n        this.samplingScoreGenerator = new SamplingScoreGenerator();\r\n    }\r\n    /**\r\n    * Determines if an envelope is sampled in (i.e. will be sent) or not (i.e. will be dropped).\r\n    */\r\n    Sample.prototype.isSampledIn = function (envelope) {\r\n        var samplingPercentage = this[_DYN_SAMPLE_RATE /* @min:%2esampleRate */]; // 0 - 100\r\n        var isSampledIn = false;\r\n        if (samplingPercentage === null || samplingPercentage === undefined || samplingPercentage >= 100) {\r\n            return true;\r\n        }\r\n        else if (envelope.baseType === Metric[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n            // exclude MetricData telemetry from sampling\r\n            return true;\r\n        }\r\n        isSampledIn = this.samplingScoreGenerator[_DYN_GET_SAMPLING_SCORE /* @min:%2egetSamplingScore */](envelope) < samplingPercentage;\r\n        return isSampledIn;\r\n    };\r\n    return Sample;\r\n}());\r\nexport { Sample };\r\n//# sourceMappingURL=Sample.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrReduce, objKeys, strEndsWith } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DEFAULT_BREEZE_ENDPOINT } from \"./Constants\";\r\nimport { _DYN_INGESTIONENDPOINT, _DYN_LENGTH, _DYN_SPLIT, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar _FIELDS_SEPARATOR = \";\";\r\nvar _FIELD_KEY_VALUE_SEPARATOR = \"=\";\r\nexport function parseConnectionString(connectionString) {\r\n    if (!connectionString) {\r\n        return {};\r\n    }\r\n    var kvPairs = connectionString[_DYN_SPLIT /* @min:%2esplit */](_FIELDS_SEPARATOR);\r\n    var result = arrReduce(kvPairs, function (fields, kv) {\r\n        var kvParts = kv[_DYN_SPLIT /* @min:%2esplit */](_FIELD_KEY_VALUE_SEPARATOR);\r\n        if (kvParts[_DYN_LENGTH /* @min:%2elength */] === 2) { // only save fields with valid formats\r\n            var key = kvParts[0][_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n            var value = kvParts[1];\r\n            fields[key] = value;\r\n        }\r\n        return fields;\r\n    }, {});\r\n    if (objKeys(result)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n        // this is a valid connection string, so parse the results\r\n        if (result.endpointsuffix) {\r\n            // apply the default endpoints\r\n            var locationPrefix = result.location ? result.location + \".\" : \"\";\r\n            result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] || (\"https://\" + locationPrefix + \"dc.\" + result.endpointsuffix);\r\n        }\r\n        // apply user override endpoint or the default endpoints\r\n        result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] || DEFAULT_BREEZE_ENDPOINT;\r\n        if (strEndsWith(result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */], \"/\")) {\r\n            result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */].slice(0, -1);\r\n        }\r\n    }\r\n    return result;\r\n}\r\nexport var ConnectionStringParser = {\r\n    parse: parseConnectionString\r\n};\r\n//# sourceMappingURL=ConnectionStringParser.js.map","/*\n * Application Insights JavaScript SDK - Common, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { _throwInternal, arrIndexOf, isNotNullOrUndefined, isNullOrUndefined, onConfigChange, randomValue, safeGetLogger, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { arrForEach, objForEachKey } from \"@nevware21/ts-utils\";\r\nimport { utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage } from \"./StorageHelperFuncs\";\r\nimport { _DYN_COUNT, _DYN_DATE, _DYN_DAYS_OF_MONTH, _DYN_DISABLED, _DYN_GET_UTCDATE, _DYN_INTERVAL, _DYN_LENGTH, _DYN_MESSAGE, _DYN_PRE_TRIGGER_DATE, _DYN_PUSH, _DYN_STRINGIFY } from \"./__DynamicConstants\";\r\nvar THROTTLE_STORAGE_PREFIX = \"appInsightsThrottle\";\r\nvar ThrottleMgr = /** @class */ (function () {\r\n    function ThrottleMgr(core, namePrefix) {\r\n        var _self = this;\r\n        var _canUseLocalStorage;\r\n        var _logger;\r\n        var _config;\r\n        var _localStorageObj;\r\n        var _isTriggered; //_isTriggered is to make sure that we only trigger throttle once a day\r\n        var _namePrefix;\r\n        var _queue;\r\n        var _isReady = false;\r\n        var _isSpecificDaysGiven = false;\r\n        _initConfig();\r\n        // Special internal method to allow the unit tests and DebugPlugin to hook embedded objects\r\n        _self[\"_getDbgPlgTargets\"] = function () {\r\n            return [_queue];\r\n        };\r\n        _self.getConfig = function () {\r\n            return _config;\r\n        };\r\n        /**\r\n         * Check if it is the correct day to send message.\r\n         * If _isTriggered is true, even if canThrottle returns true, message will not be sent,\r\n         * because we only allow triggering sendMessage() once a day.\r\n         * @returns if the current date is the valid date to send message\r\n         */\r\n        _self.canThrottle = function (msgId) {\r\n            var localObj = _getLocalStorageObjByKey(msgId);\r\n            var cfg = _getCfgByKey(msgId);\r\n            return _canThrottle(cfg, _canUseLocalStorage, localObj);\r\n        };\r\n        /**\r\n         * Check if throttle is triggered on current day(UTC)\r\n         * if canThrottle returns false, isTriggered will return false\r\n         * @returns if throttle is triggered on current day(UTC)\r\n         */\r\n        _self.isTriggered = function (msgId) {\r\n            return _isTrigger(msgId);\r\n        };\r\n        /**\r\n         * Before isReady set to true, all message will be stored in queue.\r\n         * Message will only be sent out after isReady set to true.\r\n         * Initial and default value: false\r\n         * @returns isReady state\r\n         */\r\n        _self.isReady = function () {\r\n            return _isReady;\r\n        };\r\n        /**\r\n         * Flush all message with given message key in queue with isReady state set to true.\r\n         * @returns if message queue is flushed\r\n         */\r\n        _self.flush = function (msgId) {\r\n            try {\r\n                var queue = _getQueueByKey(msgId);\r\n                if (queue && queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    var items = queue.slice(0);\r\n                    _queue[msgId] = [];\r\n                    arrForEach(items, function (item) {\r\n                        _flushMessage(item.msgID, item[_DYN_MESSAGE /* @min:%2emessage */], item.severity, false);\r\n                    });\r\n                    return true;\r\n                }\r\n            }\r\n            catch (err) {\r\n                // eslint-disable-next-line no-empty\r\n            }\r\n            return false;\r\n        };\r\n        /**\r\n         * Flush all message in queue with isReady state set to true.\r\n         * @returns if message queue is flushed\r\n         */\r\n        _self.flushAll = function () {\r\n            try {\r\n                if (_queue) {\r\n                    var result_1 = true;\r\n                    objForEachKey(_queue, function (key) {\r\n                        var isFlushed = _self.flush(parseInt(key));\r\n                        result_1 = result_1 && isFlushed;\r\n                    });\r\n                    return result_1;\r\n                }\r\n            }\r\n            catch (err) {\r\n                // eslint-disable-next-line no-empty\r\n            }\r\n            return false;\r\n        };\r\n        /**\r\n         * Set isReady State\r\n         * if isReady set to true, message queue will be flushed automatically.\r\n         * @param isReady isReady State\r\n         * @pa\r\n         * @returns if message queue is flushed\r\n         */\r\n        _self.onReadyState = function (isReady, flushAll) {\r\n            if (flushAll === void 0) { flushAll = true; }\r\n            _isReady = isNullOrUndefined(isReady) ? true : isReady;\r\n            if (_isReady && flushAll) {\r\n                return _self.flushAll();\r\n            }\r\n            return null;\r\n        };\r\n        _self.sendMessage = function (msgID, message, severity) {\r\n            return _flushMessage(msgID, message, severity, true);\r\n        };\r\n        function _flushMessage(msgID, message, severity, saveUnsentMsg) {\r\n            if (_isReady) {\r\n                var isSampledIn = _canSampledIn(msgID);\r\n                if (!isSampledIn) {\r\n                    return;\r\n                }\r\n                var cfg = _getCfgByKey(msgID);\r\n                var localStorageObj = _getLocalStorageObjByKey(msgID);\r\n                var canThrottle = _canThrottle(cfg, _canUseLocalStorage, localStorageObj);\r\n                var throttled = false;\r\n                var number = 0;\r\n                var isTriggered = _isTrigger(msgID);\r\n                try {\r\n                    if (canThrottle && !isTriggered) {\r\n                        number = Math.min(cfg.limit.maxSendNumber, localStorageObj[_DYN_COUNT /* @min:%2ecount */] + 1);\r\n                        localStorageObj[_DYN_COUNT /* @min:%2ecount */] = 0;\r\n                        throttled = true;\r\n                        _isTriggered[msgID] = true;\r\n                        localStorageObj[_DYN_PRE_TRIGGER_DATE /* @min:%2epreTriggerDate */] = new Date();\r\n                    }\r\n                    else {\r\n                        _isTriggered[msgID] = canThrottle;\r\n                        localStorageObj[_DYN_COUNT /* @min:%2ecount */] += 1;\r\n                    }\r\n                    var localStorageName = _getLocalStorageName(msgID);\r\n                    _resetLocalStorage(_logger, localStorageName, localStorageObj);\r\n                    for (var i = 0; i < number; i++) {\r\n                        _sendMessage(msgID, _logger, message, severity);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    // eslint-disable-next-line no-empty\r\n                }\r\n                return {\r\n                    isThrottled: throttled,\r\n                    throttleNum: number\r\n                };\r\n            }\r\n            else {\r\n                if (!!saveUnsentMsg) {\r\n                    var queue = _getQueueByKey(msgID);\r\n                    queue[_DYN_PUSH /* @min:%2epush */]({\r\n                        msgID: msgID,\r\n                        message: message,\r\n                        severity: severity\r\n                    });\r\n                }\r\n            }\r\n            return null;\r\n        }\r\n        function _initConfig() {\r\n            _logger = safeGetLogger(core);\r\n            _isTriggered = {};\r\n            _localStorageObj = {};\r\n            _queue = {};\r\n            _config = {};\r\n            _setCfgByKey(109 /* _eInternalMessageId.DefaultThrottleMsgKey */);\r\n            _namePrefix = isNotNullOrUndefined(namePrefix) ? namePrefix : \"\";\r\n            core.addUnloadHook(onConfigChange(core.config, function (details) {\r\n                var coreConfig = details.cfg;\r\n                _canUseLocalStorage = utlCanUseLocalStorage();\r\n                var configMgr = coreConfig.throttleMgrCfg || {};\r\n                objForEachKey(configMgr, function (key, cfg) {\r\n                    _setCfgByKey(parseInt(key), cfg);\r\n                });\r\n            }));\r\n        }\r\n        function _getCfgByKey(msgID) {\r\n            return _config[msgID] || _config[109 /* _eInternalMessageId.DefaultThrottleMsgKey */];\r\n        }\r\n        function _setCfgByKey(msgID, config) {\r\n            var _a, _b;\r\n            try {\r\n                var cfg = config || {};\r\n                var curCfg = {};\r\n                curCfg[_DYN_DISABLED /* @min:%2edisabled */] = !!cfg[_DYN_DISABLED /* @min:%2edisabled */];\r\n                var configInterval = cfg[_DYN_INTERVAL /* @min:%2einterval */] || {};\r\n                _isSpecificDaysGiven = (configInterval === null || configInterval === void 0 ? void 0 : configInterval.daysOfMonth) && (configInterval === null || configInterval === void 0 ? void 0 : configInterval.daysOfMonth[_DYN_LENGTH /* @min:%2elength */]) > 0;\r\n                curCfg[_DYN_INTERVAL /* @min:%2einterval */] = _getIntervalConfig(configInterval);\r\n                var limit = {\r\n                    samplingRate: ((_a = cfg.limit) === null || _a === void 0 ? void 0 : _a.samplingRate) || 100,\r\n                    // dafault: every time sent only 1 event\r\n                    maxSendNumber: ((_b = cfg.limit) === null || _b === void 0 ? void 0 : _b.maxSendNumber) || 1\r\n                };\r\n                curCfg.limit = limit;\r\n                _config[msgID] = curCfg;\r\n            }\r\n            catch (e) {\r\n                // eslint-disable-next-line no-empty\r\n            }\r\n        }\r\n        function _getIntervalConfig(interval) {\r\n            interval = interval || {};\r\n            var monthInterval = interval === null || interval === void 0 ? void 0 : interval.monthInterval;\r\n            var dayInterval = interval === null || interval === void 0 ? void 0 : interval.dayInterval;\r\n            // default: send data every 3 month each year\r\n            if (isNullOrUndefined(monthInterval) && isNullOrUndefined(dayInterval)) {\r\n                interval.monthInterval = 3;\r\n                if (!_isSpecificDaysGiven) {\r\n                    // default: send data on 28th\r\n                    interval[_DYN_DAYS_OF_MONTH /* @min:%2edaysOfMonth */] = [28];\r\n                    _isSpecificDaysGiven = true;\r\n                }\r\n            }\r\n            interval = {\r\n                // dafault: sent every three months\r\n                monthInterval: interval === null || interval === void 0 ? void 0 : interval.monthInterval,\r\n                dayInterval: interval === null || interval === void 0 ? void 0 : interval.dayInterval,\r\n                daysOfMonth: interval === null || interval === void 0 ? void 0 : interval.daysOfMonth\r\n            };\r\n            return interval;\r\n        }\r\n        function _canThrottle(config, canUseLocalStorage, localStorageObj) {\r\n            if (config && !config[_DYN_DISABLED /* @min:%2edisabled */] && canUseLocalStorage && isNotNullOrUndefined(localStorageObj)) {\r\n                var curDate = _getThrottleDate();\r\n                var date = localStorageObj[_DYN_DATE /* @min:%2edate */];\r\n                var interval = config[_DYN_INTERVAL /* @min:%2einterval */];\r\n                var monthCheck = 1;\r\n                if (interval === null || interval === void 0 ? void 0 : interval.monthInterval) {\r\n                    var monthExpand = (curDate.getUTCFullYear() - date.getUTCFullYear()) * 12 + curDate.getUTCMonth() - date.getUTCMonth();\r\n                    monthCheck = _checkInterval(interval.monthInterval, 0, monthExpand);\r\n                }\r\n                var dayCheck = 1;\r\n                if (_isSpecificDaysGiven) {\r\n                    dayCheck = arrIndexOf(interval[_DYN_DAYS_OF_MONTH /* @min:%2edaysOfMonth */], curDate[_DYN_GET_UTCDATE /* @min:%2egetUTCDate */]());\r\n                }\r\n                else if (interval === null || interval === void 0 ? void 0 : interval.dayInterval) {\r\n                    var daySpan = Math.floor((curDate.getTime() - date.getTime()) / 86400000);\r\n                    dayCheck = _checkInterval(interval.dayInterval, 0, daySpan);\r\n                }\r\n                return monthCheck >= 0 && dayCheck >= 0;\r\n            }\r\n            return false;\r\n        }\r\n        function _getLocalStorageName(msgKey, prefix) {\r\n            var fix = isNotNullOrUndefined(prefix) ? prefix : \"\";\r\n            if (msgKey) {\r\n                return THROTTLE_STORAGE_PREFIX + fix + \"-\" + msgKey;\r\n            }\r\n            return null;\r\n        }\r\n        // returns if throttle is triggered on current Date\r\n        function _isTriggeredOnCurDate(preTriggerDate) {\r\n            try {\r\n                if (preTriggerDate) {\r\n                    var curDate = new Date();\r\n                    return preTriggerDate.getUTCFullYear() === curDate.getUTCFullYear() &&\r\n                        preTriggerDate.getUTCMonth() === curDate.getUTCMonth() &&\r\n                        preTriggerDate[_DYN_GET_UTCDATE /* @min:%2egetUTCDate */]() === curDate[_DYN_GET_UTCDATE /* @min:%2egetUTCDate */]();\r\n                }\r\n            }\r\n            catch (e) {\r\n                // eslint-disable-next-line no-empty\r\n            }\r\n            return false;\r\n        }\r\n        // transfer local storage string value to object that identifies start date, current count and preTriggerDate\r\n        function _getLocalStorageObj(value, logger, storageName) {\r\n            try {\r\n                var storageObj = {\r\n                    date: _getThrottleDate(),\r\n                    count: 0\r\n                };\r\n                if (value) {\r\n                    var obj = JSON.parse(value);\r\n                    var curObj = {\r\n                        date: _getThrottleDate(obj[_DYN_DATE /* @min:%2edate */]) || storageObj[_DYN_DATE /* @min:%2edate */],\r\n                        count: obj[_DYN_COUNT /* @min:%2ecount */] || storageObj[_DYN_COUNT /* @min:%2ecount */],\r\n                        preTriggerDate: obj.preTriggerDate ? _getThrottleDate(obj[_DYN_PRE_TRIGGER_DATE /* @min:%2epreTriggerDate */]) : undefined\r\n                    };\r\n                    return curObj;\r\n                }\r\n                else {\r\n                    _resetLocalStorage(logger, storageName, storageObj);\r\n                    return storageObj;\r\n                }\r\n            }\r\n            catch (e) {\r\n                // eslint-disable-next-line no-empty\r\n            }\r\n            return null;\r\n        }\r\n        // if datestr is not defined, current date will be returned\r\n        function _getThrottleDate(dateStr) {\r\n            // if new Date() can't be created through the provided dateStr, null will be returned.\r\n            try {\r\n                if (dateStr) {\r\n                    var date = new Date(dateStr);\r\n                    //make sure it is a valid Date Object\r\n                    if (!isNaN(date.getDate())) {\r\n                        return date;\r\n                    }\r\n                }\r\n                else {\r\n                    return new Date();\r\n                }\r\n            }\r\n            catch (e) {\r\n                // eslint-disable-next-line no-empty\r\n            }\r\n            return null;\r\n        }\r\n        function _resetLocalStorage(logger, storageName, obj) {\r\n            try {\r\n                return utlSetLocalStorage(logger, storageName, strTrim(JSON[_DYN_STRINGIFY /* @min:%2estringify */](obj)));\r\n            }\r\n            catch (e) {\r\n                // eslint-disable-next-line no-empty\r\n            }\r\n            return false;\r\n        }\r\n        function _checkInterval(interval, start, current) {\r\n            if (interval <= 0) {\r\n                return 1;\r\n            }\r\n            // count from start year\r\n            return (current >= start) && (current - start) % interval == 0 ? Math.floor((current - start) / interval) + 1 : -1;\r\n        }\r\n        function _sendMessage(msgID, logger, message, severity) {\r\n            _throwInternal(logger, severity || 1 /* eLoggingSeverity.CRITICAL */, msgID, message);\r\n        }\r\n        // NOTE: config.limit.samplingRate is set to 4 decimal places,\r\n        // so config.limit.samplingRate = 1 means 0.0001%\r\n        function _canSampledIn(msgID) {\r\n            try {\r\n                var cfg = _getCfgByKey(msgID);\r\n                return randomValue(1000000) <= cfg.limit.samplingRate;\r\n            }\r\n            catch (e) {\r\n                // eslint-disable-next-line no-empty\r\n            }\r\n            return false;\r\n        }\r\n        function _getLocalStorageObjByKey(key) {\r\n            try {\r\n                var curObj = _localStorageObj[key];\r\n                if (!curObj) {\r\n                    var localStorageName = _getLocalStorageName(key, _namePrefix);\r\n                    curObj = _getLocalStorageObj(utlGetLocalStorage(_logger, localStorageName), _logger, localStorageName);\r\n                    _localStorageObj[key] = curObj;\r\n                }\r\n                return _localStorageObj[key];\r\n            }\r\n            catch (e) {\r\n                // eslint-disable-next-line no-empty\r\n            }\r\n            return null;\r\n        }\r\n        function _isTrigger(key) {\r\n            var isTrigger = _isTriggered[key];\r\n            if (isNullOrUndefined(isTrigger)) {\r\n                isTrigger = false;\r\n                var localStorageObj = _getLocalStorageObjByKey(key);\r\n                if (localStorageObj) {\r\n                    isTrigger = _isTriggeredOnCurDate(localStorageObj[_DYN_PRE_TRIGGER_DATE /* @min:%2epreTriggerDate */]);\r\n                }\r\n                _isTriggered[key] = isTrigger;\r\n            }\r\n            return _isTriggered[key];\r\n        }\r\n        function _getQueueByKey(key) {\r\n            _queue = _queue || {};\r\n            if (isNullOrUndefined(_queue[key])) {\r\n                _queue[key] = [];\r\n            }\r\n            return _queue[key];\r\n        }\r\n    }\r\n    return ThrottleMgr;\r\n}());\r\nexport { ThrottleMgr };\r\n//# sourceMappingURL=ThrottleMgr.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { createAllPromise, createPromise, doAwaitResponse } from \"@nevware21/ts-async\";\r\nimport { arrForEach, arrIndexOf, objDefine, safe, scheduleTimeout } from \"@nevware21/ts-utils\";\r\nimport { createDynamicConfig } from \"../Config/DynamicConfig\";\r\nimport { _DYN_ADD_NOTIFICATION_LIS1, _DYN_CANCEL, _DYN_DATA, _DYN_IS_ASYNC, _DYN_IS_CHILD_EVT, _DYN_LENGTH, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_0, _DYN_SPLICE, _DYN_UNLOAD, _DYN_WATCH } from \"../__DynamicConstants\";\r\nimport { STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_EVENTS_SENT, STR_OFFLINE_DROP, STR_OFFLINE_SENT, STR_OFFLINE_STORE, STR_PERF_EVENT } from \"./InternalConstants\";\r\nvar defaultValues = {\r\n    perfEvtsSendAll: false\r\n};\r\nfunction _runScheduledListeners(asyncNotifications) {\r\n    asyncNotifications.h = null;\r\n    var callbacks = asyncNotifications.cb;\r\n    asyncNotifications.cb = [];\r\n    arrForEach(callbacks, function (cb) {\r\n        // Run the listener in a try-catch to ensure that a single listener failing doesn't prevent the others from running\r\n        safe(cb.fn, [cb.arg]);\r\n    });\r\n}\r\n// This function is used to combine the logic of running the listeners and handling the async notifications so that they don't\r\n// create multiple timers if there are multiple async listeners.\r\nfunction _runListeners(listeners, name, asyncNotifications, callback) {\r\n    arrForEach(listeners, function (listener) {\r\n        if (listener && listener[name]) {\r\n            if (asyncNotifications) {\r\n                // Schedule the callback to be called after the current call stack has cleared.\r\n                asyncNotifications.cb[_DYN_PUSH /* @min:%2epush */]({\r\n                    fn: callback,\r\n                    arg: listener\r\n                });\r\n                asyncNotifications.h = asyncNotifications.h || scheduleTimeout(_runScheduledListeners, 0, asyncNotifications);\r\n            }\r\n            else {\r\n                // Run the listener in a try-catch to ensure that a single listener failing doesn't prevent the others from running\r\n                safe(callback, [listener]);\r\n            }\r\n        }\r\n    });\r\n}\r\n/**\r\n * Class to manage sending notifications to all the listeners.\r\n */\r\nvar NotificationManager = /** @class */ (function () {\r\n    function NotificationManager(config) {\r\n        this.listeners = [];\r\n        var perfEvtsSendAll;\r\n        var unloadHandler;\r\n        var _listeners = [];\r\n        var _asyncNotifications = {\r\n            h: null,\r\n            cb: []\r\n        };\r\n        var cfgHandler = createDynamicConfig(config, defaultValues);\r\n        unloadHandler = cfgHandler[_DYN_WATCH /* @min:%2ewatch */](function (details) {\r\n            perfEvtsSendAll = !!details.cfg.perfEvtsSendAll;\r\n        });\r\n        dynamicProto(NotificationManager, this, function (_self) {\r\n            objDefine(_self, \"listeners\", {\r\n                g: function () { return _listeners; }\r\n            });\r\n            _self[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */] = function (listener) {\r\n                _listeners[_DYN_PUSH /* @min:%2epush */](listener);\r\n            };\r\n            /**\r\n             * Removes all instances of the listener.\r\n             * @param listener - AWTNotificationListener to remove.\r\n             */\r\n            _self[_DYN_REMOVE_NOTIFICATION_0 /* @min:%2eremoveNotificationListener */] = function (listener) {\r\n                var index = arrIndexOf(_listeners, listener);\r\n                while (index > -1) {\r\n                    _listeners[_DYN_SPLICE /* @min:%2esplice */](index, 1);\r\n                    index = arrIndexOf(_listeners, listener);\r\n                }\r\n            };\r\n            /**\r\n             * Notification for events sent.\r\n             * @param events - The array of events that have been sent.\r\n             */\r\n            _self[STR_EVENTS_SENT /* @min:%2eeventsSent */] = function (events) {\r\n                _runListeners(_listeners, STR_EVENTS_SENT, _asyncNotifications, function (listener) {\r\n                    listener[STR_EVENTS_SENT /* @min:%2eeventsSent */](events);\r\n                });\r\n            };\r\n            /**\r\n             * Notification for events being discarded.\r\n             * @param events - The array of events that have been discarded by the SDK.\r\n             * @param reason - The reason for which the SDK discarded the events. The EventsDiscardedReason\r\n             * constant should be used to check the different values.\r\n             */\r\n            _self[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */] = function (events, reason) {\r\n                _runListeners(_listeners, STR_EVENTS_DISCARDED, _asyncNotifications, function (listener) {\r\n                    listener[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */](events, reason);\r\n                });\r\n            };\r\n            /**\r\n             * [Optional] A function called when the events have been requested to be sent to the sever.\r\n             * @param sendReason - The reason why the event batch is being sent.\r\n             * @param isAsync - A flag which identifies whether the requests are being sent in an async or sync manner.\r\n             */\r\n            _self[STR_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */] = function (sendReason, isAsync) {\r\n                _runListeners(_listeners, STR_EVENTS_SEND_REQUEST, isAsync ? _asyncNotifications : null, function (listener) {\r\n                    listener[STR_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */](sendReason, isAsync);\r\n                });\r\n            };\r\n            _self[STR_PERF_EVENT /* @min:%2eperfEvent */] = function (perfEvent) {\r\n                if (perfEvent) {\r\n                    // Send all events or only parent events\r\n                    if (perfEvtsSendAll || !perfEvent[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */]()) {\r\n                        _runListeners(_listeners, STR_PERF_EVENT, null, function (listener) {\r\n                            if (perfEvent[_DYN_IS_ASYNC /* @min:%2eisAsync */]) {\r\n                                scheduleTimeout(function () { return listener[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent); }, 0);\r\n                            }\r\n                            else {\r\n                                listener[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent);\r\n                            }\r\n                        });\r\n                    }\r\n                }\r\n            };\r\n            _self[STR_OFFLINE_STORE /* @min:%2eofflineEventsStored */] = function (events) {\r\n                if (events && events[_DYN_LENGTH /* @min:%2elength */]) {\r\n                    _runListeners(_listeners, STR_OFFLINE_STORE, _asyncNotifications, function (listener) {\r\n                        listener[STR_OFFLINE_STORE /* @min:%2eofflineEventsStored */](events);\r\n                    });\r\n                }\r\n            };\r\n            _self[STR_OFFLINE_SENT /* @min:%2eofflineBatchSent */] = function (batch) {\r\n                if (batch && batch[_DYN_DATA /* @min:%2edata */]) {\r\n                    _runListeners(_listeners, STR_OFFLINE_SENT, _asyncNotifications, function (listener) {\r\n                        listener[STR_OFFLINE_SENT /* @min:%2eofflineBatchSent */](batch);\r\n                    });\r\n                }\r\n            };\r\n            _self[STR_OFFLINE_DROP /* @min:%2eofflineBatchDrop */] = function (cnt, reason) {\r\n                if (cnt > 0) {\r\n                    var rn_1 = reason || 0; // default is unknown\r\n                    _runListeners(_listeners, STR_OFFLINE_DROP, _asyncNotifications, function (listener) {\r\n                        listener[STR_OFFLINE_DROP /* @min:%2eofflineBatchDrop */](cnt, rn_1);\r\n                    });\r\n                }\r\n            };\r\n            _self[_DYN_UNLOAD /* @min:%2eunload */] = function (isAsync) {\r\n                var _finishUnload = function () {\r\n                    unloadHandler && unloadHandler.rm();\r\n                    unloadHandler = null;\r\n                    _listeners = [];\r\n                    // Clear any async listener\r\n                    _asyncNotifications.h && _asyncNotifications.h[_DYN_CANCEL /* @min:%2ecancel */]();\r\n                    _asyncNotifications.h = null;\r\n                    _asyncNotifications.cb = [];\r\n                };\r\n                var waiting;\r\n                _runListeners(_listeners, \"unload\", null, function (listener) {\r\n                    var asyncUnload = listener[_DYN_UNLOAD /* @min:%2eunload */](isAsync);\r\n                    if (asyncUnload) {\r\n                        if (!waiting) {\r\n                            waiting = [];\r\n                        }\r\n                        waiting[_DYN_PUSH /* @min:%2epush */](asyncUnload);\r\n                    }\r\n                });\r\n                if (waiting) {\r\n                    return createPromise(function (resolve) {\r\n                        return doAwaitResponse(createAllPromise(waiting), function () {\r\n                            _finishUnload();\r\n                            resolve();\r\n                        });\r\n                    });\r\n                }\r\n                else {\r\n                    _finishUnload();\r\n                }\r\n            };\r\n        });\r\n    }\r\n// Removed Stub for NotificationManager.prototype.addNotificationListener.\r\n// Removed Stub for NotificationManager.prototype.removeNotificationListener.\r\n// Removed Stub for NotificationManager.prototype.eventsSent.\r\n// Removed Stub for NotificationManager.prototype.eventsDiscarded.\r\n// Removed Stub for NotificationManager.prototype.eventsSendRequest.\r\n// Removed Stub for NotificationManager.prototype.perfEvent.\r\n// Removed Stub for NotificationManager.prototype.unload.\r\n// Removed Stub for NotificationManager.prototype.offlineEventsStored.\r\n// Removed Stub for NotificationManager.prototype.offlineBatchSent.\r\n// Removed Stub for NotificationManager.prototype.offlineBatchDrop.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    NotificationManager.__ieDyn=1;\n\n    return NotificationManager;\r\n}());\r\nexport { NotificationManager };\r\n//# sourceMappingURL=NotificationManager.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n// \r\n// \r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { arrAppend, arrForEach, dumpObj } from \"@nevware21/ts-utils\";\r\nimport { _DYN_APPLY, _DYN_DIAG_LOG, _DYN_LENGTH, _DYN_PROCESS_NEXT, _DYN_SPLICE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { BaseTelemetryPlugin } from \"./BaseTelemetryPlugin\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { getExceptionName } from \"./HelperFuncs\";\r\nimport { STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nfunction _addInitializer(_initializers, id, telemetryInitializer) {\r\n    var theInitializer = {\r\n        id: id,\r\n        fn: telemetryInitializer\r\n    };\r\n    arrAppend(_initializers, theInitializer);\r\n    var handler = {\r\n        remove: function () {\r\n            arrForEach(_initializers, function (initializer, idx) {\r\n                if (initializer.id === theInitializer.id) {\r\n                    _initializers[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n                    return -1;\r\n                }\r\n            });\r\n        }\r\n    };\r\n    return handler;\r\n}\r\nfunction _runInitializers(_initializers, item, logger) {\r\n    var doNotSendItem = false;\r\n    var telemetryInitializersCount = _initializers[_DYN_LENGTH /* @min:%2elength */];\r\n    for (var i = 0; i < telemetryInitializersCount; ++i) {\r\n        var telemetryInitializer = _initializers[i];\r\n        if (telemetryInitializer) {\r\n            try {\r\n                if (telemetryInitializer.fn[_DYN_APPLY /* @min:%2eapply */](null, [item]) === false) {\r\n                    doNotSendItem = true;\r\n                    break;\r\n                }\r\n            }\r\n            catch (e) {\r\n                // log error but dont stop executing rest of the telemetry initializers\r\n                // doNotSendItem = true;\r\n                _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"Telemetry initializer failed: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n            }\r\n        }\r\n    }\r\n    return !doNotSendItem;\r\n}\r\nvar TelemetryInitializerPlugin = /** @class */ (function (_super) {\r\n    __extends(TelemetryInitializerPlugin, _super);\r\n    function TelemetryInitializerPlugin() {\r\n        var _this = _super.call(this) || this;\r\n        _this.identifier = \"TelemetryInitializerPlugin\";\r\n        _this.priority = 199;\r\n        // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n        var _id;\r\n        var _initializers;\r\n        _initDefaults();\r\n        dynamicProto(TelemetryInitializerPlugin, _this, function (_self, _base) {\r\n            _self.addTelemetryInitializer = function (telemetryInitializer) {\r\n                return _addInitializer(_initializers, _id++, telemetryInitializer);\r\n            };\r\n            _self[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */] = function (item, itemCtx) {\r\n                if (_runInitializers(_initializers, item, itemCtx ? itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */]() : _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]())) {\r\n                    _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item, itemCtx);\r\n                }\r\n            };\r\n            _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] = function () {\r\n                _initDefaults();\r\n            };\r\n        });\r\n        function _initDefaults() {\r\n            _id = 0;\r\n            _initializers = [];\r\n        }\r\n        return _this;\r\n    }\r\n// Removed Stub for TelemetryInitializerPlugin.prototype.addTelemetryInitializer.\r\n// Removed Stub for TelemetryInitializerPlugin.prototype.processTelemetry.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    TelemetryInitializerPlugin.__ieDyn=1;\n\n    return TelemetryInitializerPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { TelemetryInitializerPlugin };\r\n//# sourceMappingURL=TelemetryInitializerPlugin.js.map","/*\n * Application Insights JavaScript SDK - Core, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nvar _a;\r\nimport { __spreadArrayFn as __spreadArray } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { createPromise, createSyncAllSettledPromise, doAwaitResponse } from \"@nevware21/ts-async\";\r\nimport { arrAppend, arrForEach, arrIndexOf, createTimeout, deepExtend, hasDocument, isFunction, isNullOrUndefined, isPlainObject, isPromiseLike, objDeepFreeze, objDefine, objForEachKey, objFreeze, objHasOwn, scheduleTimeout, throwError } from \"@nevware21/ts-utils\";\r\nimport { createDynamicConfig, onConfigChange } from \"../Config/DynamicConfig\";\r\nimport { ActiveStatus } from \"../JavaScriptSDK.Enums/InitActiveStatusEnum\";\r\nimport { _DYN_ADD_NOTIFICATION_LIS1, _DYN_CANCEL, _DYN_CREATE_NEW, _DYN_ENABLED, _DYN_GET_NOTIFY_MGR, _DYN_GET_PLUGIN, _DYN_GET_PROCESS_TEL_CONT2, _DYN_IDENTIFIER, _DYN_INITIALIZE, _DYN_INSTRUMENTATION_KEY, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_I_KEY, _DYN_LENGTH, _DYN_LOGGER, _DYN_LOGGING_LEVEL_CONSOL4, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_NAME, _DYN_NOTIFY, _DYN_ON_COMPLETE, _DYN_POLL_INTERNAL_LOGS, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_0, _DYN_SET_DF, _DYN_SPLICE, _DYN_STOP_POLLING_INTERNA3, _DYN_TEARDOWN, _DYN_TIME, _DYN_UNLOAD, _DYN_VALUE, _DYN_VERSION, _DYN_WATCH, _DYN__INACTIVE } from \"../__DynamicConstants\";\r\nimport { doUnloadAll, runTargetUnload } from \"./AsyncUtils\";\r\nimport { ChannelControllerPriority } from \"./Constants\";\r\nimport { createCookieMgr } from \"./CookieMgr\";\r\nimport { createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { getDebugListener } from \"./DbgExtensionUtils\";\r\nimport { DiagnosticLogger, _InternalLogMessage, _throwInternal, _warnToConsole } from \"./DiagnosticLogger\";\r\nimport { getSetValue, isNotNullOrUndefined, proxyFunctionAs, proxyFunctions, toISOString } from \"./HelperFuncs\";\r\nimport { STR_CHANNELS, STR_CORE, STR_CREATE_PERF_MGR, STR_DISABLED, STR_EMPTY, STR_EVENTS_DISCARDED, STR_EXTENSIONS, STR_EXTENSION_CONFIG, STR_GET_PERF_MGR, STR_PRIORITY, UNDEFINED_VALUE } from \"./InternalConstants\";\r\nimport { NotificationManager } from \"./NotificationManager\";\r\nimport { PerfManager, doPerf, getGblPerfMgr } from \"./PerfManager\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext, createTelemetryProxyChain } from \"./ProcessTelemetryContext\";\r\nimport { _getPluginState, createDistributedTraceContext, initializePlugins, sortPlugins } from \"./TelemetryHelpers\";\r\nimport { TelemetryInitializerPlugin } from \"./TelemetryInitializerPlugin\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nimport { createUnloadHookContainer } from \"./UnloadHookContainer\";\r\nvar strValidationError = \"Plugins must provide initialize method\";\r\nvar strNotificationManager = \"_notificationManager\";\r\nvar strSdkUnloadingError = \"SDK is still unloading...\";\r\nvar strSdkNotInitialized = \"SDK is not initialized\";\r\nvar maxInitQueueSize = 100;\r\nvar maxInitTimeout = 50000;\r\n// const strPluginUnloadFailed = \"Failed to unload plugin\";\r\n/**\r\n * The default settings for the config.\r\n * WE MUST include all defaults here to ensure that the config is created with all of the properties\r\n * defined as dynamic.\r\n */\r\nvar defaultConfig = objDeepFreeze((_a = {\r\n        cookieCfg: {}\r\n    },\r\n    _a[STR_EXTENSIONS] = { rdOnly: true, ref: true, v: [] },\r\n    _a[STR_CHANNELS] = { rdOnly: true, ref: true, v: [] },\r\n    _a[STR_EXTENSION_CONFIG] = { ref: true, v: {} },\r\n    _a[STR_CREATE_PERF_MGR] = UNDEFINED_VALUE,\r\n    _a.loggingLevelConsole = 0 /* eLoggingSeverity.DISABLED */,\r\n    _a.diagnosticLogInterval = UNDEFINED_VALUE,\r\n    _a));\r\n/**\r\n * Helper to create the default performance manager\r\n * @param core\r\n * @param notificationMgr\r\n */\r\nfunction _createPerfManager(core, notificationMgr) {\r\n    return new PerfManager(notificationMgr);\r\n}\r\nfunction _validateExtensions(logger, channelPriority, allExtensions) {\r\n    var _a;\r\n    // Concat all available extensions\r\n    var coreExtensions = [];\r\n    var channels = [];\r\n    // Check if any two extensions have the same priority, then warn to console\r\n    // And extract the local extensions from the\r\n    var extPriorities = {};\r\n    // Extension validation\r\n    arrForEach(allExtensions, function (ext) {\r\n        // Check for ext.initialize\r\n        if (isNullOrUndefined(ext) || isNullOrUndefined(ext[_DYN_INITIALIZE /* @min:%2einitialize */])) {\r\n            throwError(strValidationError);\r\n        }\r\n        var extPriority = ext[STR_PRIORITY /* @min:%2epriority */];\r\n        var identifier = ext[_DYN_IDENTIFIER /* @min:%2eidentifier */];\r\n        if (ext && extPriority) {\r\n            if (!isNullOrUndefined(extPriorities[extPriority])) {\r\n                _warnToConsole(logger, \"Two extensions have same priority #\" + extPriority + \" - \" + extPriorities[extPriority] + \", \" + identifier);\r\n            }\r\n            else {\r\n                // set a value\r\n                extPriorities[extPriority] = identifier;\r\n            }\r\n        }\r\n        // Split extensions to core and channels\r\n        if (!extPriority || extPriority < channelPriority) {\r\n            // Add to core extension that will be managed by AppInsightsCore\r\n            coreExtensions[_DYN_PUSH /* @min:%2epush */](ext);\r\n        }\r\n        else {\r\n            channels[_DYN_PUSH /* @min:%2epush */](ext);\r\n        }\r\n    });\r\n    return _a = {},\r\n        _a[STR_CORE /* @min:core */] = coreExtensions,\r\n        _a[STR_CHANNELS /* @min:channels */] = channels,\r\n        _a;\r\n}\r\nfunction _isPluginPresent(thePlugin, plugins) {\r\n    var exists = false;\r\n    arrForEach(plugins, function (plugin) {\r\n        if (plugin === thePlugin) {\r\n            exists = true;\r\n            return -1;\r\n        }\r\n    });\r\n    return exists;\r\n}\r\nfunction _deepMergeConfig(details, target, newValues, merge) {\r\n    // Lets assign the new values to the existing config\r\n    if (newValues) {\r\n        objForEachKey(newValues, function (key, value) {\r\n            if (merge) {\r\n                if (isPlainObject(value) && isPlainObject(target[key])) {\r\n                    // The target is an object and it has a value\r\n                    _deepMergeConfig(details, target[key], value, merge);\r\n                }\r\n            }\r\n            if (merge && isPlainObject(value) && isPlainObject(target[key])) {\r\n                // The target is an object and it has a value\r\n                _deepMergeConfig(details, target[key], value, merge);\r\n            }\r\n            else {\r\n                // Just Assign (replace) and/or make the property dynamic\r\n                details.set(target, key, value);\r\n            }\r\n        });\r\n    }\r\n}\r\nfunction _findWatcher(listeners, newWatcher) {\r\n    var theListener = null;\r\n    var idx = -1;\r\n    arrForEach(listeners, function (listener, lp) {\r\n        if (listener.w === newWatcher) {\r\n            theListener = listener;\r\n            idx = lp;\r\n            return -1;\r\n        }\r\n    });\r\n    return { i: idx, l: theListener };\r\n}\r\nfunction _addDelayedCfgListener(listeners, newWatcher) {\r\n    var theListener = _findWatcher(listeners, newWatcher).l;\r\n    if (!theListener) {\r\n        theListener = {\r\n            w: newWatcher,\r\n            rm: function () {\r\n                var fnd = _findWatcher(listeners, newWatcher);\r\n                if (fnd.i !== -1) {\r\n                    listeners[_DYN_SPLICE /* @min:%2esplice */](fnd.i, 1);\r\n                }\r\n            }\r\n        };\r\n        listeners[_DYN_PUSH /* @min:%2epush */](theListener);\r\n    }\r\n    return theListener;\r\n}\r\nfunction _registerDelayedCfgListener(config, listeners, logger) {\r\n    arrForEach(listeners, function (listener) {\r\n        var unloadHdl = onConfigChange(config, listener.w, logger);\r\n        delete listener.w; // Clear the listener reference so it will get garbage collected.\r\n        // replace the remove function\r\n        listener.rm = function () {\r\n            unloadHdl.rm();\r\n        };\r\n    });\r\n}\r\n// Moved this outside of the closure to reduce the retained memory footprint\r\nfunction _initDebugListener(configHandler, unloadContainer, notificationManager, debugListener) {\r\n    // Will get recalled if any referenced config values are changed\r\n    unloadContainer.add(configHandler[_DYN_WATCH /* @min:%2ewatch */](function (details) {\r\n        var disableDbgExt = details.cfg.disableDbgExt;\r\n        if (disableDbgExt === true && debugListener) {\r\n            // Remove any previously loaded debug listener\r\n            notificationManager[_DYN_REMOVE_NOTIFICATION_0 /* @min:%2eremoveNotificationListener */](debugListener);\r\n            debugListener = null;\r\n        }\r\n        if (notificationManager && !debugListener && disableDbgExt !== true) {\r\n            debugListener = getDebugListener(details.cfg);\r\n            notificationManager[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */](debugListener);\r\n        }\r\n    }));\r\n    return debugListener;\r\n}\r\n// Moved this outside of the closure to reduce the retained memory footprint\r\nfunction _createUnloadHook(unloadHook) {\r\n    return objDefine({\r\n        rm: function () {\r\n            unloadHook.rm();\r\n        }\r\n    }, \"toJSON\", { v: function () { return \"aicore::onCfgChange<\" + JSON.stringify(unloadHook) + \">\"; } });\r\n}\r\n/**\r\n * @group Classes\r\n * @group Entrypoint\r\n */\r\nvar AppInsightsCore = /** @class */ (function () {\r\n    function AppInsightsCore() {\r\n        // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n        var _configHandler;\r\n        var _isInitialized;\r\n        var _logger;\r\n        var _eventQueue;\r\n        var _notificationManager;\r\n        var _perfManager;\r\n        var _cfgPerfManager;\r\n        var _cookieManager;\r\n        var _pluginChain;\r\n        var _configExtensions;\r\n        var _channelConfig;\r\n        var _channels;\r\n        var _isUnloading;\r\n        var _telemetryInitializerPlugin;\r\n        var _internalLogsEventName;\r\n        var _evtNamespace;\r\n        var _unloadHandlers;\r\n        var _hookContainer;\r\n        var _debugListener;\r\n        var _traceCtx;\r\n        var _instrumentationKey;\r\n        var _cfgListeners;\r\n        var _extensions;\r\n        var _pluginVersionStringArr;\r\n        var _pluginVersionString;\r\n        var _activeStatus; // to indicate if ikey or endpoint url promised is resolved or not\r\n        var _endpoint;\r\n        var _initInMemoMaxSize; // max event count limit during wait for init promises to be resolved\r\n        var _isStatusSet; // track if active status is set in case of init timeout and init promises setting the status twice\r\n        var _initTimer;\r\n        /**\r\n         * Internal log poller\r\n         */\r\n        var _internalLogPoller;\r\n        var _internalLogPollerListening;\r\n        var _forceStopInternalLogPoller;\r\n        dynamicProto(AppInsightsCore, this, function (_self) {\r\n            // Set the default values (also called during teardown)\r\n            _initDefaults();\r\n            // Special internal method to allow the unit tests and DebugPlugin to hook embedded objects\r\n            _self[\"_getDbgPlgTargets\"] = function () {\r\n                return [_extensions, _eventQueue];\r\n            };\r\n            _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = function () { return _isInitialized; };\r\n            // since version 3.3.0\r\n            _self.activeStatus = function () { return _activeStatus; };\r\n            // since version 3.3.0\r\n            // internal\r\n            _self._setPendingStatus = function () {\r\n                _activeStatus = 3 /* eActiveStatus.PENDING */;\r\n            };\r\n            // Creating the self.initialize = ()\r\n            _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, extensions, logger, notificationManager) {\r\n                if (_isUnloading) {\r\n                    throwError(strSdkUnloadingError);\r\n                }\r\n                // Make sure core is only initialized once\r\n                if (_self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]()) {\r\n                    throwError(\"Core cannot be initialized more than once\");\r\n                }\r\n                _configHandler = createDynamicConfig(config, defaultConfig, logger || _self[_DYN_LOGGER /* @min:%2elogger */], false);\r\n                // Re-assigning the local config property so we don't have any references to the passed value and it can be garbage collected\r\n                config = _configHandler.cfg;\r\n                // This will be \"re-run\" if the referenced config properties are changed\r\n                _addUnloadHook(_configHandler[_DYN_WATCH /* @min:%2ewatch */](function (details) {\r\n                    var rootCfg = details.cfg;\r\n                    var isPending = _activeStatus === 3 /* eActiveStatus.PENDING */;\r\n                    if (isPending) {\r\n                        // means waiting for previous promises to be resolved, won't apply new changes\r\n                        return;\r\n                    }\r\n                    _initInMemoMaxSize = rootCfg.initInMemoMaxSize || maxInitQueueSize;\r\n                    // app Insights core only handle ikey and endpointurl, aisku will handle cs\r\n                    var ikey = rootCfg[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n                    var endpointUrl = rootCfg.endpointUrl; // do not need to validate endpoint url, if it is null, default one will be set by sender\r\n                    if (isNullOrUndefined(ikey)) {\r\n                        _instrumentationKey = null;\r\n                        // if new ikey is null, set status to be inactive, all new events will be saved in memory or dropped\r\n                        _activeStatus = ActiveStatus[_DYN__INACTIVE /* @min:%2eINACTIVE */];\r\n                        var msg = \"Please provide instrumentation key\";\r\n                        if (!_isInitialized) {\r\n                            // only throw error during initialization\r\n                            throwError(msg);\r\n                        }\r\n                        else {\r\n                            _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 100 /* _eInternalMessageId.InvalidInstrumentationKey */, msg);\r\n                            _releaseQueues();\r\n                        }\r\n                        return;\r\n                    }\r\n                    var promises = [];\r\n                    if (isPromiseLike(ikey)) {\r\n                        promises[_DYN_PUSH /* @min:%2epush */](ikey);\r\n                        _instrumentationKey = null; // reset current local ikey variable (otherwise it will always be the previous ikeys if timeout is called before promise cb)\r\n                    }\r\n                    else {\r\n                        // string\r\n                        _instrumentationKey = ikey;\r\n                    }\r\n                    if (isPromiseLike(endpointUrl)) {\r\n                        promises[_DYN_PUSH /* @min:%2epush */](endpointUrl);\r\n                        _endpoint = null; // reset current local endpoint variable (otherwise it will always be the previous urls if timeout is called before promise cb)\r\n                    }\r\n                    else {\r\n                        // string or null\r\n                        _endpoint = endpointUrl;\r\n                    }\r\n                    // at least have one promise\r\n                    if (promises[_DYN_LENGTH /* @min:%2elength */]) {\r\n                        // reset to false for new dynamic changes\r\n                        _isStatusSet = false;\r\n                        _activeStatus = 3 /* eActiveStatus.PENDING */;\r\n                        var initTimeout = isNotNullOrUndefined(rootCfg.initTimeOut) ? rootCfg.initTimeOut : maxInitTimeout; // rootCfg.initTimeOut could be 0\r\n                        var allPromises = createSyncAllSettledPromise(promises);\r\n                        _initTimer = scheduleTimeout(function () {\r\n                            // set _isStatusSet to true\r\n                            // set active status\r\n                            // release queues\r\n                            _initTimer = null;\r\n                            if (!_isStatusSet) {\r\n                                _setStatus();\r\n                            }\r\n                        }, initTimeout);\r\n                        doAwaitResponse(allPromises, function (response) {\r\n                            try {\r\n                                if (_isStatusSet) {\r\n                                    // promises take too long to resolve, ignore them\r\n                                    // active status should be set by timeout already\r\n                                    return;\r\n                                }\r\n                                if (!response.rejected) {\r\n                                    var values = response[_DYN_VALUE /* @min:%2evalue */];\r\n                                    if (values && values[_DYN_LENGTH /* @min:%2elength */]) {\r\n                                        // ikey\r\n                                        var ikeyRes = values[0];\r\n                                        _instrumentationKey = ikeyRes && ikeyRes[_DYN_VALUE /* @min:%2evalue */];\r\n                                        // endpoint\r\n                                        if (values[_DYN_LENGTH /* @min:%2elength */] > 1) {\r\n                                            var endpointRes = values[1];\r\n                                            _endpoint = endpointRes && endpointRes[_DYN_VALUE /* @min:%2evalue */];\r\n                                        }\r\n                                    }\r\n                                    if (_instrumentationKey) {\r\n                                        // if ikey is null, no need to trigger extra dynamic changes for extensions\r\n                                        config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */] = _instrumentationKey; // set config.instrumentationKey for extensions to consume\r\n                                        config.endpointUrl = _endpoint; // set config.endpointUrl for extensions to consume\r\n                                    }\r\n                                }\r\n                                // set _isStatusSet to true\r\n                                // set active status\r\n                                // release queues\r\n                                _setStatus();\r\n                            }\r\n                            catch (e) {\r\n                                if (!_isStatusSet) {\r\n                                    _setStatus();\r\n                                }\r\n                            }\r\n                        });\r\n                    }\r\n                    else {\r\n                        // means no promises\r\n                        _setStatus();\r\n                    }\r\n                    //_instrumentationKey = details.cfg.instrumentationKey;\r\n                    // Mark the extensionConfig and all first level keys as referenced\r\n                    // This is so that calls to getExtCfg() will always return the same object\r\n                    // Even when a user may \"re-assign\" the plugin properties (or it's unloaded/reloaded)\r\n                    var extCfg = details.ref(details.cfg, STR_EXTENSION_CONFIG);\r\n                    objForEachKey(extCfg, function (key) {\r\n                        details.ref(extCfg, key);\r\n                    });\r\n                }));\r\n                _notificationManager = notificationManager;\r\n                // Initialize the debug listener outside of the closure to reduce the retained memory footprint\r\n                _debugListener = _initDebugListener(_configHandler, _hookContainer, _notificationManager && _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */](), _debugListener);\r\n                _initPerfManager();\r\n                _self[_DYN_LOGGER /* @min:%2elogger */] = logger;\r\n                var cfgExtensions = config[STR_EXTENSIONS /* @min:%2eextensions */];\r\n                // Extension validation\r\n                _configExtensions = [];\r\n                _configExtensions[_DYN_PUSH /* @min:%2epush */].apply(_configExtensions, __spreadArray(__spreadArray([], extensions, false), cfgExtensions, false));\r\n                _channelConfig = config[STR_CHANNELS /* @min:%2echannels */];\r\n                _initPluginChain(null);\r\n                if (!_channels || _channels[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n                    throwError(\"No \" + STR_CHANNELS + \" available\");\r\n                }\r\n                if (_channelConfig && _channelConfig[_DYN_LENGTH /* @min:%2elength */] > 1) {\r\n                    var teeController = _self[_DYN_GET_PLUGIN /* @min:%2egetPlugin */](\"TeeChannelController\");\r\n                    if (!teeController || !teeController.plugin) {\r\n                        _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"TeeChannel required\");\r\n                    }\r\n                }\r\n                _registerDelayedCfgListener(config, _cfgListeners, _logger);\r\n                _cfgListeners = null;\r\n                _isInitialized = true;\r\n                if (_activeStatus === ActiveStatus.ACTIVE) {\r\n                    _releaseQueues();\r\n                }\r\n            };\r\n            _self.getChannels = function () {\r\n                var controls = [];\r\n                if (_channels) {\r\n                    arrForEach(_channels, function (channel) {\r\n                        controls[_DYN_PUSH /* @min:%2epush */](channel);\r\n                    });\r\n                }\r\n                return objFreeze(controls);\r\n            };\r\n            _self.track = function (telemetryItem) {\r\n                doPerf(_self[STR_GET_PERF_MGR /* @min:%2egetPerfMgr */](), function () { return \"AppInsightsCore:track\"; }, function () {\r\n                    if (telemetryItem === null) {\r\n                        _notifyInvalidEvent(telemetryItem);\r\n                        // throw error\r\n                        throwError(\"Invalid telemetry item\");\r\n                    }\r\n                    // do basic validation before sending it through the pipeline\r\n                    if (!telemetryItem[_DYN_NAME /* @min:%2ename */] && isNullOrUndefined(telemetryItem[_DYN_NAME /* @min:%2ename */])) {\r\n                        _notifyInvalidEvent(telemetryItem);\r\n                        throwError(\"telemetry name required\");\r\n                    }\r\n                    // setup default iKey if not passed in\r\n                    telemetryItem[_DYN_I_KEY /* @min:%2eiKey */] = telemetryItem[_DYN_I_KEY /* @min:%2eiKey */] || _instrumentationKey;\r\n                    // add default timestamp if not passed in\r\n                    telemetryItem[_DYN_TIME /* @min:%2etime */] = telemetryItem[_DYN_TIME /* @min:%2etime */] || toISOString(new Date());\r\n                    // Common Schema 4.0\r\n                    telemetryItem.ver = telemetryItem.ver || \"4.0\";\r\n                    if (!_isUnloading && _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]() && _activeStatus === ActiveStatus.ACTIVE) {\r\n                        // Process the telemetry plugin chain\r\n                        _createTelCtx()[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](telemetryItem);\r\n                    }\r\n                    else if (_activeStatus !== ActiveStatus[_DYN__INACTIVE /* @min:%2eINACTIVE */]) {\r\n                        // Queue events until all extensions are initialized\r\n                        if (_eventQueue[_DYN_LENGTH /* @min:%2elength */] <= _initInMemoMaxSize) {\r\n                            // set limit, if full, stop adding new events\r\n                            _eventQueue[_DYN_PUSH /* @min:%2epush */](telemetryItem);\r\n                        }\r\n                    }\r\n                }, function () { return ({ item: telemetryItem }); }, !(telemetryItem.sync));\r\n            };\r\n            _self[_DYN_GET_PROCESS_TEL_CONT2 /* @min:%2egetProcessTelContext */] = _createTelCtx;\r\n            _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */] = function () {\r\n                if (!_notificationManager) {\r\n                    _notificationManager = new NotificationManager(_configHandler.cfg);\r\n                    // For backward compatibility only\r\n                    _self[strNotificationManager] = _notificationManager;\r\n                }\r\n                return _notificationManager;\r\n            };\r\n            /**\r\n             * Adds a notification listener. The SDK calls methods on the listener when an appropriate notification is raised.\r\n             * The added plugins must raise notifications. If the plugins do not implement the notifications, then no methods will be\r\n             * called.\r\n             * @param listener - An INotificationListener object.\r\n             */\r\n            _self[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */] = function (listener) {\r\n                _self.getNotifyMgr()[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */](listener);\r\n            };\r\n            /**\r\n             * Removes all instances of the listener.\r\n             * @param listener - INotificationListener to remove.\r\n             */\r\n            _self[_DYN_REMOVE_NOTIFICATION_0 /* @min:%2eremoveNotificationListener */] = function (listener) {\r\n                if (_notificationManager) {\r\n                    _notificationManager[_DYN_REMOVE_NOTIFICATION_0 /* @min:%2eremoveNotificationListener */](listener);\r\n                }\r\n            };\r\n            _self.getCookieMgr = function () {\r\n                if (!_cookieManager) {\r\n                    _cookieManager = createCookieMgr(_configHandler.cfg, _self[_DYN_LOGGER /* @min:%2elogger */]);\r\n                }\r\n                return _cookieManager;\r\n            };\r\n            _self.setCookieMgr = function (cookieMgr) {\r\n                if (_cookieManager !== cookieMgr) {\r\n                    runTargetUnload(_cookieManager, false);\r\n                    _cookieManager = cookieMgr;\r\n                }\r\n            };\r\n            _self[STR_GET_PERF_MGR /* @min:%2egetPerfMgr */] = function () {\r\n                return _perfManager || _cfgPerfManager || getGblPerfMgr();\r\n            };\r\n            _self.setPerfMgr = function (perfMgr) {\r\n                _perfManager = perfMgr;\r\n            };\r\n            _self.eventCnt = function () {\r\n                return _eventQueue[_DYN_LENGTH /* @min:%2elength */];\r\n            };\r\n            _self.releaseQueue = function () {\r\n                if (_isInitialized && _eventQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    var eventQueue = _eventQueue;\r\n                    _eventQueue = [];\r\n                    if (_activeStatus === 2 /* eActiveStatus.ACTIVE */) {\r\n                        arrForEach(eventQueue, function (event) {\r\n                            event[_DYN_I_KEY /* @min:%2eiKey */] = event[_DYN_I_KEY /* @min:%2eiKey */] || _instrumentationKey;\r\n                            _createTelCtx()[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](event);\r\n                        });\r\n                    }\r\n                    else {\r\n                        // new one for msg ikey\r\n                        _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 20 /* _eInternalMessageId.FailedToSendQueuedTelemetry */, \"core init status is not active\");\r\n                    }\r\n                }\r\n            };\r\n            _self[_DYN_POLL_INTERNAL_LOGS /* @min:%2epollInternalLogs */] = function (eventName) {\r\n                _internalLogsEventName = eventName || null;\r\n                _forceStopInternalLogPoller = false;\r\n                _internalLogPoller && _internalLogPoller[_DYN_CANCEL /* @min:%2ecancel */]();\r\n                return _startLogPoller(true);\r\n            };\r\n            function _setStatus() {\r\n                _isStatusSet = true;\r\n                if (isNullOrUndefined(_instrumentationKey)) {\r\n                    _activeStatus = ActiveStatus[_DYN__INACTIVE /* @min:%2eINACTIVE */];\r\n                    _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 112 /* _eInternalMessageId.InitPromiseException */, \"ikey can't be resolved from promises\");\r\n                }\r\n                else {\r\n                    _activeStatus = ActiveStatus.ACTIVE;\r\n                }\r\n                _releaseQueues();\r\n            }\r\n            function _releaseQueues() {\r\n                if (_isInitialized) {\r\n                    _self.releaseQueue();\r\n                    _self[_DYN_POLL_INTERNAL_LOGS /* @min:%2epollInternalLogs */]();\r\n                }\r\n            }\r\n            function _startLogPoller(alwaysStart) {\r\n                if ((!_internalLogPoller || !_internalLogPoller[_DYN_ENABLED /* @min:%2eenabled */]) && !_forceStopInternalLogPoller) {\r\n                    var shouldStart = alwaysStart || (_logger && _logger.queue[_DYN_LENGTH /* @min:%2elength */] > 0);\r\n                    if (shouldStart) {\r\n                        if (!_internalLogPollerListening) {\r\n                            _internalLogPollerListening = true;\r\n                            // listen for any configuration changes so that changes to the\r\n                            // interval will cause the timer to be re-initialized\r\n                            _addUnloadHook(_configHandler[_DYN_WATCH /* @min:%2ewatch */](function (details) {\r\n                                var interval = details.cfg.diagnosticLogInterval;\r\n                                if (!interval || !(interval > 0)) {\r\n                                    interval = 10000;\r\n                                }\r\n                                var isRunning = false;\r\n                                if (_internalLogPoller) {\r\n                                    // It was already created so remember it's running and cancel\r\n                                    isRunning = _internalLogPoller[_DYN_ENABLED /* @min:%2eenabled */];\r\n                                    _internalLogPoller[_DYN_CANCEL /* @min:%2ecancel */]();\r\n                                }\r\n                                // Create / reconfigure\r\n                                _internalLogPoller = createTimeout(_flushInternalLogs, interval);\r\n                                _internalLogPoller.unref();\r\n                                // Restart if previously running\r\n                                _internalLogPoller[_DYN_ENABLED /* @min:%2eenabled */] = isRunning;\r\n                            }));\r\n                        }\r\n                        _internalLogPoller[_DYN_ENABLED /* @min:%2eenabled */] = true;\r\n                    }\r\n                }\r\n                return _internalLogPoller;\r\n            }\r\n            _self[_DYN_STOP_POLLING_INTERNA3 /* @min:%2estopPollingInternalLogs */] = function () {\r\n                _forceStopInternalLogPoller = true;\r\n                _internalLogPoller && _internalLogPoller[_DYN_CANCEL /* @min:%2ecancel */]();\r\n                _flushInternalLogs();\r\n            };\r\n            // Add addTelemetryInitializer\r\n            proxyFunctions(_self, function () { return _telemetryInitializerPlugin; }, [\"addTelemetryInitializer\"]);\r\n            _self[_DYN_UNLOAD /* @min:%2eunload */] = function (isAsync, unloadComplete, cbTimeout) {\r\n                var _a;\r\n                if (isAsync === void 0) { isAsync = true; }\r\n                if (!_isInitialized) {\r\n                    // The SDK is not initialized\r\n                    throwError(strSdkNotInitialized);\r\n                }\r\n                // Check if the SDK still unloading so throw\r\n                if (_isUnloading) {\r\n                    // The SDK is already unloading\r\n                    throwError(strSdkUnloadingError);\r\n                }\r\n                var unloadState = (_a = {\r\n                        reason: 50 /* TelemetryUnloadReason.SdkUnload */\r\n                    },\r\n                    _a[_DYN_IS_ASYNC /* @min:isAsync */] = isAsync,\r\n                    _a.flushComplete = false,\r\n                    _a);\r\n                var result;\r\n                if (isAsync && !unloadComplete) {\r\n                    result = createPromise(function (resolve) {\r\n                        // Set the callback to the promise resolve callback\r\n                        unloadComplete = resolve;\r\n                    });\r\n                }\r\n                var processUnloadCtx = createProcessTelemetryUnloadContext(_getPluginChain(), _self);\r\n                processUnloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {\r\n                    _hookContainer.run(_self[_DYN_LOGGER /* @min:%2elogger */]);\r\n                    // Run any \"unload\" functions for the _cookieManager, _notificationManager and _logger\r\n                    doUnloadAll([_cookieManager, _notificationManager, _logger], isAsync, function () {\r\n                        _initDefaults();\r\n                        unloadComplete && unloadComplete(unloadState);\r\n                    });\r\n                }, _self);\r\n                function _doUnload(flushComplete) {\r\n                    unloadState.flushComplete = flushComplete;\r\n                    _isUnloading = true;\r\n                    // Run all of the unload handlers first (before unloading the plugins)\r\n                    _unloadHandlers.run(processUnloadCtx, unloadState);\r\n                    // Stop polling the internal logs\r\n                    _self[_DYN_STOP_POLLING_INTERNA3 /* @min:%2estopPollingInternalLogs */]();\r\n                    // Start unloading the components, from this point onwards the SDK should be considered to be in an unstable state\r\n                    processUnloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n                }\r\n                _flushInternalLogs();\r\n                if (!_flushChannels(isAsync, _doUnload, 6 /* SendRequestReason.SdkUnload */, cbTimeout)) {\r\n                    _doUnload(false);\r\n                }\r\n                return result;\r\n            };\r\n            _self[_DYN_GET_PLUGIN /* @min:%2egetPlugin */] = _getPlugin;\r\n            _self.addPlugin = function (plugin, replaceExisting, isAsync, addCb) {\r\n                if (!plugin) {\r\n                    addCb && addCb(false);\r\n                    _logOrThrowError(strValidationError);\r\n                    return;\r\n                }\r\n                var existingPlugin = _getPlugin(plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */]);\r\n                if (existingPlugin && !replaceExisting) {\r\n                    addCb && addCb(false);\r\n                    _logOrThrowError(\"Plugin [\" + plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"] is already loaded!\");\r\n                    return;\r\n                }\r\n                var updateState = {\r\n                    reason: 16 /* TelemetryUpdateReason.PluginAdded */\r\n                };\r\n                function _addPlugin(removed) {\r\n                    _configExtensions[_DYN_PUSH /* @min:%2epush */](plugin);\r\n                    updateState.added = [plugin];\r\n                    // Re-Initialize the plugin chain\r\n                    _initPluginChain(updateState);\r\n                    addCb && addCb(true);\r\n                }\r\n                if (existingPlugin) {\r\n                    var removedPlugins_1 = [existingPlugin.plugin];\r\n                    var unloadState = {\r\n                        reason: 2 /* TelemetryUnloadReason.PluginReplace */,\r\n                        isAsync: !!isAsync\r\n                    };\r\n                    _removePlugins(removedPlugins_1, unloadState, function (removed) {\r\n                        if (!removed) {\r\n                            // Previous plugin was successfully removed or was not installed\r\n                            addCb && addCb(false);\r\n                        }\r\n                        else {\r\n                            updateState.removed = removedPlugins_1;\r\n                            updateState.reason |= 32 /* TelemetryUpdateReason.PluginRemoved */;\r\n                            _addPlugin(true);\r\n                        }\r\n                    });\r\n                }\r\n                else {\r\n                    _addPlugin(false);\r\n                }\r\n            };\r\n            _self.updateCfg = function (newConfig, mergeExisting) {\r\n                if (mergeExisting === void 0) { mergeExisting = true; }\r\n                var updateState;\r\n                if (_self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]()) {\r\n                    updateState = {\r\n                        reason: 1 /* TelemetryUpdateReason.ConfigurationChanged */,\r\n                        cfg: _configHandler.cfg,\r\n                        oldCfg: deepExtend({}, _configHandler.cfg),\r\n                        newConfig: deepExtend({}, newConfig),\r\n                        merge: mergeExisting\r\n                    };\r\n                    newConfig = updateState.newConfig;\r\n                    var cfg = _configHandler.cfg;\r\n                    // replace the immutable (if initialized) values\r\n                    // We don't currently allow updating the extensions and channels via the update config\r\n                    // So overwriting any user provided values to reuse the existing values\r\n                    newConfig[STR_EXTENSIONS /* @min:%2eextensions */] = cfg[STR_EXTENSIONS /* @min:%2eextensions */];\r\n                    newConfig[STR_CHANNELS /* @min:%2echannels */] = cfg[STR_CHANNELS /* @min:%2echannels */];\r\n                }\r\n                // Explicitly blocking any previous config watchers so that they don't get called because\r\n                // of this bulk update (Probably not necessary)\r\n                _configHandler._block(function (details) {\r\n                    // Lets assign the new values to the existing config either overwriting or re-assigning\r\n                    var theConfig = details.cfg;\r\n                    _deepMergeConfig(details, theConfig, newConfig, mergeExisting);\r\n                    if (!mergeExisting) {\r\n                        // Remove (unassign) the values \"missing\" from the newConfig and also not in the default config\r\n                        objForEachKey(theConfig, function (key) {\r\n                            if (!objHasOwn(newConfig, key)) {\r\n                                // Set the value to undefined\r\n                                details.set(theConfig, key, UNDEFINED_VALUE);\r\n                            }\r\n                        });\r\n                    }\r\n                    // Apply defaults to the new config\r\n                    details[_DYN_SET_DF /* @min:%2esetDf */](theConfig, defaultConfig);\r\n                }, true);\r\n                // Now execute all of the listeners (synchronously) so they update their values immediately\r\n                _configHandler[_DYN_NOTIFY /* @min:%2enotify */]();\r\n                if (updateState) {\r\n                    _doUpdate(updateState);\r\n                }\r\n            };\r\n            _self.evtNamespace = function () {\r\n                return _evtNamespace;\r\n            };\r\n            _self.flush = _flushChannels;\r\n            _self.getTraceCtx = function (createNew) {\r\n                if (!_traceCtx) {\r\n                    _traceCtx = createDistributedTraceContext();\r\n                }\r\n                return _traceCtx;\r\n            };\r\n            _self.setTraceCtx = function (traceCtx) {\r\n                _traceCtx = traceCtx || null;\r\n            };\r\n            _self.addUnloadHook = _addUnloadHook;\r\n            // Create the addUnloadCb\r\n            proxyFunctionAs(_self, \"addUnloadCb\", function () { return _unloadHandlers; }, \"add\");\r\n            _self.onCfgChange = function (handler) {\r\n                var unloadHook;\r\n                if (!_isInitialized) {\r\n                    unloadHook = _addDelayedCfgListener(_cfgListeners, handler);\r\n                }\r\n                else {\r\n                    unloadHook = onConfigChange(_configHandler.cfg, handler, _self[_DYN_LOGGER /* @min:%2elogger */]);\r\n                }\r\n                return _createUnloadHook(unloadHook);\r\n            };\r\n            _self.getWParam = function () {\r\n                return (hasDocument() || !!_configHandler.cfg.enableWParam) ? 0 : -1;\r\n            };\r\n            function _setPluginVersions() {\r\n                var thePlugins = {};\r\n                _pluginVersionStringArr = [];\r\n                var _addPluginVersions = function (plugins) {\r\n                    if (plugins) {\r\n                        arrForEach(plugins, function (plugin) {\r\n                            if (plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] && plugin[_DYN_VERSION /* @min:%2eversion */] && !thePlugins[plugin.identifier]) {\r\n                                var ver = plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"=\" + plugin[_DYN_VERSION /* @min:%2eversion */];\r\n                                _pluginVersionStringArr[_DYN_PUSH /* @min:%2epush */](ver);\r\n                                thePlugins[plugin.identifier] = plugin;\r\n                            }\r\n                        });\r\n                    }\r\n                };\r\n                _addPluginVersions(_channels);\r\n                if (_channelConfig) {\r\n                    arrForEach(_channelConfig, function (channels) {\r\n                        _addPluginVersions(channels);\r\n                    });\r\n                }\r\n                _addPluginVersions(_configExtensions);\r\n            }\r\n            function _initDefaults() {\r\n                _isInitialized = false;\r\n                // Use a default logger so initialization errors are not dropped on the floor with full logging\r\n                _configHandler = createDynamicConfig({}, defaultConfig, _self[_DYN_LOGGER /* @min:%2elogger */]);\r\n                // Set the logging level to critical so that any critical initialization failures are displayed on the console\r\n                _configHandler.cfg[_DYN_LOGGING_LEVEL_CONSOL4 /* @min:%2eloggingLevelConsole */] = 1 /* eLoggingSeverity.CRITICAL */;\r\n                // Define _self.config\r\n                objDefine(_self, \"config\", {\r\n                    g: function () { return _configHandler.cfg; },\r\n                    s: function (newValue) {\r\n                        _self.updateCfg(newValue, false);\r\n                    }\r\n                });\r\n                objDefine(_self, \"pluginVersionStringArr\", {\r\n                    g: function () {\r\n                        if (!_pluginVersionStringArr) {\r\n                            _setPluginVersions();\r\n                        }\r\n                        return _pluginVersionStringArr;\r\n                    }\r\n                });\r\n                objDefine(_self, \"pluginVersionString\", {\r\n                    g: function () {\r\n                        if (!_pluginVersionString) {\r\n                            if (!_pluginVersionStringArr) {\r\n                                _setPluginVersions();\r\n                            }\r\n                            _pluginVersionString = _pluginVersionStringArr.join(\";\");\r\n                        }\r\n                        return _pluginVersionString || STR_EMPTY;\r\n                    }\r\n                });\r\n                objDefine(_self, \"logger\", {\r\n                    g: function () {\r\n                        if (!_logger) {\r\n                            _logger = new DiagnosticLogger(_configHandler.cfg);\r\n                            _configHandler[_DYN_LOGGER /* @min:%2elogger */] = _logger;\r\n                        }\r\n                        return _logger;\r\n                    },\r\n                    s: function (newLogger) {\r\n                        _configHandler[_DYN_LOGGER /* @min:%2elogger */] = newLogger;\r\n                        if (_logger !== newLogger) {\r\n                            runTargetUnload(_logger, false);\r\n                            _logger = newLogger;\r\n                        }\r\n                    }\r\n                });\r\n                _self[_DYN_LOGGER /* @min:%2elogger */] = new DiagnosticLogger(_configHandler.cfg);\r\n                _extensions = [];\r\n                var cfgExtensions = _self.config[STR_EXTENSIONS /* @min:%2eextensions */] || [];\r\n                cfgExtensions.splice(0, cfgExtensions[_DYN_LENGTH /* @min:%2elength */]);\r\n                arrAppend(cfgExtensions, _extensions);\r\n                _telemetryInitializerPlugin = new TelemetryInitializerPlugin();\r\n                _eventQueue = [];\r\n                runTargetUnload(_notificationManager, false);\r\n                _notificationManager = null;\r\n                _perfManager = null;\r\n                _cfgPerfManager = null;\r\n                runTargetUnload(_cookieManager, false);\r\n                _cookieManager = null;\r\n                _pluginChain = null;\r\n                _configExtensions = [];\r\n                _channelConfig = null;\r\n                _channels = null;\r\n                _isUnloading = false;\r\n                _internalLogsEventName = null;\r\n                _evtNamespace = createUniqueNamespace(\"AIBaseCore\", true);\r\n                _unloadHandlers = createUnloadHandlerContainer();\r\n                _traceCtx = null;\r\n                _instrumentationKey = null;\r\n                _hookContainer = createUnloadHookContainer();\r\n                _cfgListeners = [];\r\n                _pluginVersionString = null;\r\n                _pluginVersionStringArr = null;\r\n                _forceStopInternalLogPoller = false;\r\n                _internalLogPoller = null;\r\n                _internalLogPollerListening = false;\r\n                _activeStatus = 0 /* eActiveStatus.NONE */; // default is None\r\n                _endpoint = null;\r\n                _initInMemoMaxSize = null;\r\n                _isStatusSet = false;\r\n                _initTimer = null;\r\n            }\r\n            function _createTelCtx() {\r\n                var theCtx = createProcessTelemetryContext(_getPluginChain(), _configHandler.cfg, _self);\r\n                theCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](_startLogPoller);\r\n                return theCtx;\r\n            }\r\n            // Initialize or Re-initialize the plugins\r\n            function _initPluginChain(updateState) {\r\n                // Extension validation\r\n                var theExtensions = _validateExtensions(_self[_DYN_LOGGER /* @min:%2elogger */], ChannelControllerPriority, _configExtensions);\r\n                _pluginChain = null;\r\n                _pluginVersionString = null;\r\n                _pluginVersionStringArr = null;\r\n                // Get the primary channel queue and include as part of the normal extensions\r\n                _channels = (_channelConfig || [])[0] || [];\r\n                // Add any channels provided in the extensions and sort them\r\n                _channels = sortPlugins(arrAppend(_channels, theExtensions[STR_CHANNELS /* @min:%2echannels */]));\r\n                // Create an array of all extensions, including the _channels\r\n                var allExtensions = arrAppend(sortPlugins(theExtensions[STR_CORE /* @min:%2ecore */]), _channels);\r\n                // Required to allow plugins to call core.getPlugin() during their own initialization\r\n                _extensions = objFreeze(allExtensions);\r\n                // This has a side effect of adding the extensions passed during initialization\r\n                // into the config.extensions, so you can see all of the extensions loaded.\r\n                // This will also get updated by the addPlugin() and remove plugin code.\r\n                var cfgExtensions = _self.config[STR_EXTENSIONS /* @min:%2eextensions */] || [];\r\n                cfgExtensions.splice(0, cfgExtensions[_DYN_LENGTH /* @min:%2elength */]);\r\n                arrAppend(cfgExtensions, _extensions);\r\n                var rootCtx = _createTelCtx();\r\n                // Initializing the channels first\r\n                if (_channels && _channels[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    initializePlugins(rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](_channels), allExtensions);\r\n                }\r\n                // Now initialize the normal extensions (explicitly not including the _channels as this can cause duplicate initialization)\r\n                initializePlugins(rootCtx, allExtensions);\r\n                if (updateState) {\r\n                    _doUpdate(updateState);\r\n                }\r\n            }\r\n            function _getPlugin(pluginIdentifier) {\r\n                var theExt = null;\r\n                var thePlugin = null;\r\n                var channelHosts = [];\r\n                arrForEach(_extensions, function (ext) {\r\n                    if (ext[_DYN_IDENTIFIER /* @min:%2eidentifier */] === pluginIdentifier && ext !== _telemetryInitializerPlugin) {\r\n                        thePlugin = ext;\r\n                        return -1;\r\n                    }\r\n                    if (ext.getChannel) {\r\n                        channelHosts[_DYN_PUSH /* @min:%2epush */](ext);\r\n                    }\r\n                });\r\n                if (!thePlugin && channelHosts[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    arrForEach(channelHosts, function (host) {\r\n                        thePlugin = host.getChannel(pluginIdentifier);\r\n                        if (!thePlugin) {\r\n                            return -1;\r\n                        }\r\n                    });\r\n                }\r\n                if (thePlugin) {\r\n                    theExt = {\r\n                        plugin: thePlugin,\r\n                        setEnabled: function (enabled) {\r\n                            _getPluginState(thePlugin)[STR_DISABLED] = !enabled;\r\n                        },\r\n                        isEnabled: function () {\r\n                            var pluginState = _getPluginState(thePlugin);\r\n                            return !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] && !pluginState[STR_DISABLED];\r\n                        },\r\n                        remove: function (isAsync, removeCb) {\r\n                            var _a;\r\n                            if (isAsync === void 0) { isAsync = true; }\r\n                            var pluginsToRemove = [thePlugin];\r\n                            var unloadState = (_a = {\r\n                                    reason: 1 /* TelemetryUnloadReason.PluginUnload */\r\n                                },\r\n                                _a[_DYN_IS_ASYNC /* @min:isAsync */] = isAsync,\r\n                                _a);\r\n                            _removePlugins(pluginsToRemove, unloadState, function (removed) {\r\n                                if (removed) {\r\n                                    // Re-Initialize the plugin chain\r\n                                    _initPluginChain({\r\n                                        reason: 32 /* TelemetryUpdateReason.PluginRemoved */,\r\n                                        removed: pluginsToRemove\r\n                                    });\r\n                                }\r\n                                removeCb && removeCb(removed);\r\n                            });\r\n                        }\r\n                    };\r\n                }\r\n                return theExt;\r\n            }\r\n            function _getPluginChain() {\r\n                if (!_pluginChain) {\r\n                    // copy the collection of extensions\r\n                    var extensions = (_extensions || []).slice();\r\n                    // During add / remove this may get called again, so don't read if already present\r\n                    if (arrIndexOf(extensions, _telemetryInitializerPlugin) === -1) {\r\n                        extensions[_DYN_PUSH /* @min:%2epush */](_telemetryInitializerPlugin);\r\n                    }\r\n                    _pluginChain = createTelemetryProxyChain(sortPlugins(extensions), _configHandler.cfg, _self);\r\n                }\r\n                return _pluginChain;\r\n            }\r\n            function _removePlugins(thePlugins, unloadState, removeComplete) {\r\n                if (thePlugins && thePlugins[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    var unloadChain = createTelemetryProxyChain(thePlugins, _configHandler.cfg, _self);\r\n                    var unloadCtx = createProcessTelemetryUnloadContext(unloadChain, _self);\r\n                    unloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {\r\n                        var removed = false;\r\n                        // Remove the listed config extensions\r\n                        var newConfigExtensions = [];\r\n                        arrForEach(_configExtensions, function (plugin, idx) {\r\n                            if (!_isPluginPresent(plugin, thePlugins)) {\r\n                                newConfigExtensions[_DYN_PUSH /* @min:%2epush */](plugin);\r\n                            }\r\n                            else {\r\n                                removed = true;\r\n                            }\r\n                        });\r\n                        _configExtensions = newConfigExtensions;\r\n                        _pluginVersionString = null;\r\n                        _pluginVersionStringArr = null;\r\n                        // Re-Create the channel config\r\n                        var newChannelConfig = [];\r\n                        if (_channelConfig) {\r\n                            arrForEach(_channelConfig, function (queue, idx) {\r\n                                var newQueue = [];\r\n                                arrForEach(queue, function (channel) {\r\n                                    if (!_isPluginPresent(channel, thePlugins)) {\r\n                                        newQueue[_DYN_PUSH /* @min:%2epush */](channel);\r\n                                    }\r\n                                    else {\r\n                                        removed = true;\r\n                                    }\r\n                                });\r\n                                newChannelConfig[_DYN_PUSH /* @min:%2epush */](newQueue);\r\n                            });\r\n                            _channelConfig = newChannelConfig;\r\n                        }\r\n                        removeComplete && removeComplete(removed);\r\n                        _startLogPoller();\r\n                    });\r\n                    unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n                }\r\n                else {\r\n                    removeComplete(false);\r\n                }\r\n            }\r\n            function _flushInternalLogs() {\r\n                if (_logger && _logger.queue) {\r\n                    var queue = _logger.queue.slice(0);\r\n                    _logger.queue[_DYN_LENGTH /* @min:%2elength */] = 0;\r\n                    arrForEach(queue, function (logMessage) {\r\n                        var _a;\r\n                        var item = (_a = {},\r\n                            _a[_DYN_NAME /* @min:name */] = _internalLogsEventName ? _internalLogsEventName : \"InternalMessageId: \" + logMessage[_DYN_MESSAGE_ID /* @min:%2emessageId */],\r\n                            _a[_DYN_I_KEY /* @min:iKey */] = _instrumentationKey,\r\n                            _a[_DYN_TIME /* @min:time */] = toISOString(new Date()),\r\n                            _a.baseType = _InternalLogMessage.dataType,\r\n                            _a.baseData = { message: logMessage[_DYN_MESSAGE /* @min:%2emessage */] },\r\n                            _a);\r\n                        _self.track(item);\r\n                    });\r\n                }\r\n            }\r\n            function _flushChannels(isAsync, callBack, sendReason, cbTimeout) {\r\n                // Setting waiting to one so that we don't call the callBack until we finish iterating\r\n                var waiting = 1;\r\n                var doneIterating = false;\r\n                var cbTimer = null;\r\n                cbTimeout = cbTimeout || 5000;\r\n                function doCallback() {\r\n                    waiting--;\r\n                    if (doneIterating && waiting === 0) {\r\n                        cbTimer && cbTimer[_DYN_CANCEL /* @min:%2ecancel */]();\r\n                        cbTimer = null;\r\n                        callBack && callBack(doneIterating);\r\n                        callBack = null;\r\n                    }\r\n                }\r\n                if (_channels && _channels[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                    var flushCtx = _createTelCtx()[_DYN_CREATE_NEW /* @min:%2ecreateNew */](_channels);\r\n                    flushCtx.iterate(function (plugin) {\r\n                        if (plugin.flush) {\r\n                            waiting++;\r\n                            var handled_1 = false;\r\n                            // Not all channels will call this callback for every scenario\r\n                            if (!plugin.flush(isAsync, function () {\r\n                                handled_1 = true;\r\n                                doCallback();\r\n                            }, sendReason)) {\r\n                                if (!handled_1) {\r\n                                    // If any channel doesn't return true and it didn't call the callback, then we should assume that the callback\r\n                                    // will never be called, so use a timeout to allow the channel(s) some time to \"finish\" before triggering any\r\n                                    // followup function (such as unloading)\r\n                                    if (isAsync && cbTimer == null) {\r\n                                        cbTimer = scheduleTimeout(function () {\r\n                                            cbTimer = null;\r\n                                            doCallback();\r\n                                        }, cbTimeout);\r\n                                    }\r\n                                    else {\r\n                                        doCallback();\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                    });\r\n                }\r\n                doneIterating = true;\r\n                doCallback();\r\n                return true;\r\n            }\r\n            function _initPerfManager() {\r\n                // Save the previous config based performance manager creator to avoid creating new perf manager instances if unchanged\r\n                var prevCfgPerfMgr;\r\n                // Will get recalled if any referenced config values are changed\r\n                _addUnloadHook(_configHandler[_DYN_WATCH /* @min:%2ewatch */](function (details) {\r\n                    var enablePerfMgr = details.cfg.enablePerfMgr;\r\n                    if (enablePerfMgr) {\r\n                        var createPerfMgr = details.cfg[STR_CREATE_PERF_MGR /* @min:%2ecreatePerfMgr */];\r\n                        // for preCfgPerfMgr = createPerfMgr = null\r\n                        // initial createPerfMgr function should be _createPerfManager\r\n                        if ((prevCfgPerfMgr !== createPerfMgr) || !prevCfgPerfMgr) {\r\n                            if (!createPerfMgr) {\r\n                                createPerfMgr = _createPerfManager;\r\n                            }\r\n                            // Set the performance manager creation function if not defined\r\n                            getSetValue(details.cfg, STR_CREATE_PERF_MGR, createPerfMgr);\r\n                            prevCfgPerfMgr = createPerfMgr;\r\n                            // Remove any existing config based performance manager\r\n                            _cfgPerfManager = null;\r\n                        }\r\n                        // Only create the performance manager if it's not already created or manually set\r\n                        if (!_perfManager && !_cfgPerfManager && isFunction(createPerfMgr)) {\r\n                            // Create a new config based performance manager\r\n                            _cfgPerfManager = createPerfMgr(_self, _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */]());\r\n                        }\r\n                    }\r\n                    else {\r\n                        // Remove any existing config based performance manager\r\n                        _cfgPerfManager = null;\r\n                        // Clear the previous cached value so it can be GC'd\r\n                        prevCfgPerfMgr = null;\r\n                    }\r\n                }));\r\n            }\r\n            function _doUpdate(updateState) {\r\n                var updateCtx = createProcessTelemetryUpdateContext(_getPluginChain(), _self);\r\n                updateCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](_startLogPoller);\r\n                if (!_self._updateHook || _self._updateHook(updateCtx, updateState) !== true) {\r\n                    updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](updateState);\r\n                }\r\n            }\r\n            function _logOrThrowError(message) {\r\n                var logger = _self[_DYN_LOGGER /* @min:%2elogger */];\r\n                if (logger) {\r\n                    // there should always be a logger\r\n                    _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, message);\r\n                    _startLogPoller();\r\n                }\r\n                else {\r\n                    throwError(message);\r\n                }\r\n            }\r\n            function _notifyInvalidEvent(telemetryItem) {\r\n                var manager = _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */]();\r\n                if (manager) {\r\n                    manager[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */]([telemetryItem], 2 /* eEventsDiscardedReason.InvalidEvent */);\r\n                }\r\n            }\r\n            function _addUnloadHook(hooks) {\r\n                _hookContainer.add(hooks);\r\n            }\r\n        });\r\n    }\r\n// Removed Stub for AppInsightsCore.prototype.initialize.\r\n// Removed Stub for AppInsightsCore.prototype.getChannels.\r\n// Removed Stub for AppInsightsCore.prototype.track.\r\n// Removed Stub for AppInsightsCore.prototype.getProcessTelContext.\r\n// Removed Stub for AppInsightsCore.prototype.getNotifyMgr.\r\n// Removed Stub for AppInsightsCore.prototype.addNotificationListener.\r\n// Removed Stub for AppInsightsCore.prototype.removeNotificationListener.\r\n// Removed Stub for AppInsightsCore.prototype.getCookieMgr.\r\n// Removed Stub for AppInsightsCore.prototype.setCookieMgr.\r\n// Removed Stub for AppInsightsCore.prototype.getPerfMgr.\r\n// Removed Stub for AppInsightsCore.prototype.setPerfMgr.\r\n// Removed Stub for AppInsightsCore.prototype.eventCnt.\r\n// Removed Stub for AppInsightsCore.prototype.pollInternalLogs.\r\n// Removed Stub for AppInsightsCore.prototype.stopPollingInternalLogs.\r\n// Removed Stub for AppInsightsCore.prototype.addTelemetryInitializer.\r\n// Removed Stub for AppInsightsCore.prototype.unload.\r\n// Removed Stub for AppInsightsCore.prototype.getPlugin.\r\n// Removed Stub for AppInsightsCore.prototype.addPlugin.\r\n// Removed Stub for AppInsightsCore.prototype.updateCfg.\r\n// Removed Stub for AppInsightsCore.prototype.evtNamespace.\r\n// Removed Stub for AppInsightsCore.prototype.addUnloadCb.\r\n// Removed Stub for AppInsightsCore.prototype.flush.\r\n// Removed Stub for AppInsightsCore.prototype.getTraceCtx.\r\n// Removed Stub for AppInsightsCore.prototype.setTraceCtx.\r\n// Removed Stub for AppInsightsCore.prototype.addUnloadHook.\r\n// Removed Stub for AppInsightsCore.prototype.onCfgChange.\r\n// Removed Stub for AppInsightsCore.prototype.activeStatus.\r\n// Removed Stub for AppInsightsCore.prototype._setPendingStatus.\r\n// Removed Stub for AppInsightsCore.prototype.releaseQueue.\r\n// Removed Stub for AppInsightsCore.prototype._updateHook.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    AppInsightsCore.__ieDyn=1;\n\n    return AppInsightsCore;\r\n}());\r\nexport { AppInsightsCore };\r\n//# sourceMappingURL=AppInsightsCore.js.map","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// ###################################################################################################################################################\r\n// Note: DON'T Export these const from the package as we are still targeting IE/ES5 this will export a mutable variables that someone could change ###\r\n// ###################################################################################################################################################\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nexport var STR_DURATION = \"duration\";\r\nexport var STR_PROPERTIES = \"properties\";\r\n//# sourceMappingURL=InternalConstants.js.map","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_REQUEST_URL = \"requestUrl\"; // Count: 11\r\nexport var _DYN_INST = \"inst\"; // Count: 5\r\nexport var _DYN_LENGTH = \"length\"; // Count: 8\r\nexport var _DYN_TRACE_ID = \"traceID\"; // Count: 9\r\nexport var _DYN_SPAN_ID = \"spanID\"; // Count: 8\r\nexport var _DYN_TRACE_FLAGS = \"traceFlags\"; // Count: 13\r\nexport var _DYN_CONTEXT = \"context\"; // Count: 7\r\nexport var _DYN_ABORTED = \"aborted\"; // Count: 7\r\nexport var _DYN_TRACE_ID0 = \"traceId\"; // Count: 5\r\nexport var _DYN_SPAN_ID1 = \"spanId\"; // Count: 5\r\nexport var _DYN__ADD_HOOK = \"_addHook\"; // Count: 4\r\nexport var _DYN_CORE = \"core\"; // Count: 8\r\nexport var _DYN_INCLUDE_CORRELATION_2 = \"includeCorrelationHeaders\"; // Count: 4\r\nexport var _DYN_GET_ABSOLUTE_URL = \"getAbsoluteUrl\"; // Count: 3\r\nexport var _DYN_HEADERS = \"headers\"; // Count: 6\r\nexport var _DYN_REQUEST_HEADERS = \"requestHeaders\"; // Count: 13\r\nexport var _DYN_SET_REQUEST_HEADER = \"setRequestHeader\"; // Count: 3\r\nexport var _DYN_TRACK_DEPENDENCY_DAT3 = \"trackDependencyDataInternal\"; // Count: 2\r\nexport var _DYN_START_TIME = \"startTime\"; // Count: 6\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 6\r\nexport var _DYN_ENABLE_REQUEST_HEADE4 = \"enableRequestHeaderTracking\"; // Count: 3\r\nexport var _DYN_ENABLE_AJAX_ERROR_ST5 = \"enableAjaxErrorStatusText\"; // Count: 2\r\nexport var _DYN_ENABLE_AJAX_PERF_TRA6 = \"enableAjaxPerfTracking\"; // Count: 2\r\nexport var _DYN_MAX_AJAX_CALLS_PER_V7 = \"maxAjaxCallsPerView\"; // Count: 2\r\nexport var _DYN_EXCLUDE_REQUEST_FROM8 = \"excludeRequestFromAutoTrackingPatterns\"; // Count: 2\r\nexport var _DYN_ADD_REQUEST_CONTEXT = \"addRequestContext\"; // Count: 2\r\nexport var _DYN_DISABLE_AJAX_TRACKIN9 = \"disableAjaxTracking\"; // Count: 3\r\nexport var _DYN_AJAX_PERF_LOOKUP_DEL10 = \"ajaxPerfLookupDelay\"; // Count: 2\r\nexport var _DYN_DISABLE_FETCH_TRACKI11 = \"disableFetchTracking\"; // Count: 2\r\nexport var _DYN_ENABLE_RESPONSE_HEAD12 = \"enableResponseHeaderTracking\"; // Count: 2\r\nexport var _DYN_STATUS = \"status\"; // Count: 11\r\nexport var _DYN_STATUS_TEXT = \"statusText\"; // Count: 9\r\nexport var _DYN_HEADER_MAP = \"headerMap\"; // Count: 8\r\nexport var _DYN_OPEN_DONE = \"openDone\"; // Count: 3\r\nexport var _DYN_SEND_DONE = \"sendDone\"; // Count: 3\r\nexport var _DYN_REQUEST_SENT_TIME = \"requestSentTime\"; // Count: 9\r\nexport var _DYN_ABORT_DONE = \"abortDone\"; // Count: 3\r\nexport var _DYN_GET_TRACE_ID = \"getTraceId\"; // Count: 3\r\nexport var _DYN_GET_TRACE_FLAGS = \"getTraceFlags\"; // Count: 3\r\nexport var _DYN_METHOD = \"method\"; // Count: 8\r\nexport var _DYN_ERROR_STATUS_TEXT = \"errorStatusText\"; // Count: 3\r\nexport var _DYN_STATE_CHANGE_ATTACHE13 = \"stateChangeAttached\"; // Count: 2\r\nexport var _DYN_RESPONSE_TEXT = \"responseText\"; // Count: 6\r\nexport var _DYN_RESPONSE_FINISHED_TI14 = \"responseFinishedTime\"; // Count: 7\r\nexport var _DYN__CREATE_TRACK_ITEM = \"CreateTrackItem\"; // Count: 3\r\nexport var _DYN_RESPONSE = \"response\"; // Count: 4\r\nexport var _DYN_GET_ALL_RESPONSE_HEA15 = \"getAllResponseHeaders\"; // Count: 2\r\nexport var _DYN_GET_PART_APROPS = \"getPartAProps\"; // Count: 3\r\nexport var _DYN_PERF_MARK = \"perfMark\"; // Count: 4\r\nexport var _DYN_NAME = \"name\"; // Count: 6\r\nexport var _DYN_PERF_TIMING = \"perfTiming\"; // Count: 3\r\nexport var _DYN_EXCEPTION = \"exception\"; // Count: 5\r\nexport var _DYN_AJAX_DIAGNOSTICS_MES16 = \"ajaxDiagnosticsMessage\"; // Count: 3\r\nexport var _DYN_CORRELATION_CONTEXT = \"correlationContext\"; // Count: 3\r\nexport var _DYN_AJAX_TOTAL_DURATION = \"ajaxTotalDuration\"; // Count: 3\r\nexport var _DYN_EVENT_TRACE_CTX = \"eventTraceCtx\"; // Count: 3\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { Extensions, dataSanitizeUrl, dateTimeUtilsDuration, msToTimeSpan, urlGetAbsoluteUrl, urlGetCompleteUrl } from \"@microsoft/applicationinsights-common\";\r\nimport { arrForEach, isNullOrUndefined, isNumber, isString, normalizeJsName, objForEachKey, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_DURATION, STR_PROPERTIES } from \"./InternalConstants\";\r\nimport { _DYN_ABORTED, _DYN_ABORT_DONE, _DYN_AJAX_TOTAL_DURATION, _DYN_CORRELATION_CONTEXT, _DYN_ERROR_STATUS_TEXT, _DYN_EVENT_TRACE_CTX, _DYN_GET_ABSOLUTE_URL, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADER_MAP, _DYN_LENGTH, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI14, _DYN_SEND_DONE, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE13, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN__CREATE_TRACK_ITEM } from \"./__DynamicConstants\";\r\n/** @ignore */\r\nfunction _calcPerfDuration(resourceEntry, start, end) {\r\n    var result = 0;\r\n    var from = resourceEntry[start];\r\n    var to = resourceEntry[end];\r\n    if (from && to) {\r\n        result = dateTimeUtilsDuration(from, to);\r\n    }\r\n    return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfDuration(props, name, resourceEntry, start, end) {\r\n    var result = 0;\r\n    var value = _calcPerfDuration(resourceEntry, start, end);\r\n    if (value) {\r\n        result = _setPerfValue(props, name, msToTimeSpan(value));\r\n    }\r\n    return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfValue(props, name, value) {\r\n    var strPerf = \"ajaxPerf\";\r\n    var result = 0;\r\n    if (props && name && value) {\r\n        var perfData = props[strPerf] = (props[strPerf] || {});\r\n        perfData[name] = value;\r\n        result = 1;\r\n    }\r\n    return result;\r\n}\r\n/** @ignore */\r\nfunction _populatePerfData(ajaxData, dependency) {\r\n    /*\r\n    * https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API\r\n    *  | -startTime\r\n    *  | -redirectStart\r\n    *  |            | -redirectEnd\r\n    *  |            | | -fetchStart\r\n    *  |            | |   | -domainLookupStart\r\n    *  |            | |   |                |- domainLookupEnd\r\n    *  |            | |   |                | | -connectStart\r\n    *  |            | |   |                | |  | -secureConnectionStart\r\n    *  |            | |   |                | |  |        | -connectEnd\r\n    *  |            | |   |                | |  |        | | -requestStart\r\n    *  |            | |   |                | |  |        | |           | | -responseStart\r\n    *  |            | |   |                | |  |        | |           | |            | | -responseEnd\r\n    *  +------------+-+---+----------------+-+--+--------+-+-----------+-+------------+-+\r\n    *  |--redirect--| |---|--domainLookup--| |--connect--| |--request--| |--response--| |\r\n    *  |-------------------networkConnect----------------|\r\n    *  |                                                   |---------sentRequest--------|\r\n    *  |------------------------------------perfTotal-----------------------------------|\r\n    */\r\n    var resourceEntry = ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */];\r\n    var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n    var propsSet = 0;\r\n    var strName = \"name\";\r\n    var strStart = \"Start\";\r\n    var strEnd = \"End\";\r\n    var strDomainLookup = \"domainLookup\";\r\n    var strConnect = \"connect\";\r\n    var strRedirect = \"redirect\";\r\n    var strRequest = \"request\";\r\n    var strResponse = \"response\";\r\n    var strStartTime = \"startTime\";\r\n    var strDomainLookupStart = strDomainLookup + strStart;\r\n    var strDomainLookupEnd = strDomainLookup + strEnd;\r\n    var strConnectStart = strConnect + strStart;\r\n    var strConnectEnd = strConnect + strEnd;\r\n    var strRequestStart = strRequest + strStart;\r\n    var strRequestEnd = strRequest + strEnd;\r\n    var strResponseStart = strResponse + strStart;\r\n    var strResponseEnd = strResponse + strEnd;\r\n    var strRedirectStart = strRedirect + strStart;\r\n    var strRedirectEnd = strRedirect = strEnd;\r\n    var strTransferSize = \"transferSize\";\r\n    var strEncodedBodySize = \"encodedBodySize\";\r\n    var strDecodedBodySize = \"decodedBodySize\";\r\n    var strServerTiming = \"serverTiming\";\r\n    if (resourceEntry) {\r\n        // redirect\r\n        propsSet |= _setPerfDuration(props, strRedirect, resourceEntry, strRedirectStart, strRedirectEnd);\r\n        // domainLookup\r\n        propsSet |= _setPerfDuration(props, strDomainLookup, resourceEntry, strDomainLookupStart, strDomainLookupEnd);\r\n        // connect\r\n        propsSet |= _setPerfDuration(props, strConnect, resourceEntry, strConnectStart, strConnectEnd);\r\n        // request\r\n        propsSet |= _setPerfDuration(props, strRequest, resourceEntry, strRequestStart, strRequestEnd);\r\n        // response\r\n        propsSet |= _setPerfDuration(props, strResponse, resourceEntry, strResponseStart, strResponseEnd);\r\n        // Network connection time\r\n        propsSet |= _setPerfDuration(props, \"networkConnect\", resourceEntry, strStartTime, strConnectEnd);\r\n        // Sent Request\r\n        propsSet |= _setPerfDuration(props, \"sentRequest\", resourceEntry, strRequestStart, strResponseEnd);\r\n        // PerfTotal / Duration\r\n        var duration = resourceEntry[STR_DURATION /* @min:%2eduration */];\r\n        if (!duration) {\r\n            duration = _calcPerfDuration(resourceEntry, strStartTime, strResponseEnd) || 0;\r\n        }\r\n        propsSet |= _setPerfValue(props, STR_DURATION, duration);\r\n        propsSet |= _setPerfValue(props, \"perfTotal\", duration);\r\n        var serverTiming = resourceEntry[strServerTiming];\r\n        if (serverTiming) {\r\n            var server_1 = {};\r\n            arrForEach(serverTiming, function (value, idx) {\r\n                var name = normalizeJsName(value[strName] || \"\" + idx);\r\n                var newValue = server_1[name] || {};\r\n                objForEachKey(value, function (key, val) {\r\n                    if (key !== strName && isString(val) || isNumber(val)) {\r\n                        if (newValue[key]) {\r\n                            val = newValue[key] + \";\" + val;\r\n                        }\r\n                        if (val || !isString(val)) {\r\n                            // Only set the value if it has a value and it's not an empty string\r\n                            newValue[key] = val;\r\n                        }\r\n                    }\r\n                });\r\n                server_1[name] = newValue;\r\n            });\r\n            propsSet |= _setPerfValue(props, strServerTiming, server_1);\r\n        }\r\n        propsSet |= _setPerfValue(props, strTransferSize, resourceEntry[strTransferSize]);\r\n        propsSet |= _setPerfValue(props, strEncodedBodySize, resourceEntry[strEncodedBodySize]);\r\n        propsSet |= _setPerfValue(props, strDecodedBodySize, resourceEntry[strDecodedBodySize]);\r\n    }\r\n    else {\r\n        if (ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */]) {\r\n            propsSet |= _setPerfValue(props, \"missing\", ajaxData.perfAttempts);\r\n        }\r\n    }\r\n    if (propsSet) {\r\n        dependency[STR_PROPERTIES /* @min:%2eproperties */] = props;\r\n    }\r\n}\r\nvar XHRMonitoringState = /** @class */ (function () {\r\n    function XHRMonitoringState() {\r\n        var self = this;\r\n        self[_DYN_OPEN_DONE /* @min:%2eopenDone */] = false;\r\n        self.setRequestHeaderDone = false;\r\n        self[_DYN_SEND_DONE /* @min:%2esendDone */] = false;\r\n        self[_DYN_ABORT_DONE /* @min:%2eabortDone */] = false;\r\n        // <summary>True, if onreadyStateChangeCallback function attached to xhr, otherwise false</summary>\r\n        self[_DYN_STATE_CHANGE_ATTACHE13 /* @min:%2estateChangeAttached */] = false;\r\n    }\r\n    return XHRMonitoringState;\r\n}());\r\nexport { XHRMonitoringState };\r\nvar ajaxRecord = /** @class */ (function () {\r\n    function ajaxRecord(traceId, spanId, logger, traceCtx) {\r\n        var _a;\r\n        var self = this;\r\n        var _logger = logger;\r\n        var strResponseText = \"responseText\";\r\n        // Assigning the initial/default values within the constructor to avoid typescript from creating a bunch of\r\n        // this.XXXX = null\r\n        self[_DYN_PERF_MARK /* @min:%2eperfMark */] = null;\r\n        self.completed = false;\r\n        self.requestHeadersSize = null;\r\n        self[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = null;\r\n        self.responseReceivingDuration = null;\r\n        self.callbackDuration = null;\r\n        self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */] = null;\r\n        self[_DYN_ABORTED /* @min:%2eaborted */] = 0;\r\n        self.pageUrl = null;\r\n        self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = null;\r\n        self.requestSize = 0;\r\n        self[_DYN_METHOD /* @min:%2emethod */] = null;\r\n        self[_DYN_STATUS /* @min:%2estatus */] = null;\r\n        self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = null;\r\n        self.responseStartedTime = null;\r\n        self[_DYN_RESPONSE_FINISHED_TI14 /* @min:%2eresponseFinishedTime */] = null;\r\n        self.callbackFinishedTime = null;\r\n        self.endTime = null;\r\n        self.xhrMonitoringState = new XHRMonitoringState();\r\n        self.clientFailure = 0;\r\n        self[_DYN_TRACE_ID /* @min:%2etraceID */] = traceId;\r\n        self[_DYN_SPAN_ID /* @min:%2espanID */] = spanId;\r\n        self[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = traceCtx === null || traceCtx === void 0 ? void 0 : traceCtx.getTraceFlags();\r\n        if (traceCtx) {\r\n            self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */] = (_a = {},\r\n                _a[_DYN_TRACE_ID0 /* @min:traceId */] = traceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */](),\r\n                _a[_DYN_SPAN_ID1 /* @min:spanId */] = traceCtx.getSpanId(),\r\n                _a[_DYN_TRACE_FLAGS /* @min:traceFlags */] = traceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */](),\r\n                _a);\r\n        }\r\n        else {\r\n            self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */] = null;\r\n        }\r\n        dynamicProto(ajaxRecord, self, function (self) {\r\n            self.getAbsoluteUrl = function () {\r\n                return self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] ? urlGetAbsoluteUrl(self[_DYN_REQUEST_URL /* @min:%2erequestUrl */]) : null;\r\n            };\r\n            self.getPathName = function () {\r\n                return self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] ? dataSanitizeUrl(_logger, urlGetCompleteUrl(self[_DYN_METHOD /* @min:%2emethod */], self[_DYN_REQUEST_URL /* @min:%2erequestUrl */])) : null;\r\n            };\r\n            self[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */] = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n                var _a;\r\n                // round to 3 decimal points\r\n                self.ajaxTotalDuration = Math.round(dateTimeUtilsDuration(self.requestSentTime, self.responseFinishedTime) * 1000) / 1000;\r\n                if (self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */] < 0) {\r\n                    return null;\r\n                }\r\n                var dependency = (_a = {\r\n                        id: \"|\" + self[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + self[_DYN_SPAN_ID /* @min:%2espanID */],\r\n                        target: self[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */]()\r\n                    },\r\n                    _a[_DYN_NAME /* @min:name */] = self.getPathName(),\r\n                    _a.type = ajaxType,\r\n                    _a[_DYN_START_TIME /* @min:startTime */] = null,\r\n                    _a.duration = self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */],\r\n                    _a.success = (+(self[_DYN_STATUS /* @min:%2estatus */])) >= 200 && (+(self[_DYN_STATUS /* @min:%2estatus */])) < 400,\r\n                    _a.responseCode = (+(self[_DYN_STATUS /* @min:%2estatus */])),\r\n                    _a[STR_PROPERTIES] = { HttpMethod: self[_DYN_METHOD /* @min:%2emethod */] },\r\n                    _a);\r\n                var props = dependency[STR_PROPERTIES];\r\n                if (self[_DYN_ABORTED /* @min:%2eaborted */]) {\r\n                    props[_DYN_ABORTED /* @min:%2eaborted */] = true;\r\n                }\r\n                if (self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */]) {\r\n                    // Set the correct dependency start time\r\n                    dependency[_DYN_START_TIME /* @min:%2estartTime */] = new Date();\r\n                    dependency[_DYN_START_TIME /* @min:%2estartTime */].setTime(self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */]);\r\n                }\r\n                // Add Ajax perf details if available\r\n                _populatePerfData(self, dependency);\r\n                if (enableRequestHeaderTracking) {\r\n                    if (objKeys(self.requestHeaders)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                        props[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = self[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */];\r\n                    }\r\n                }\r\n                if (getResponse) {\r\n                    var response = getResponse();\r\n                    if (response) {\r\n                        // enrich dependency target with correlation context from the server\r\n                        var correlationContext = response[_DYN_CORRELATION_CONTEXT /* @min:%2ecorrelationContext */];\r\n                        if (correlationContext) {\r\n                            dependency.correlationContext = /* dependency.target + \" | \" + */ correlationContext;\r\n                        }\r\n                        if (response[_DYN_HEADER_MAP /* @min:%2eheaderMap */]) {\r\n                            if (objKeys(response.headerMap)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                                props.responseHeaders = response[_DYN_HEADER_MAP /* @min:%2eheaderMap */];\r\n                            }\r\n                        }\r\n                        if (self[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */]) {\r\n                            if (self[_DYN_STATUS /* @min:%2estatus */] >= 400) {\r\n                                var responseType = response.type;\r\n                                if (responseType === \"\" || responseType === \"text\") {\r\n                                    props.responseText = response.responseText ? response[_DYN_STATUS_TEXT /* @min:%2estatusText */] + \" - \" + response[strResponseText] : response[_DYN_STATUS_TEXT /* @min:%2estatusText */];\r\n                                }\r\n                                if (responseType === \"json\") {\r\n                                    props.responseText = response.response ? response[_DYN_STATUS_TEXT /* @min:%2estatusText */] + \" - \" + JSON.stringify(response[_DYN_RESPONSE /* @min:%2eresponse */]) : response[_DYN_STATUS_TEXT /* @min:%2estatusText */];\r\n                                }\r\n                            }\r\n                            else if (self[_DYN_STATUS /* @min:%2estatus */] === 0) {\r\n                                props.responseText = response[_DYN_STATUS_TEXT /* @min:%2estatusText */] || \"\";\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                return dependency;\r\n            };\r\n            self[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */] = function () {\r\n                var _a;\r\n                var partA = null;\r\n                var traceCtx = self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */];\r\n                if (traceCtx && (traceCtx[_DYN_TRACE_ID0 /* @min:%2etraceId */] || traceCtx[_DYN_SPAN_ID1 /* @min:%2espanId */])) {\r\n                    partA = {};\r\n                    var traceExt = partA[Extensions.TraceExt] = (_a = {},\r\n                        _a[_DYN_TRACE_ID /* @min:traceID */] = traceCtx[_DYN_TRACE_ID0 /* @min:%2etraceId */],\r\n                        _a.parentID = traceCtx[_DYN_SPAN_ID1 /* @min:%2espanId */],\r\n                        _a);\r\n                    if (!isNullOrUndefined(traceCtx[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */])) {\r\n                        traceExt[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = traceCtx[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n                    }\r\n                }\r\n                return partA;\r\n            };\r\n        });\r\n    }\r\n// Removed Stub for ajaxRecord.prototype.getAbsoluteUrl.\r\n// Removed Stub for ajaxRecord.prototype.getPathName.\r\n// Removed Stub for ajaxRecord.prototype.CreateTrackItem.\r\n// Removed Stub for ajaxRecord.prototype.getPartAProps.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    ajaxRecord.__ieDyn=1;\n\n    return ajaxRecord;\r\n}());\r\nexport { ajaxRecord };\r\n//# sourceMappingURL=ajaxRecord.js.map","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar _a;\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { DisabledPropertyName, PropertiesPluginIdentifier, RemoteDependencyData, RequestHeaders, correlationIdCanIncludeCorrelationHeader, correlationIdGetCorrelationContext, createDistributedTraceContextFromTrace, createTelemetryItem, createTraceParent, dateTimeUtilsNow, formatTraceParent, isInternalApplicationInsightsEndpoint } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, InstrumentFunc, InstrumentProto, _throwInternal, arrForEach, createProcessTelemetryContext, createUniqueNamespace, dumpObj, eventOn, generateW3CId, getExceptionName, getGlobal, getIEVersion, getLocation, getPerformance, isFunction, isNullOrUndefined, isString, isXhrSupported, mergeEvtNamespace, onConfigChange, strPrototype, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { isWebWorker, objFreeze, scheduleTimeout, strIndexOf, strSplit, strSubstr } from \"@nevware21/ts-utils\";\r\nimport { STR_PROPERTIES } from \"./InternalConstants\";\r\nimport { _DYN_ABORTED, _DYN_ABORT_DONE, _DYN_ADD_REQUEST_CONTEXT, _DYN_AJAX_DIAGNOSTICS_MES16, _DYN_AJAX_PERF_LOOKUP_DEL10, _DYN_CONTEXT, _DYN_CORE, _DYN_CORRELATION_CONTEXT, _DYN_DISABLE_AJAX_TRACKIN9, _DYN_DISABLE_FETCH_TRACKI11, _DYN_ENABLE_AJAX_ERROR_ST5, _DYN_ENABLE_AJAX_PERF_TRA6, _DYN_ENABLE_REQUEST_HEADE4, _DYN_ENABLE_RESPONSE_HEAD12, _DYN_ERROR_STATUS_TEXT, _DYN_EXCEPTION, _DYN_EXCLUDE_REQUEST_FROM8, _DYN_GET_ABSOLUTE_URL, _DYN_GET_ALL_RESPONSE_HEA15, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADERS, _DYN_HEADER_MAP, _DYN_INCLUDE_CORRELATION_2, _DYN_INST, _DYN_LENGTH, _DYN_MAX_AJAX_CALLS_PER_V7, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI14, _DYN_RESPONSE_TEXT, _DYN_SEND_DONE, _DYN_SET_REQUEST_HEADER, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE13, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TO_LOWER_CASE, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN_TRACK_DEPENDENCY_DAT3, _DYN__ADD_HOOK, _DYN__CREATE_TRACK_ITEM } from \"./__DynamicConstants\";\r\nimport { ajaxRecord } from \"./ajaxRecord\";\r\nvar AJAX_MONITOR_PREFIX = \"ai.ajxmn.\";\r\nvar strDiagLog = \"diagLog\";\r\nvar AJAX_DATA_CONTAINER = \"_ajaxData\";\r\nvar STR_FETCH = \"fetch\";\r\nvar ERROR_HEADER = \"Failed to monitor XMLHttpRequest\";\r\nvar ERROR_PREFIX = \", monitoring data for this ajax call \";\r\nvar ERROR_POSTFIX = ERROR_PREFIX + \"may be incorrect.\";\r\nvar ERROR_NOT_SENT = ERROR_PREFIX + \"won't be sent.\";\r\nvar CORRELATION_HEADER_ERROR = \"Failed to get Request-Context correlation header as it may be not included in the response or not accessible.\";\r\nvar CUSTOM_REQUEST_CONTEXT_ERROR = \"Failed to add custom defined request context as configured call back may missing a null check.\";\r\nvar FAILED_TO_CALCULATE_DURATION_ERROR = \"Failed to calculate the duration of the \";\r\n// Using a global value so that to handle same iKey with multiple app insights instances (mostly for testing)\r\nvar _markCount = 0;\r\n/** @Ignore */\r\nfunction _supportsFetch() {\r\n    var _global = getGlobal();\r\n    if (!_global ||\r\n        isNullOrUndefined(_global.Request) ||\r\n        isNullOrUndefined(_global.Request[strPrototype]) ||\r\n        isNullOrUndefined(_global[STR_FETCH])) {\r\n        return null;\r\n    }\r\n    return _global[STR_FETCH];\r\n}\r\n/**\r\n * Determines whether ajax monitoring can be enabled on this document\r\n * @returns True if Ajax monitoring is supported on this page, otherwise false\r\n * @ignore\r\n */\r\nfunction _supportsAjaxMonitoring(ajaxMonitorInstance, ajaxDataId) {\r\n    var _a, _b;\r\n    var result = false;\r\n    if (isXhrSupported()) {\r\n        var proto = XMLHttpRequest[strPrototype];\r\n        result = !isNullOrUndefined(proto) &&\r\n            !isNullOrUndefined(proto.open) && // eslint-disable-line security/detect-non-literal-fs-filename -- false positive\r\n            !isNullOrUndefined(proto.send) &&\r\n            !isNullOrUndefined(proto.abort);\r\n    }\r\n    var ieVer = getIEVersion();\r\n    if (ieVer && ieVer < 9) {\r\n        result = false;\r\n    }\r\n    if (result) {\r\n        // Disable if the XmlHttpRequest can't be extended or hooked\r\n        try {\r\n            var xhr = new XMLHttpRequest();\r\n            var xhrData = {\r\n                xh: [],\r\n                i: (_a = {},\r\n                    _a[ajaxDataId] = {},\r\n                    _a)\r\n            };\r\n            xhr[AJAX_DATA_CONTAINER] = xhrData;\r\n            // Check that we can update the prototype\r\n            var theOpen = XMLHttpRequest[strPrototype].open;\r\n            XMLHttpRequest[strPrototype].open = theOpen;\r\n        }\r\n        catch (e) {\r\n            // We can't decorate the xhr object so disable monitoring\r\n            result = false;\r\n            _throwInternalCritical(ajaxMonitorInstance, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to enable XMLHttpRequest monitoring, extension is not supported\", (_b = {},\r\n                _b[_DYN_EXCEPTION /* @min:exception */] = dumpObj(e),\r\n                _b));\r\n        }\r\n    }\r\n    return result;\r\n}\r\n/**\r\n * Internal helper to fetch the SDK instance tracking data for this XHR request\r\n * @param xhr\r\n * @param ajaxDataId\r\n * @returns\r\n */\r\nvar _getAjaxData = function (xhr, ajaxDataId) {\r\n    if (xhr && ajaxDataId && xhr[AJAX_DATA_CONTAINER]) {\r\n        return (xhr[AJAX_DATA_CONTAINER].i || {})[ajaxDataId];\r\n    }\r\n    return null;\r\n};\r\n/**\r\n * @ignore\r\n * Internal helper to track the singleton shared tracking headers, so we can attempt to not create headers\r\n * that might cause an issue if multiple values are populated.\r\n * @param xhr - The instrumented XHR instance\r\n */\r\nvar _addSharedXhrHeaders = function (xhr, name, value) {\r\n    if (xhr) {\r\n        var headers = (xhr[AJAX_DATA_CONTAINER] || {}).xh;\r\n        if (headers) {\r\n            headers.push({\r\n                n: name,\r\n                v: value\r\n            });\r\n        }\r\n    }\r\n};\r\nvar _isHeaderSet = function (xhr, name) {\r\n    var isPresent = false;\r\n    if (xhr) {\r\n        var headers = (xhr[AJAX_DATA_CONTAINER] || {}).xh;\r\n        if (headers) {\r\n            arrForEach(headers, function (header) {\r\n                if (header.n === name) {\r\n                    isPresent = true;\r\n                    return -1;\r\n                }\r\n            });\r\n        }\r\n    }\r\n    return isPresent;\r\n};\r\n/** @Ignore */\r\nfunction _getFailedAjaxDiagnosticsMessage(xhr, ajaxDataId) {\r\n    var result = \"\";\r\n    try {\r\n        var ajaxData = _getAjaxData(xhr, ajaxDataId);\r\n        if (ajaxData && ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */]) {\r\n            result += \"(url: '\" + ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] + \"')\";\r\n        }\r\n    }\r\n    catch (e) {\r\n        // eslint-disable-next-line no-empty\r\n    }\r\n    return result;\r\n}\r\n/** @ignore */\r\nfunction _throwInternalCritical(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n    _throwInternal(ajaxMonitorInstance[strDiagLog](), 1 /* eLoggingSeverity.CRITICAL */, msgId, message, properties, isUserAct);\r\n}\r\n/** @ignore */\r\nfunction _throwInternalWarning(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n    _throwInternal(ajaxMonitorInstance[strDiagLog](), 2 /* eLoggingSeverity.WARNING */, msgId, message, properties, isUserAct);\r\n}\r\n/** @Ignore */\r\nfunction _createErrorCallbackFunc(ajaxMonitorInstance, internalMessage, message) {\r\n    // tslint:disable-next-line\r\n    return function (callDetails) {\r\n        var _a;\r\n        _throwInternalCritical(ajaxMonitorInstance, internalMessage, message, (_a = {\r\n                ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(callDetails[_DYN_INST /* @min:%2einst */], ajaxMonitorInstance._ajaxDataId)\r\n            },\r\n            _a[_DYN_EXCEPTION /* @min:exception */] = dumpObj(callDetails.err),\r\n            _a));\r\n    };\r\n}\r\nfunction _indexOf(value, match) {\r\n    if (value && match) {\r\n        return strIndexOf(value, match);\r\n    }\r\n    return -1;\r\n}\r\nfunction _addHandler(container, id, theFunc) {\r\n    var theHandler = {\r\n        id: id,\r\n        fn: theFunc\r\n    };\r\n    container.push(theHandler);\r\n    return {\r\n        remove: function () {\r\n            arrForEach(container, function (initializer, idx) {\r\n                if (initializer.id === theHandler.id) {\r\n                    container.splice(idx, 1);\r\n                    return -1;\r\n                }\r\n            });\r\n        }\r\n    };\r\n}\r\nfunction _processDependencyContainer(core, container, details, message) {\r\n    var result = true;\r\n    arrForEach(container, function (theFunc, idx) {\r\n        try {\r\n            if (theFunc.fn.call(null, details) === false) {\r\n                result = false;\r\n            }\r\n        }\r\n        catch (e) {\r\n            _throwInternal(core && core.logger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"Dependency \" + message + \" [#\" + idx + \"] failed: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n        }\r\n    });\r\n    return result;\r\n}\r\nfunction _processDependencyListeners(listeners, core, ajaxData, xhr, input, init) {\r\n    var _a;\r\n    var initializersCount = listeners[_DYN_LENGTH /* @min:%2elength */];\r\n    if (initializersCount > 0) {\r\n        var details = (_a = {},\r\n            _a[_DYN_CORE /* @min:core */] = core,\r\n            _a.xhr = xhr,\r\n            _a.input = input,\r\n            _a.init = init,\r\n            _a.traceId = ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */],\r\n            _a.spanId = ajaxData[_DYN_SPAN_ID /* @min:%2espanID */],\r\n            _a.traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */],\r\n            _a.context = ajaxData[_DYN_CONTEXT /* @min:%2econtext */] || {},\r\n            _a.aborted = !!ajaxData[_DYN_ABORTED /* @min:%2eaborted */],\r\n            _a);\r\n        _processDependencyContainer(core, listeners, details, \"listener\");\r\n        ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] = details[_DYN_TRACE_ID0 /* @min:%2etraceId */];\r\n        ajaxData[_DYN_SPAN_ID /* @min:%2espanID */] = details[_DYN_SPAN_ID1 /* @min:%2espanId */];\r\n        ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = details[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n        ajaxData[_DYN_CONTEXT /* @min:%2econtext */] = details[_DYN_CONTEXT /* @min:%2econtext */];\r\n    }\r\n}\r\nvar BLOB_CORE = \"*.blob.core.\";\r\nexport var DfltAjaxCorrelationHeaderExDomains = objFreeze([\r\n    BLOB_CORE + \"windows.net\",\r\n    BLOB_CORE + \"chinacloudapi.cn\",\r\n    BLOB_CORE + \"cloudapi.de\",\r\n    BLOB_CORE + \"usgovcloudapi.net\"\r\n]);\r\nvar _internalExcludeEndpoints = [\r\n    /https:\\/\\/[^\\/]*(\\.pipe\\.aria|aria\\.pipe|events\\.data|collector\\.azure)\\.[^\\/]+\\/(OneCollector\\/1|Collector\\/3)\\.0/i\r\n];\r\nvar _defaultConfig = objFreeze((_a = {},\r\n    _a[_DYN_MAX_AJAX_CALLS_PER_V7 /* @min:maxAjaxCallsPerView */] = 500,\r\n    _a[_DYN_DISABLE_AJAX_TRACKIN9 /* @min:disableAjaxTracking */] = false,\r\n    _a[_DYN_DISABLE_FETCH_TRACKI11 /* @min:disableFetchTracking */] = false,\r\n    _a[_DYN_EXCLUDE_REQUEST_FROM8 /* @min:excludeRequestFromAutoTrackingPatterns */] = undefined,\r\n    _a.disableCorrelationHeaders = false,\r\n    _a.distributedTracingMode = 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n    _a.correlationHeaderExcludedDomains = DfltAjaxCorrelationHeaderExDomains,\r\n    _a.correlationHeaderDomains = undefined,\r\n    _a.correlationHeaderExcludePatterns = undefined,\r\n    _a.appId = undefined,\r\n    _a.enableCorsCorrelation = false,\r\n    _a[_DYN_ENABLE_REQUEST_HEADE4 /* @min:enableRequestHeaderTracking */] = false,\r\n    _a[_DYN_ENABLE_RESPONSE_HEAD12 /* @min:enableResponseHeaderTracking */] = false,\r\n    _a[_DYN_ENABLE_AJAX_ERROR_ST5 /* @min:enableAjaxErrorStatusText */] = false,\r\n    _a[_DYN_ENABLE_AJAX_PERF_TRA6 /* @min:enableAjaxPerfTracking */] = false,\r\n    _a.maxAjaxPerfLookupAttempts = 3,\r\n    _a[_DYN_AJAX_PERF_LOOKUP_DEL10 /* @min:ajaxPerfLookupDelay */] = 25,\r\n    _a.ignoreHeaders = [\r\n        \"Authorization\",\r\n        \"X-API-Key\",\r\n        \"WWW-Authenticate\"\r\n    ],\r\n    _a[_DYN_ADD_REQUEST_CONTEXT /* @min:addRequestContext */] = undefined,\r\n    _a.addIntEndpoints = true,\r\n    _a));\r\nvar AjaxMonitor = /** @class */ (function (_super) {\r\n    __extends(AjaxMonitor, _super);\r\n    function AjaxMonitor() {\r\n        var _this = _super.call(this) || this;\r\n        _this.identifier = AjaxMonitor.identifier;\r\n        _this.priority = 120;\r\n        var _fetchInitialized; // fetch monitoring initialized\r\n        var _xhrInitialized; // XHR monitoring initialized\r\n        var _currentWindowHost;\r\n        var _extensionConfig;\r\n        var _enableRequestHeaderTracking;\r\n        var _enableAjaxErrorStatusText;\r\n        var _trackAjaxAttempts;\r\n        var _context;\r\n        var _isUsingW3CHeaders;\r\n        var _isUsingAIHeaders;\r\n        var _markPrefix;\r\n        var _enableAjaxPerfTracking;\r\n        var _maxAjaxCallsPerView;\r\n        var _enableResponseHeaderTracking;\r\n        var _disabledUrls;\r\n        var _disableAjaxTracking;\r\n        var _disableFetchTracking;\r\n        var _excludeRequestFromAutoTrackingPatterns;\r\n        var _addRequestContext;\r\n        var _evtNamespace;\r\n        var _ajaxDataId;\r\n        var _dependencyHandlerId;\r\n        var _dependencyListeners;\r\n        var _dependencyInitializers;\r\n        var _ignoreHeaders;\r\n        var _maxAjaxPerfLookupAttempts;\r\n        var _ajaxPerfLookupDelay;\r\n        var _distributedTracingMode;\r\n        var _appId;\r\n        var _polyfillInitialized;\r\n        dynamicProto(AjaxMonitor, _this, function (_self, _base) {\r\n            var _addHook = _base[_DYN__ADD_HOOK /* @min:%2e_addHook */];\r\n            _initDefaults();\r\n            _self.initialize = function (config, core, extensions, pluginChain) {\r\n                if (!_self.isInitialized()) {\r\n                    _base.initialize(config, core, extensions, pluginChain);\r\n                    _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"ajax\"), core && core.evtNamespace && core.evtNamespace());\r\n                    _populateDefaults(config);\r\n                    _instrumentXhr();\r\n                    _instrumentFetch();\r\n                    _populateContext();\r\n                }\r\n            };\r\n            _self._doTeardown = function () {\r\n                _initDefaults();\r\n            };\r\n            _self.trackDependencyData = function (dependency, properties) {\r\n                _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], null, dependency, properties);\r\n            };\r\n            _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */] = function (ajaxData, input, init, xhr) {\r\n                // Test Hook to allow the overriding of the location host\r\n                var currentWindowHost = _self[\"_currentWindowHost\"] || _currentWindowHost;\r\n                _processDependencyListeners(_dependencyListeners, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, xhr, input, init);\r\n                if (input || input === \"\") { // Fetch\r\n                    if (correlationIdCanIncludeCorrelationHeader(_extensionConfig, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {\r\n                        if (!init) {\r\n                            init = {};\r\n                        }\r\n                        // init headers override original request headers\r\n                        // so, if they exist use only them, otherwise use request's because they should have been applied in the first place\r\n                        // not using original request headers will result in them being lost\r\n                        var headers = new Headers(init[_DYN_HEADERS /* @min:%2eheaders */] || (input instanceof Request ? (input[_DYN_HEADERS /* @min:%2eheaders */] || {}) : {}));\r\n                        if (_isUsingAIHeaders) {\r\n                            var id = \"|\" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];\r\n                            headers.set(RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n                            if (_enableRequestHeaderTracking) {\r\n                                ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n                            }\r\n                        }\r\n                        var appId = _appId || (_context && _context.appId());\r\n                        if (appId) {\r\n                            headers.set(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n                            if (_enableRequestHeaderTracking) {\r\n                                ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n                            }\r\n                        }\r\n                        if (_isUsingW3CHeaders) {\r\n                            var traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n                            if (isNullOrUndefined(traceFlags)) {\r\n                                traceFlags = 0x01;\r\n                            }\r\n                            var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));\r\n                            headers.set(RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n                            if (_enableRequestHeaderTracking) {\r\n                                ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n                            }\r\n                        }\r\n                        init[_DYN_HEADERS /* @min:%2eheaders */] = headers;\r\n                    }\r\n                    return init;\r\n                }\r\n                else if (xhr) { // XHR\r\n                    if (correlationIdCanIncludeCorrelationHeader(_extensionConfig, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {\r\n                        if (_isUsingAIHeaders) {\r\n                            if (!_isHeaderSet(xhr, RequestHeaders[3 /* eRequestHeaders.requestIdHeader */])) {\r\n                                var id = \"|\" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];\r\n                                xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n                                if (_enableRequestHeaderTracking) {\r\n                                    ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n                                }\r\n                            }\r\n                            else {\r\n                                _throwInternalWarning(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, \"Unable to set [\" + RequestHeaders[3 /* eRequestHeaders.requestIdHeader */] + \"] as it has already been set by another instance\");\r\n                            }\r\n                        }\r\n                        var appId = _appId || (_context && _context.appId());\r\n                        if (appId) {\r\n                            if (!_isHeaderSet(xhr, RequestHeaders[0 /* eRequestHeaders.requestContextHeader */])) {\r\n                                xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n                                if (_enableRequestHeaderTracking) {\r\n                                    ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n                                }\r\n                            }\r\n                            else {\r\n                                _throwInternalWarning(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, \"Unable to set [\" + RequestHeaders[0 /* eRequestHeaders.requestContextHeader */] + \"] as it has already been set by another instance\");\r\n                            }\r\n                        }\r\n                        if (_isUsingW3CHeaders) {\r\n                            var traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n                            if (isNullOrUndefined(traceFlags)) {\r\n                                traceFlags = 0x01;\r\n                            }\r\n                            if (!_isHeaderSet(xhr, RequestHeaders[4 /* eRequestHeaders.traceParentHeader */])) {\r\n                                var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));\r\n                                xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n                                if (_enableRequestHeaderTracking) {\r\n                                    ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n                                }\r\n                            }\r\n                            else {\r\n                                _throwInternalWarning(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, \"Unable to set [\" + RequestHeaders[4 /* eRequestHeaders.traceParentHeader */] + \"] as it has already been set by another instance\");\r\n                            }\r\n                        }\r\n                    }\r\n                    return xhr;\r\n                }\r\n                return undefined;\r\n            };\r\n            _self[_DYN_TRACK_DEPENDENCY_DAT3 /* @min:%2etrackDependencyDataInternal */] = function (dependency, properties, systemProperties) {\r\n                if (_maxAjaxCallsPerView === -1 || _trackAjaxAttempts < _maxAjaxCallsPerView) {\r\n                    // Hack since expected format in w3c mode is |abc.def.\r\n                    // Non-w3c format is |abc.def\r\n                    // @todo Remove if better solution is available, e.g. handle in portal\r\n                    if ((_distributedTracingMode === 2 /* eDistributedTracingModes.W3C */\r\n                        || _distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */)\r\n                        && typeof dependency.id === \"string\" && dependency.id[dependency.id[_DYN_LENGTH /* @min:%2elength */] - 1] !== \".\") {\r\n                        dependency.id += \".\";\r\n                    }\r\n                    if (isNullOrUndefined(dependency[_DYN_START_TIME /* @min:%2estartTime */])) {\r\n                        dependency[_DYN_START_TIME /* @min:%2estartTime */] = new Date();\r\n                    }\r\n                    var item = createTelemetryItem(dependency, RemoteDependencyData.dataType, RemoteDependencyData.envelopeType, _self[strDiagLog](), properties, systemProperties);\r\n                    _self[_DYN_CORE /* @min:%2ecore */].track(item);\r\n                }\r\n                else if (_trackAjaxAttempts === _maxAjaxCallsPerView) {\r\n                    _throwInternalCritical(_self, 55 /* _eInternalMessageId.MaxAjaxPerPVExceeded */, \"Maximum ajax per page view limit reached, ajax monitoring is paused until the next trackPageView(). In order to increase the limit set the maxAjaxCallsPerView configuration parameter.\", true);\r\n                }\r\n                ++_trackAjaxAttempts;\r\n            };\r\n            _self.addDependencyListener = function (dependencyListener) {\r\n                return _addHandler(_dependencyListeners, _dependencyHandlerId++, dependencyListener);\r\n            };\r\n            _self.addDependencyInitializer = function (dependencyInitializer) {\r\n                return _addHandler(_dependencyInitializers, _dependencyHandlerId++, dependencyInitializer);\r\n            };\r\n            function _initDefaults() {\r\n                var location = getLocation();\r\n                _fetchInitialized = false; // fetch monitoring initialized\r\n                _xhrInitialized = false; // XHR monitoring initialized\r\n                _polyfillInitialized = false; // polyfill monitoring initialized\r\n                _currentWindowHost = location && location.host && location.host[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n                _extensionConfig = null;\r\n                _enableRequestHeaderTracking = false;\r\n                _enableAjaxErrorStatusText = false;\r\n                _trackAjaxAttempts = 0;\r\n                _context = null;\r\n                _isUsingW3CHeaders = false;\r\n                _isUsingAIHeaders = false;\r\n                _markPrefix = null;\r\n                _enableAjaxPerfTracking = false;\r\n                _maxAjaxCallsPerView = 0;\r\n                _enableResponseHeaderTracking = false;\r\n                _disabledUrls = {};\r\n                _disableAjaxTracking = false;\r\n                _disableFetchTracking = false;\r\n                _excludeRequestFromAutoTrackingPatterns = null;\r\n                _addRequestContext = null;\r\n                _evtNamespace = null;\r\n                _dependencyHandlerId = 0;\r\n                _dependencyListeners = [];\r\n                _dependencyInitializers = [];\r\n                _ajaxDataId = createUniqueNamespace(\"ajaxData\");\r\n                _self._ajaxDataId = _ajaxDataId;\r\n                _ignoreHeaders = null;\r\n                _maxAjaxPerfLookupAttempts = 1;\r\n                _ajaxPerfLookupDelay = 1;\r\n                _distributedTracingMode = 1 /* eDistributedTracingModes.AI_AND_W3C */;\r\n                _appId = null;\r\n            }\r\n            function _populateDefaults(config) {\r\n                _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](onConfigChange(config, function (details) {\r\n                    var config = details.cfg;\r\n                    var ctx = createProcessTelemetryContext(null, config, _self[_DYN_CORE /* @min:%2ecore */]);\r\n                    _extensionConfig = ctx.getExtCfg(AjaxMonitor.identifier, _defaultConfig);\r\n                    _distributedTracingMode = _extensionConfig.distributedTracingMode;\r\n                    _enableRequestHeaderTracking = _extensionConfig[_DYN_ENABLE_REQUEST_HEADE4 /* @min:%2eenableRequestHeaderTracking */];\r\n                    _enableAjaxErrorStatusText = _extensionConfig[_DYN_ENABLE_AJAX_ERROR_ST5 /* @min:%2eenableAjaxErrorStatusText */];\r\n                    _enableAjaxPerfTracking = _extensionConfig[_DYN_ENABLE_AJAX_PERF_TRA6 /* @min:%2eenableAjaxPerfTracking */];\r\n                    _maxAjaxCallsPerView = _extensionConfig[_DYN_MAX_AJAX_CALLS_PER_V7 /* @min:%2emaxAjaxCallsPerView */];\r\n                    _excludeRequestFromAutoTrackingPatterns = [].concat(_extensionConfig[_DYN_EXCLUDE_REQUEST_FROM8 /* @min:%2eexcludeRequestFromAutoTrackingPatterns */] || [], _extensionConfig.addIntEndpoints !== false ? _internalExcludeEndpoints : []);\r\n                    _addRequestContext = _extensionConfig[_DYN_ADD_REQUEST_CONTEXT /* @min:%2eaddRequestContext */];\r\n                    _isUsingAIHeaders = _distributedTracingMode === 0 /* eDistributedTracingModes.AI */ || _distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */;\r\n                    _isUsingW3CHeaders = _distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */ || _distributedTracingMode === 2 /* eDistributedTracingModes.W3C */;\r\n                    if (_enableAjaxPerfTracking) {\r\n                        _markPrefix = _ajaxDataId;\r\n                    }\r\n                    _disableAjaxTracking = !!_extensionConfig[_DYN_DISABLE_AJAX_TRACKIN9 /* @min:%2edisableAjaxTracking */];\r\n                    _maxAjaxPerfLookupAttempts = _extensionConfig.maxAjaxPerfLookupAttempts;\r\n                    _ajaxPerfLookupDelay = _extensionConfig[_DYN_AJAX_PERF_LOOKUP_DEL10 /* @min:%2eajaxPerfLookupDelay */];\r\n                    _ignoreHeaders = _extensionConfig.ignoreHeaders;\r\n                    _appId = _extensionConfig.appId;\r\n                }));\r\n            }\r\n            function _populateContext() {\r\n                var propExt = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);\r\n                if (propExt) {\r\n                    _context = propExt.plugin[_DYN_CONTEXT /* @min:%2econtext */]; // we could move IPropertiesPlugin to common as well\r\n                }\r\n            }\r\n            // discard the header if it's defined as ignoreHeaders in ICorrelationConfig\r\n            function _canIncludeHeaders(header) {\r\n                var rlt = true;\r\n                if (header || _ignoreHeaders) {\r\n                    arrForEach(_ignoreHeaders, (function (key) {\r\n                        if (key[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === header[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()) {\r\n                            rlt = false;\r\n                            return -1;\r\n                        }\r\n                    }));\r\n                }\r\n                return rlt;\r\n            }\r\n            // Fetch Stuff\r\n            function _instrumentFetch() {\r\n                var fetch = _supportsFetch();\r\n                if (!fetch) {\r\n                    return;\r\n                }\r\n                var global = getGlobal();\r\n                var isPolyfill = fetch.polyfill;\r\n                _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](onConfigChange(_extensionConfig, function () {\r\n                    _disableFetchTracking = !!_extensionConfig[_DYN_DISABLE_FETCH_TRACKI11 /* @min:%2edisableFetchTracking */];\r\n                    _enableResponseHeaderTracking = _extensionConfig[_DYN_ENABLE_RESPONSE_HEAD12 /* @min:%2eenableResponseHeaderTracking */];\r\n                    if (!_disableFetchTracking && !_fetchInitialized) {\r\n                        _addHook(InstrumentFunc(global, STR_FETCH, {\r\n                            ns: _evtNamespace,\r\n                            // Add request hook\r\n                            req: function (callDetails, input, init) {\r\n                                var fetchData;\r\n                                if (!_disableFetchTracking && _fetchInitialized &&\r\n                                    !_isDisabledRequest(null, input, init) &&\r\n                                    // If we have a polyfil and XHR instrumented then let XHR report otherwise we get duplicates\r\n                                    !(isPolyfill && _xhrInitialized)) {\r\n                                    var ctx = callDetails.ctx();\r\n                                    fetchData = _createFetchRecord(input, init);\r\n                                    var newInit = _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](fetchData, input, init);\r\n                                    if (newInit !== init) {\r\n                                        callDetails.set(1, newInit);\r\n                                    }\r\n                                    ctx.data = fetchData;\r\n                                }\r\n                            },\r\n                            rsp: function (callDetails, input) {\r\n                                if (!_disableFetchTracking) {\r\n                                    var fetchData_1 = callDetails.ctx().data;\r\n                                    if (fetchData_1) {\r\n                                        // Replace the result with the new promise from this code\r\n                                        callDetails.rslt = callDetails.rslt.then(function (response) {\r\n                                            _reportFetchMetrics(callDetails, (response || {})[_DYN_STATUS /* @min:%2estatus */], input, response, fetchData_1, function () {\r\n                                                var _a;\r\n                                                var ajaxResponse = (_a = {\r\n                                                        statusText: (response || {})[_DYN_STATUS_TEXT /* @min:%2estatusText */]\r\n                                                    },\r\n                                                    _a[_DYN_HEADER_MAP /* @min:headerMap */] = null,\r\n                                                    _a[_DYN_CORRELATION_CONTEXT /* @min:correlationContext */] = _getFetchCorrelationContext(response),\r\n                                                    _a);\r\n                                                if (_enableResponseHeaderTracking && response) {\r\n                                                    var responseHeaderMap_1 = {};\r\n                                                    response.headers.forEach(function (value, name) {\r\n                                                        if (_canIncludeHeaders(name)) {\r\n                                                            responseHeaderMap_1[name] = value;\r\n                                                        }\r\n                                                    });\r\n                                                    ajaxResponse[_DYN_HEADER_MAP /* @min:%2eheaderMap */] = responseHeaderMap_1;\r\n                                                }\r\n                                                return ajaxResponse;\r\n                                            });\r\n                                            return response;\r\n                                        })\r\n                                            .catch(function (reason) {\r\n                                            _reportFetchMetrics(callDetails, 0, input, null, fetchData_1, null, { error: reason.message || dumpObj(reason) });\r\n                                            throw reason;\r\n                                        });\r\n                                    }\r\n                                }\r\n                            },\r\n                            // Create an error callback to report any hook errors\r\n                            hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to monitor Window.fetch\" + ERROR_POSTFIX)\r\n                        }, true, isWebWorker()));\r\n                        _fetchInitialized = true;\r\n                    }\r\n                    else if (isPolyfill && !_polyfillInitialized) {\r\n                        // If fetch is a polyfill we need to capture the request to ensure that we correctly track\r\n                        // disabled request URLS (i.e. internal urls) to ensure we don't end up in a constant loop\r\n                        // of reporting ourselves, for example React Native uses a polyfill for fetch\r\n                        // Note: Polyfill implementations that don't support the \"polyfill\" tag are not supported\r\n                        // the workaround is to add a polyfill property to your fetch implementation before initializing\r\n                        // App Insights\r\n                        _addHook(InstrumentFunc(global, STR_FETCH, {\r\n                            ns: _evtNamespace,\r\n                            req: function (callDetails, input, init) {\r\n                                // Just call so that we record any disabled URL\r\n                                _isDisabledRequest(null, input, init);\r\n                            }\r\n                        }));\r\n                        _polyfillInitialized = true;\r\n                    }\r\n                }));\r\n                if (isPolyfill) {\r\n                    // retag the instrumented fetch with the same polyfill settings this is mostly for testing\r\n                    // But also supports multiple App Insights usages\r\n                    global[STR_FETCH].polyfill = isPolyfill;\r\n                }\r\n            }\r\n            function _hookProto(target, funcName, callbacks) {\r\n                _addHook(InstrumentProto(target, funcName, callbacks));\r\n            }\r\n            function _instrumentXhr() {\r\n                if (!_supportsAjaxMonitoring(_self, _ajaxDataId)) {\r\n                    return;\r\n                }\r\n                _self[_DYN__ADD_HOOK /* @min:%2e_addHook */](onConfigChange(_extensionConfig, function () {\r\n                    _disableAjaxTracking = !!_extensionConfig[_DYN_DISABLE_AJAX_TRACKIN9 /* @min:%2edisableAjaxTracking */];\r\n                    _enableRequestHeaderTracking = _extensionConfig[_DYN_ENABLE_REQUEST_HEADE4 /* @min:%2eenableRequestHeaderTracking */];\r\n                    if (!_disableAjaxTracking && !_xhrInitialized) {\r\n                        // Instrument open\r\n                        _hookProto(XMLHttpRequest, \"open\", {\r\n                            ns: _evtNamespace,\r\n                            req: function (callDetails, method, url, async) {\r\n                                if (!_disableAjaxTracking) {\r\n                                    var xhr = callDetails[_DYN_INST /* @min:%2einst */];\r\n                                    var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n                                    if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, ajaxData, true)) {\r\n                                        if (!ajaxData || !ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */]) {\r\n                                            // Only create a single ajaxData (even when multiple AI instances are running)\r\n                                            ajaxData = _openHandler(xhr, method, url, async);\r\n                                        }\r\n                                        // always attach to the on ready state change (required for handling multiple instances)\r\n                                        _attachToOnReadyStateChange(xhr, ajaxData);\r\n                                    }\r\n                                }\r\n                            },\r\n                            hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, ERROR_HEADER + \".open\" + ERROR_POSTFIX)\r\n                        });\r\n                        // Instrument send\r\n                        _hookProto(XMLHttpRequest, \"send\", {\r\n                            ns: _evtNamespace,\r\n                            req: function (callDetails, context) {\r\n                                if (!_disableAjaxTracking) {\r\n                                    var xhr = callDetails[_DYN_INST /* @min:%2einst */];\r\n                                    var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n                                    if (_isMonitoredXhrInstance(xhr, ajaxData) && !ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */]) {\r\n                                        _createMarkId(\"xhr\", ajaxData);\r\n                                        ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();\r\n                                        _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](ajaxData, undefined, undefined, xhr);\r\n                                        ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */] = true;\r\n                                    }\r\n                                }\r\n                            },\r\n                            hkErr: _createErrorCallbackFunc(_self, 17 /* _eInternalMessageId.FailedMonitorAjaxSend */, ERROR_HEADER + ERROR_POSTFIX)\r\n                        });\r\n                        // Instrument abort\r\n                        _hookProto(XMLHttpRequest, \"abort\", {\r\n                            ns: _evtNamespace,\r\n                            req: function (callDetails) {\r\n                                if (!_disableAjaxTracking) {\r\n                                    var xhr = callDetails[_DYN_INST /* @min:%2einst */];\r\n                                    var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n                                    if (_isMonitoredXhrInstance(xhr, ajaxData) && !ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */]) {\r\n                                        ajaxData[_DYN_ABORTED /* @min:%2eaborted */] = 1;\r\n                                        ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */] = true;\r\n                                    }\r\n                                }\r\n                            },\r\n                            hkErr: _createErrorCallbackFunc(_self, 13 /* _eInternalMessageId.FailedMonitorAjaxAbort */, ERROR_HEADER + \".abort\" + ERROR_POSTFIX)\r\n                        });\r\n                        // Instrument setRequestHeader\r\n                        _hookProto(XMLHttpRequest, \"setRequestHeader\", {\r\n                            ns: _evtNamespace,\r\n                            req: function (callDetails, header, value) {\r\n                                if (!_disableAjaxTracking) {\r\n                                    var xhr = callDetails[_DYN_INST /* @min:%2einst */];\r\n                                    var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n                                    if (ajaxData && _isMonitoredXhrInstance(xhr, ajaxData)) {\r\n                                        _addSharedXhrHeaders(xhr, header, value);\r\n                                        if (_enableRequestHeaderTracking && _canIncludeHeaders(header)) {\r\n                                            if (ajaxData) {\r\n                                                ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][header] = value;\r\n                                            }\r\n                                        }\r\n                                    }\r\n                                }\r\n                            },\r\n                            hkErr: _createErrorCallbackFunc(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, ERROR_HEADER + \".setRequestHeader\" + ERROR_POSTFIX)\r\n                        });\r\n                        _xhrInitialized = true;\r\n                    }\r\n                }));\r\n            }\r\n            function _isDisabledRequest(xhr, request, init) {\r\n                var isDisabled = false;\r\n                var theUrl = ((!isString(request) ? (request || {}).url || \"\" : request) || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n                // check excludeRequestFromAutoTrackingPatterns before stripping off any query string\r\n                arrForEach(_excludeRequestFromAutoTrackingPatterns, function (regex) {\r\n                    var theRegex = regex;\r\n                    if (isString(regex)) {\r\n                        theRegex = new RegExp(regex);\r\n                    }\r\n                    if (!isDisabled) {\r\n                        isDisabled = theRegex.test(theUrl);\r\n                    }\r\n                });\r\n                // if request url matches with exclude regex pattern, return true and no need to check for headers\r\n                if (isDisabled) {\r\n                    return isDisabled;\r\n                }\r\n                var idx = _indexOf(theUrl, \"?\");\r\n                var idx2 = _indexOf(theUrl, \"#\");\r\n                if (idx === -1 || (idx2 !== -1 && idx2 < idx)) {\r\n                    idx = idx2;\r\n                }\r\n                if (idx !== -1) {\r\n                    // Strip off any Query string\r\n                    theUrl = theUrl.substring(0, idx);\r\n                }\r\n                // check that this instance is not not used by ajax call performed inside client side monitoring to send data to collector\r\n                if (!isNullOrUndefined(xhr)) {\r\n                    // Look on the XMLHttpRequest of the URL string value\r\n                    isDisabled = xhr[DisabledPropertyName] === true || theUrl[DisabledPropertyName] === true;\r\n                }\r\n                else if (!isNullOrUndefined(request)) { // fetch\r\n                    // Look for DisabledPropertyName in either Request or RequestInit\r\n                    isDisabled = (typeof request === \"object\" ? request[DisabledPropertyName] === true : false) ||\r\n                        (init ? init[DisabledPropertyName] === true : false);\r\n                }\r\n                // Also add extra check just in case the XHR or fetch objects where not decorated with the DisableProperty due to sealing or freezing\r\n                if (!isDisabled && theUrl && isInternalApplicationInsightsEndpoint(theUrl)) {\r\n                    isDisabled = true;\r\n                }\r\n                if (isDisabled) {\r\n                    // Add the disabled url if not present\r\n                    if (!_disabledUrls[theUrl]) {\r\n                        _disabledUrls[theUrl] = 1;\r\n                    }\r\n                }\r\n                else {\r\n                    // Check to see if the url is listed as disabled\r\n                    if (_disabledUrls[theUrl]) {\r\n                        isDisabled = true;\r\n                    }\r\n                }\r\n                return isDisabled;\r\n            }\r\n            /// <summary>Verifies that particular instance of XMLHttpRequest needs to be monitored</summary>\r\n            /// <param name=\"excludeAjaxDataValidation\">Optional parameter. True if ajaxData must be excluded from verification</param>\r\n            /// <returns type=\"bool\">True if instance needs to be monitored, otherwise false</returns>\r\n            function _isMonitoredXhrInstance(xhr, ajaxData, excludeAjaxDataValidation) {\r\n                var ajaxValidation = true;\r\n                var initialized = _xhrInitialized;\r\n                if (!isNullOrUndefined(xhr)) {\r\n                    ajaxValidation = excludeAjaxDataValidation === true || !isNullOrUndefined(ajaxData);\r\n                }\r\n                // checking to see that all interested functions on xhr were instrumented\r\n                return initialized\r\n                    // checking on ajaxData to see that it was not removed in user code\r\n                    && ajaxValidation;\r\n            }\r\n            function _getDistributedTraceCtx() {\r\n                var distributedTraceCtx = null;\r\n                if (_self[_DYN_CORE /* @min:%2ecore */] && _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx) {\r\n                    distributedTraceCtx = _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx(false);\r\n                }\r\n                // Fall back\r\n                if (!distributedTraceCtx && _context && _context.telemetryTrace) {\r\n                    distributedTraceCtx = createDistributedTraceContextFromTrace(_context.telemetryTrace);\r\n                }\r\n                return distributedTraceCtx;\r\n            }\r\n            function _openHandler(xhr, method, url, async) {\r\n                var _a;\r\n                var distributedTraceCtx = _getDistributedTraceCtx();\r\n                var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();\r\n                var spanID = strSubstr(generateW3CId(), 0, 16);\r\n                var xhrRequestData = xhr[AJAX_DATA_CONTAINER] = (xhr[AJAX_DATA_CONTAINER] || { xh: [], i: {} });\r\n                var ajaxDataCntr = xhrRequestData.i = (xhrRequestData.i || {});\r\n                var ajaxData = ajaxDataCntr[_ajaxDataId] = (ajaxDataCntr[_ajaxDataId] || new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx()));\r\n                ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();\r\n                ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;\r\n                ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = url;\r\n                ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */] = true;\r\n                ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = {};\r\n                ajaxData.async = async;\r\n                ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;\r\n                return ajaxData;\r\n            }\r\n            function _attachToOnReadyStateChange(xhr, ajaxData) {\r\n                ajaxData.xhrMonitoringState[_DYN_STATE_CHANGE_ATTACHE13 /* @min:%2estateChangeAttached */] = eventOn(xhr, \"readystatechange\", function () {\r\n                    var _a;\r\n                    try {\r\n                        if (xhr && xhr.readyState === 4 && _isMonitoredXhrInstance(xhr, ajaxData)) {\r\n                            _onAjaxComplete(xhr);\r\n                        }\r\n                    }\r\n                    catch (e) {\r\n                        var exceptionText = dumpObj(e);\r\n                        // ignore messages with c00c023f, as this a known IE9 XHR abort issue\r\n                        if (!exceptionText || _indexOf(exceptionText[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), \"c00c023f\") === -1) {\r\n                            _throwInternalCritical(_self, 16 /* _eInternalMessageId.FailedMonitorAjaxRSC */, ERROR_HEADER + \" 'readystatechange' event handler\" + ERROR_POSTFIX, (_a = {},\r\n                                _a[_DYN_AJAX_DIAGNOSTICS_MES16 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId),\r\n                                _a[_DYN_EXCEPTION /* @min:exception */] = exceptionText,\r\n                                _a));\r\n                        }\r\n                    }\r\n                }, _evtNamespace);\r\n            }\r\n            function _getResponseText(xhr) {\r\n                try {\r\n                    var responseType = xhr.responseType;\r\n                    if (responseType === \"\" || responseType === \"text\") {\r\n                        // As per the specification responseText is only valid if the type is an empty string or \"text\"\r\n                        return xhr[_DYN_RESPONSE_TEXT /* @min:%2eresponseText */];\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    // This shouldn't happen because of the above check -- but just in case, so just ignore\r\n                }\r\n                return null;\r\n            }\r\n            function _onAjaxComplete(xhr) {\r\n                var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n                ajaxData[_DYN_RESPONSE_FINISHED_TI14 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();\r\n                ajaxData[_DYN_STATUS /* @min:%2estatus */] = xhr[_DYN_STATUS /* @min:%2estatus */];\r\n                function _reportXhrError(e, failedProps) {\r\n                    var errorProps = failedProps || {};\r\n                    errorProps[\"ajaxDiagnosticsMessage\"] = _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId);\r\n                    if (e) {\r\n                        errorProps[\"exception\"] = dumpObj(e);\r\n                    }\r\n                    _throwInternalWarning(_self, 14 /* _eInternalMessageId.FailedMonitorAjaxDur */, FAILED_TO_CALCULATE_DURATION_ERROR + \"ajax call\" + ERROR_NOT_SENT, errorProps);\r\n                }\r\n                _findPerfResourceEntry(\"xmlhttprequest\", ajaxData, function () {\r\n                    try {\r\n                        var dependency = ajaxData[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */](\"Ajax\", _enableRequestHeaderTracking, function () {\r\n                            var _a;\r\n                            var ajaxResponse = (_a = {\r\n                                    statusText: xhr[_DYN_STATUS_TEXT /* @min:%2estatusText */]\r\n                                },\r\n                                _a[_DYN_HEADER_MAP /* @min:headerMap */] = null,\r\n                                _a[_DYN_CORRELATION_CONTEXT /* @min:correlationContext */] = _getAjaxCorrelationContext(xhr),\r\n                                _a.type = xhr.responseType,\r\n                                _a[_DYN_RESPONSE_TEXT /* @min:responseText */] = _getResponseText(xhr),\r\n                                _a.response = xhr[_DYN_RESPONSE /* @min:%2eresponse */],\r\n                                _a);\r\n                            if (_enableResponseHeaderTracking) {\r\n                                var headers = xhr[_DYN_GET_ALL_RESPONSE_HEA15 /* @min:%2egetAllResponseHeaders */]();\r\n                                if (headers) {\r\n                                    // xhr.getAllResponseHeaders() method returns all the response headers, separated by CRLF, as a string or null\r\n                                    // the regex converts the header string into an array of individual headers\r\n                                    var arr = strTrim(headers).split(/[\\r\\n]+/);\r\n                                    var responseHeaderMap_2 = {};\r\n                                    arrForEach(arr, function (line) {\r\n                                        var parts = line.split(\": \");\r\n                                        var header = parts.shift();\r\n                                        var value = parts.join(\": \");\r\n                                        if (_canIncludeHeaders(header)) {\r\n                                            responseHeaderMap_2[header] = value;\r\n                                        }\r\n                                    });\r\n                                    ajaxResponse[_DYN_HEADER_MAP /* @min:%2eheaderMap */] = responseHeaderMap_2;\r\n                                }\r\n                            }\r\n                            return ajaxResponse;\r\n                        });\r\n                        var properties = void 0;\r\n                        try {\r\n                            if (!!_addRequestContext) {\r\n                                properties = _addRequestContext({ status: xhr[_DYN_STATUS /* @min:%2estatus */], xhr: xhr });\r\n                            }\r\n                        }\r\n                        catch (e) {\r\n                            _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);\r\n                        }\r\n                        if (dependency) {\r\n                            if (properties !== undefined) {\r\n                                dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);\r\n                            }\r\n                            var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();\r\n                            _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);\r\n                        }\r\n                        else {\r\n                            _reportXhrError(null, {\r\n                                requestSentTime: ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */],\r\n                                responseFinishedTime: ajaxData[_DYN_RESPONSE_FINISHED_TI14 /* @min:%2eresponseFinishedTime */]\r\n                            });\r\n                        }\r\n                    }\r\n                    finally {\r\n                        // cleanup telemetry data\r\n                        try {\r\n                            var xhrRequestData = (xhr[AJAX_DATA_CONTAINER] || { i: {} });\r\n                            var ajaxDataCntr = (xhrRequestData.i || {});\r\n                            if (ajaxDataCntr[_ajaxDataId]) {\r\n                                ajaxDataCntr[_ajaxDataId] = null;\r\n                            }\r\n                        }\r\n                        catch (e) {\r\n                            // May throw in environments that prevent extension or freeze xhr\r\n                        }\r\n                    }\r\n                }, function (e) {\r\n                    _reportXhrError(e, null);\r\n                });\r\n            }\r\n            function _getAjaxCorrelationContext(xhr) {\r\n                var _a;\r\n                try {\r\n                    var responseHeadersString = xhr[_DYN_GET_ALL_RESPONSE_HEA15 /* @min:%2egetAllResponseHeaders */]();\r\n                    if (responseHeadersString !== null) {\r\n                        var index = _indexOf(responseHeadersString[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), RequestHeaders[8 /* eRequestHeaders.requestContextHeaderLowerCase */]);\r\n                        if (index !== -1) {\r\n                            var responseHeader = xhr.getResponseHeader(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n                            return correlationIdGetCorrelationContext(responseHeader);\r\n                        }\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, (_a = {},\r\n                        _a[_DYN_AJAX_DIAGNOSTICS_MES16 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId),\r\n                        _a[_DYN_EXCEPTION /* @min:exception */] = dumpObj(e),\r\n                        _a));\r\n                }\r\n            }\r\n            function _createMarkId(type, ajaxData) {\r\n                if (ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] && _markPrefix && _enableAjaxPerfTracking) {\r\n                    var performance_1 = getPerformance();\r\n                    if (performance_1 && isFunction(performance_1.mark)) {\r\n                        _markCount++;\r\n                        var markId = _markPrefix + type + \"#\" + _markCount;\r\n                        performance_1.mark(markId);\r\n                        var entries = performance_1.getEntriesByName(markId);\r\n                        if (entries && entries[_DYN_LENGTH /* @min:%2elength */] === 1) {\r\n                            ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */] = entries[0];\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            function _findPerfResourceEntry(initiatorType, ajaxData, trackCallback, reportError) {\r\n                var perfMark = ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */];\r\n                var performance = getPerformance();\r\n                var maxAttempts = _maxAjaxPerfLookupAttempts;\r\n                var retryDelay = _ajaxPerfLookupDelay;\r\n                var requestUrl = ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */];\r\n                var attempt = 0;\r\n                (function locateResourceTiming() {\r\n                    try {\r\n                        if (performance && perfMark) {\r\n                            attempt++;\r\n                            var perfTiming = null;\r\n                            var entries = performance.getEntries();\r\n                            for (var lp = entries[_DYN_LENGTH /* @min:%2elength */] - 1; lp >= 0; lp--) {\r\n                                var entry = entries[lp];\r\n                                if (entry) {\r\n                                    if (entry.entryType === \"resource\") {\r\n                                        if (entry.initiatorType === initiatorType &&\r\n                                            (_indexOf(entry[_DYN_NAME /* @min:%2ename */], requestUrl) !== -1 || _indexOf(requestUrl, entry[_DYN_NAME /* @min:%2ename */]) !== -1)) {\r\n                                            perfTiming = entry;\r\n                                        }\r\n                                    }\r\n                                    else if (entry.entryType === \"mark\" && entry[_DYN_NAME /* @min:%2ename */] === perfMark[_DYN_NAME /* @min:%2ename */]) {\r\n                                        // We hit the start event\r\n                                        ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */] = perfTiming;\r\n                                        break;\r\n                                    }\r\n                                    if (entry[_DYN_START_TIME /* @min:%2estartTime */] < perfMark[_DYN_START_TIME /* @min:%2estartTime */] - 1000) {\r\n                                        // Fallback to try and reduce the time spent looking for the perf entry\r\n                                        break;\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                        if (!perfMark || // - we don't have a perfMark or\r\n                            ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */] || // - we have not found the perf entry or\r\n                            attempt >= maxAttempts || // - we have tried too many attempts or\r\n                            ajaxData.async === false) { // - this is a sync request\r\n                            if (perfMark && isFunction(performance.clearMarks)) {\r\n                                // Remove the mark so we don't fill up the performance resources too much\r\n                                performance.clearMarks(perfMark[_DYN_NAME /* @min:%2ename */]);\r\n                            }\r\n                            ajaxData.perfAttempts = attempt;\r\n                            // just continue and report the track event\r\n                            trackCallback();\r\n                        }\r\n                        else {\r\n                            // We need to wait for the browser to populate the window.performance entry\r\n                            // This needs to be at least 1ms as waiting <= 1 (on firefox) is not enough time for fetch or xhr,\r\n                            // this is a scheduling issue for the browser implementation\r\n                            scheduleTimeout(locateResourceTiming, retryDelay);\r\n                        }\r\n                    }\r\n                    catch (e) {\r\n                        reportError(e);\r\n                    }\r\n                })();\r\n            }\r\n            function _createFetchRecord(input, init) {\r\n                var _a;\r\n                var distributedTraceCtx = _getDistributedTraceCtx();\r\n                var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();\r\n                var spanID = strSubstr(generateW3CId(), 0, 16);\r\n                var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx());\r\n                ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();\r\n                ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();\r\n                ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;\r\n                var requestUrl;\r\n                if (input instanceof Request) {\r\n                    requestUrl = (input || {}).url || \"\";\r\n                }\r\n                else {\r\n                    requestUrl = input;\r\n                }\r\n                if (requestUrl === \"\") {\r\n                    var location_1 = getLocation();\r\n                    if (location_1 && location_1.href) {\r\n                        requestUrl = strSplit(location_1.href, \"#\")[0];\r\n                    }\r\n                }\r\n                ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = requestUrl;\r\n                var method = \"GET\";\r\n                if (init && init[_DYN_METHOD /* @min:%2emethod */]) {\r\n                    method = init[_DYN_METHOD /* @min:%2emethod */];\r\n                }\r\n                else if (input && input instanceof Request) {\r\n                    method = input[_DYN_METHOD /* @min:%2emethod */];\r\n                }\r\n                ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;\r\n                var requestHeaders = {};\r\n                if (_enableRequestHeaderTracking) {\r\n                    var headers = new Headers((init ? init[_DYN_HEADERS /* @min:%2eheaders */] : 0) || (input instanceof Request ? (input[_DYN_HEADERS /* @min:%2eheaders */] || {}) : {}));\r\n                    headers.forEach(function (value, key) {\r\n                        if (_canIncludeHeaders(key)) {\r\n                            requestHeaders[key] = value;\r\n                        }\r\n                    });\r\n                }\r\n                ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = requestHeaders;\r\n                _createMarkId(STR_FETCH, ajaxData);\r\n                return ajaxData;\r\n            }\r\n            function _getFailedFetchDiagnosticsMessage(input) {\r\n                var result = \"\";\r\n                try {\r\n                    if (!isNullOrUndefined(input)) {\r\n                        if (typeof (input) === \"string\") {\r\n                            result += \"(url: '\".concat(input, \"')\");\r\n                        }\r\n                        else {\r\n                            result += \"(url: '\".concat(input.url, \"')\");\r\n                        }\r\n                    }\r\n                }\r\n                catch (e) {\r\n                    _throwInternalCritical(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to grab failed fetch diagnostics message\", { exception: dumpObj(e) });\r\n                }\r\n                return result;\r\n            }\r\n            function _reportFetchMetrics(callDetails, status, input, response, ajaxData, getResponse, properties) {\r\n                if (!ajaxData) {\r\n                    return;\r\n                }\r\n                function _reportFetchError(msgId, e, failedProps) {\r\n                    var errorProps = failedProps || {};\r\n                    errorProps[\"fetchDiagnosticsMessage\"] = _getFailedFetchDiagnosticsMessage(input);\r\n                    if (e) {\r\n                        errorProps[\"exception\"] = dumpObj(e);\r\n                    }\r\n                    _throwInternalWarning(_self, msgId, FAILED_TO_CALCULATE_DURATION_ERROR + \"fetch call\" + ERROR_NOT_SENT, errorProps);\r\n                }\r\n                ajaxData[_DYN_RESPONSE_FINISHED_TI14 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();\r\n                ajaxData[_DYN_STATUS /* @min:%2estatus */] = status;\r\n                _findPerfResourceEntry(STR_FETCH, ajaxData, function () {\r\n                    var dependency = ajaxData[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */](\"Fetch\", _enableRequestHeaderTracking, getResponse);\r\n                    var properties;\r\n                    try {\r\n                        if (!!_addRequestContext) {\r\n                            properties = _addRequestContext({ status: status, request: input, response: response });\r\n                        }\r\n                    }\r\n                    catch (e) {\r\n                        _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);\r\n                    }\r\n                    if (dependency) {\r\n                        if (properties !== undefined) {\r\n                            dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);\r\n                        }\r\n                        var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();\r\n                        _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);\r\n                    }\r\n                    else {\r\n                        _reportFetchError(14 /* _eInternalMessageId.FailedMonitorAjaxDur */, null, {\r\n                            requestSentTime: ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */],\r\n                            responseFinishedTime: ajaxData[_DYN_RESPONSE_FINISHED_TI14 /* @min:%2eresponseFinishedTime */]\r\n                        });\r\n                    }\r\n                }, function (e) {\r\n                    _reportFetchError(18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, e, null);\r\n                });\r\n            }\r\n            function _getFetchCorrelationContext(response) {\r\n                var _a;\r\n                if (response && response[_DYN_HEADERS /* @min:%2eheaders */]) {\r\n                    try {\r\n                        var responseHeader = response[_DYN_HEADERS /* @min:%2eheaders */].get(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n                        return correlationIdGetCorrelationContext(responseHeader);\r\n                    }\r\n                    catch (e) {\r\n                        _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, (_a = {\r\n                                fetchDiagnosticsMessage: _getFailedFetchDiagnosticsMessage(response)\r\n                            },\r\n                            _a[_DYN_EXCEPTION /* @min:exception */] = dumpObj(e),\r\n                            _a));\r\n                    }\r\n                }\r\n            }\r\n            function _reportDependencyInternal(initializers, core, ajaxData, dependency, properties, systemProperties) {\r\n                var _a;\r\n                var result = true;\r\n                var initializersCount = initializers[_DYN_LENGTH /* @min:%2elength */];\r\n                if (initializersCount > 0) {\r\n                    var details = (_a = {\r\n                            item: dependency\r\n                        },\r\n                        _a[STR_PROPERTIES /* @min:properties */] = properties,\r\n                        _a.sysProperties = systemProperties,\r\n                        _a.context = ajaxData ? ajaxData[_DYN_CONTEXT /* @min:%2econtext */] : null,\r\n                        _a.aborted = ajaxData ? !!ajaxData[_DYN_ABORTED /* @min:%2eaborted */] : false,\r\n                        _a);\r\n                    result = _processDependencyContainer(core, initializers, details, \"initializer\");\r\n                }\r\n                if (result) {\r\n                    _self[_DYN_TRACK_DEPENDENCY_DAT3 /* @min:%2etrackDependencyDataInternal */](dependency, properties, systemProperties);\r\n                }\r\n            }\r\n        });\r\n        return _this;\r\n    }\r\n// Removed Stub for AjaxMonitor.prototype.initialize.\r\n    AjaxMonitor.prototype.processTelemetry = function (item, itemCtx) {\r\n        this.processNext(item, itemCtx);\r\n    };\r\n// Removed Stub for AjaxMonitor.prototype.trackDependencyData.\r\n// Removed Stub for AjaxMonitor.prototype.includeCorrelationHeaders.\r\n// Removed Stub for AjaxMonitor.prototype.addDependencyListener.\r\n    /**\r\n     * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.\r\n     * It is called after the dependency call has completed and any available performance details are available. A dependency\r\n     * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency\r\n     * request so that it doesn't count against the `maxAjaxCallsPerView`.\r\n     * @param dependencyInitializer - The Dependency Telemetry Initializer function\r\n     * @returns - A IDependencyInitializerHandler to enable the initializer to be removed\r\n     */\r\n    AjaxMonitor.prototype.addDependencyInitializer = function (dependencyInitializer) {\r\n        return null;\r\n    };\r\n// Removed Stub for AjaxMonitor.prototype.trackDependencyDataInternal.\r\n    AjaxMonitor.identifier = \"AjaxDependencyPlugin\";\r\n    return AjaxMonitor;\r\n}(BaseTelemetryPlugin));\r\nexport { AjaxMonitor };\r\n//# sourceMappingURL=ajax.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Application = /** @class */ (function () {\r\n    function Application() {\r\n    }\r\n    return Application;\r\n}());\r\nexport { Application };\r\n//# sourceMappingURL=Application.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Device = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the Device class\r\n     */\r\n    function Device() {\r\n        // don't attempt to fingerprint browsers\r\n        this.id = \"browser\";\r\n        // Device type is a dimension in our data platform\r\n        // Setting it to 'Browser' allows to separate client and server dependencies/exceptions\r\n        this.deviceClass = \"Browser\";\r\n    }\r\n    return Device;\r\n}());\r\nexport { Device };\r\n//# sourceMappingURL=Device.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { onConfigChange } from \"@microsoft/applicationinsights-core-js\";\r\nvar Version = '3.3.4';\r\nvar Internal = /** @class */ (function () {\r\n    /**\r\n     * Constructs a new instance of the internal telemetry data class.\r\n     */\r\n    function Internal(config, unloadHookContainer) {\r\n        var _this = this;\r\n        var unloadHook = onConfigChange((config), function () {\r\n            var prefix = config.sdkExtension;\r\n            _this.sdkVersion = (prefix ? prefix + \"_\" : \"\") + \"javascript:\" + Version;\r\n        });\r\n        unloadHookContainer && unloadHookContainer.add(unloadHook);\r\n    }\r\n    return Internal;\r\n}());\r\nexport { Internal };\r\n//# sourceMappingURL=Internal.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Location = /** @class */ (function () {\r\n    function Location() {\r\n    }\r\n    return Location;\r\n}());\r\nexport { Location };\r\n//# sourceMappingURL=Location.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_SESSION_MANAGER = \"sessionManager\"; // Count: 3\r\nexport var _DYN_UPDATE = \"update\"; // Count: 4\r\nexport var _DYN_IS_USER_COOKIE_SET = \"isUserCookieSet\"; // Count: 4\r\nexport var _DYN_IS_NEW_USER = \"isNewUser\"; // Count: 4\r\nexport var _DYN_GET_TRACE_CTX = \"getTraceCtx\"; // Count: 3\r\nexport var _DYN_TELEMETRY_TRACE = \"telemetryTrace\"; // Count: 3\r\nexport var _DYN_APPLY_SESSION_CONTEX0 = \"applySessionContext\"; // Count: 2\r\nexport var _DYN_APPLY_APPLICATION_CO1 = \"applyApplicationContext\"; // Count: 2\r\nexport var _DYN_APPLY_DEVICE_CONTEXT = \"applyDeviceContext\"; // Count: 2\r\nexport var _DYN_APPLY_OPERATION_CONT2 = \"applyOperationContext\"; // Count: 2\r\nexport var _DYN_APPLY_USER_CONTEXT = \"applyUserContext\"; // Count: 2\r\nexport var _DYN_APPLY_OPERATING_SYST3 = \"applyOperatingSystemContxt\"; // Count: 2\r\nexport var _DYN_APPLY_LOCATION_CONTE4 = \"applyLocationContext\"; // Count: 2\r\nexport var _DYN_APPLY_INTERNAL_CONTE5 = \"applyInternalContext\"; // Count: 2\r\nexport var _DYN_ACCOUNT_ID = \"accountId\"; // Count: 7\r\nexport var _DYN_GET_SESSION_ID = \"getSessionId\"; // Count: 4\r\nexport var _DYN_NAME_PREFIX = \"namePrefix\"; // Count: 3\r\nexport var _DYN_SESSION_COOKIE_POSTF6 = \"sessionCookiePostfix\"; // Count: 2\r\nexport var _DYN_USER_COOKIE_POSTFIX = \"userCookiePostfix\"; // Count: 2\r\nexport var _DYN_ID_LENGTH = \"idLength\"; // Count: 4\r\nexport var _DYN_GET_NEW_ID = \"getNewId\"; // Count: 3\r\nexport var _DYN_LENGTH = \"length\"; // Count: 4\r\nexport var _DYN_AUTOMATIC_SESSION = \"automaticSession\"; // Count: 5\r\nexport var _DYN_AUTHENTICATED_ID = \"authenticatedId\"; // Count: 6\r\nexport var _DYN_ACQUISITION_DATE = \"acquisitionDate\"; // Count: 5\r\nexport var _DYN_RENEWAL_DATE = \"renewalDate\"; // Count: 4\r\nexport var _DYN_JOIN = \"join\"; // Count: 5\r\nexport var _DYN_COOKIE_SEPARATOR = \"cookieSeparator\"; // Count: 5\r\nexport var _DYN_AUTH_USER_COOKIE_NAM7 = \"authUserCookieName\"; // Count: 3\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, dateNow, dumpObj, getExceptionName, isFunction, newId, onConfigChange, safeGetCookieMgr, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ACQUISITION_DATE, _DYN_AUTOMATIC_SESSION, _DYN_GET_NEW_ID, _DYN_ID_LENGTH, _DYN_JOIN, _DYN_LENGTH, _DYN_NAME_PREFIX, _DYN_RENEWAL_DATE, _DYN_UPDATE } from \"../__DynamicConstants\";\r\nvar SESSION_COOKIE_NAME = \"ai_session\";\r\nvar ACQUISITION_SPAN = 86400000; // 24 hours in ms\r\nvar RENEWAL_SPAN = 1800000; // 30 minutes in ms\r\nvar COOKIE_UPDATE_INTERVAL = 60000; // 1 minute in ms\r\nvar Session = /** @class */ (function () {\r\n    function Session() {\r\n    }\r\n    return Session;\r\n}());\r\nexport { Session };\r\nvar _SessionManager = /** @class */ (function () {\r\n    function _SessionManager(config, core, unloadHookContainer) {\r\n        var self = this;\r\n        var _storageNamePrefix;\r\n        var _cookieUpdatedTimestamp;\r\n        var _logger = safeGetLogger(core);\r\n        var _cookieManager = safeGetCookieMgr(core);\r\n        var _sessionExpirationMs;\r\n        var _sessionRenewalMs;\r\n        dynamicProto(_SessionManager, self, function (_self) {\r\n            if (!config) {\r\n                config = {};\r\n            }\r\n            var unloadHook = onConfigChange(config, function (details) {\r\n                _sessionExpirationMs = config.sessionExpirationMs || ACQUISITION_SPAN;\r\n                _sessionRenewalMs = config.sessionRenewalMs || RENEWAL_SPAN;\r\n                // sessionCookiePostfix takes the preference if it is configured, otherwise takes namePrefix if configured.\r\n                var sessionCookiePostfix = config.sessionCookiePostfix || config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] || \"\";\r\n                _storageNamePrefix = SESSION_COOKIE_NAME + sessionCookiePostfix;\r\n            });\r\n            unloadHookContainer && unloadHookContainer.add(unloadHook);\r\n            _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */] = new Session();\r\n            _self[_DYN_UPDATE /* @min:%2eupdate */] = function () {\r\n                // Always using Date getTime() as there is a bug in older IE instances that causes the performance timings to have the hi-bit set eg 0x800000000 causing\r\n                // the number to be incorrect.\r\n                var nowMs = dateNow();\r\n                var isExpired = false;\r\n                var session = _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n                if (!session.id) {\r\n                    isExpired = !_initializeAutomaticSession(session, nowMs);\r\n                }\r\n                if (!isExpired && _sessionExpirationMs > 0) {\r\n                    var timeSinceAcqMs = nowMs - session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */];\r\n                    var timeSinceRenewalMs = nowMs - session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */];\r\n                    isExpired = timeSinceAcqMs < 0 || timeSinceRenewalMs < 0; // expired if the acquisition or last renewal are in the future\r\n                    isExpired = isExpired || timeSinceAcqMs > _sessionExpirationMs; // expired if the time since acquisition is more than session Expiration\r\n                    isExpired = isExpired || timeSinceRenewalMs > _sessionRenewalMs; // expired if the time since last renewal is more than renewal period\r\n                }\r\n                // renew if acquisitionSpan or renewalSpan has elapsed\r\n                if (isExpired) {\r\n                    // update automaticSession so session state has correct id\r\n                    _renew(nowMs);\r\n                }\r\n                else {\r\n                    // do not update the cookie more often than cookieUpdateInterval\r\n                    if (!_cookieUpdatedTimestamp || nowMs - _cookieUpdatedTimestamp > COOKIE_UPDATE_INTERVAL) {\r\n                        _setCookie(session, nowMs);\r\n                    }\r\n                }\r\n            };\r\n            /**\r\n             *  Record the current state of the automatic session and store it in our cookie string format\r\n             *  into the browser's local storage. This is used to restore the session data when the cookie\r\n             *  expires.\r\n             */\r\n            _self.backup = function () {\r\n                var session = _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n                _setStorage(session.id, session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */], session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */]);\r\n            };\r\n            /**\r\n             * Use config.namePrefix + ai_session cookie data or local storage data (when the cookie is unavailable) to\r\n             * initialize the automatic session.\r\n             * @returns true if values set otherwise false\r\n             */\r\n            function _initializeAutomaticSession(session, now) {\r\n                var isValid = false;\r\n                var cookieValue = _cookieManager.get(_storageNamePrefix);\r\n                if (cookieValue && isFunction(cookieValue.split)) {\r\n                    isValid = _initializeAutomaticSessionWithData(session, cookieValue);\r\n                }\r\n                else {\r\n                    // There's no cookie, but we might have session data in local storage\r\n                    // This can happen if the session expired or the user actively deleted the cookie\r\n                    // We only want to recover data if the cookie is missing from expiry. We should respect the user's wishes if the cookie was deleted actively.\r\n                    // The User class handles this for us and deletes our local storage object if the persistent user cookie was removed.\r\n                    var storageValue = utlGetLocalStorage(_logger, _storageNamePrefix);\r\n                    if (storageValue) {\r\n                        isValid = _initializeAutomaticSessionWithData(session, storageValue);\r\n                    }\r\n                }\r\n                return isValid || !!session.id;\r\n            }\r\n            /**\r\n             * Extract id, acquisitionDate, and renewalDate from an ai_session payload string and\r\n             * use this data to initialize automaticSession.\r\n             *\r\n             * @param sessionData - The string stored in an ai_session cookie or local storage backup\r\n             * @returns true if values set otherwise false\r\n             */\r\n            function _initializeAutomaticSessionWithData(session, sessionData) {\r\n                var isValid = false;\r\n                var sessionReset = \", session will be reset\";\r\n                var tokens = sessionData.split(\"|\");\r\n                if (tokens[_DYN_LENGTH /* @min:%2elength */] >= 2) {\r\n                    try {\r\n                        var acqMs = +tokens[1] || 0;\r\n                        var renewalMs = +tokens[2] || 0;\r\n                        if (isNaN(acqMs) || acqMs <= 0) {\r\n                            _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session acquisition date is 0\" + sessionReset);\r\n                        }\r\n                        else if (isNaN(renewalMs) || renewalMs <= 0) {\r\n                            _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session renewal date is 0\" + sessionReset);\r\n                        }\r\n                        else if (tokens[0]) {\r\n                            // Everything looks valid so set the values\r\n                            session.id = tokens[0];\r\n                            session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */] = acqMs;\r\n                            session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */] = renewalMs;\r\n                            isValid = true;\r\n                        }\r\n                    }\r\n                    catch (e) {\r\n                        _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 9 /* _eInternalMessageId.ErrorParsingAISessionCookie */, \"Error parsing ai_session value [\" + (sessionData || \"\") + \"]\" + sessionReset + \" - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n                    }\r\n                }\r\n                return isValid;\r\n            }\r\n            function _renew(nowMs) {\r\n                var getNewId = config[_DYN_GET_NEW_ID /* @min:%2egetNewId */] || newId;\r\n                _self.automaticSession.id = getNewId(config[_DYN_ID_LENGTH /* @min:%2eidLength */] || 22);\r\n                _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */][_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */] = nowMs;\r\n                _setCookie(_self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */], nowMs);\r\n                // If this browser does not support local storage, fire an internal log to keep track of it at this point\r\n                if (!utlCanUseLocalStorage()) {\r\n                    _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 0 /* _eInternalMessageId.BrowserDoesNotSupportLocalStorage */, \"Browser does not support local storage. Session durations will be inaccurate.\");\r\n                }\r\n            }\r\n            function _setCookie(session, nowMs) {\r\n                var acq = session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */];\r\n                session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */] = nowMs;\r\n                var renewalPeriodMs = _sessionRenewalMs;\r\n                // Set cookie to expire after the session expiry time passes or the session renewal deadline, whichever is sooner\r\n                // Expiring the cookie will cause the session to expire even if the user isn't on the page\r\n                var acqTimeLeftMs = (acq + _sessionExpirationMs) - nowMs;\r\n                var cookie = [session.id, acq, nowMs];\r\n                var maxAgeSec = 0;\r\n                if (acqTimeLeftMs < renewalPeriodMs) {\r\n                    maxAgeSec = acqTimeLeftMs / 1000;\r\n                }\r\n                else {\r\n                    maxAgeSec = renewalPeriodMs / 1000;\r\n                }\r\n                var cookieDomain = config.cookieDomain || null;\r\n                // if sessionExpirationMs is set to 0, it means the expiry is set to 0 for this session cookie\r\n                // A cookie with 0 expiry in the session cookie will never expire for that browser session.  If the browser is closed the cookie expires.\r\n                // Depending on the browser, another instance does not inherit this cookie, however, another tab will\r\n                _cookieManager.set(_storageNamePrefix, cookie[_DYN_JOIN /* @min:%2ejoin */](\"|\"), _sessionExpirationMs > 0 ? maxAgeSec : null, cookieDomain);\r\n                _cookieUpdatedTimestamp = nowMs;\r\n            }\r\n            function _setStorage(guid, acq, renewal) {\r\n                // Keep data in local storage to retain the last session id, allowing us to cleanly end the session when it expires\r\n                // Browsers that don't support local storage won't be able to end sessions cleanly from the client\r\n                // The server will notice this and end the sessions itself, with loss of accurate session duration\r\n                utlSetLocalStorage(_logger, _storageNamePrefix, [guid, acq, renewal][_DYN_JOIN /* @min:%2ejoin */](\"|\"));\r\n            }\r\n        });\r\n    }\r\n// Removed Stub for _SessionManager.prototype.update.\r\n// Removed Stub for _SessionManager.prototype.backup.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    _SessionManager.__ieDyn=1;\n\n    return _SessionManager;\r\n}());\r\nexport { _SessionManager };\r\n//# sourceMappingURL=Session.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { generateW3CId, getLocation } from \"@microsoft/applicationinsights-core-js\";\r\nvar TelemetryTrace = /** @class */ (function () {\r\n    function TelemetryTrace(id, parentId, name, logger) {\r\n        var _self = this;\r\n        _self.traceID = id || generateW3CId();\r\n        _self.parentID = parentId;\r\n        var location = getLocation();\r\n        if (!name && location && location.pathname) {\r\n            name = location.pathname;\r\n        }\r\n        _self.name = dataSanitizeString(logger, name);\r\n    }\r\n    return TelemetryTrace;\r\n}());\r\nexport { TelemetryTrace };\r\n//# sourceMappingURL=TelemetryTrace.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlRemoveStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, newId, onConfigChange, safeGetCookieMgr, safeGetLogger, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { objDefine } from \"@nevware21/ts-utils\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_AUTHENTICATED_ID, _DYN_AUTH_USER_COOKIE_NAM7, _DYN_COOKIE_SEPARATOR, _DYN_GET_NEW_ID, _DYN_ID_LENGTH, _DYN_IS_NEW_USER, _DYN_IS_USER_COOKIE_SET, _DYN_JOIN, _DYN_LENGTH, _DYN_NAME_PREFIX, _DYN_UPDATE, _DYN_USER_COOKIE_POSTFIX } from \"../__DynamicConstants\";\r\nfunction _validateUserInput(id) {\r\n    // Validate:\r\n    // 1. Id is a non-empty string.\r\n    // 2. It does not contain special characters for cookies.\r\n    if (typeof id !== \"string\" ||\r\n        !id ||\r\n        id.match(/,|;|=| |\\|/)) {\r\n        return false;\r\n    }\r\n    return true;\r\n}\r\nvar User = /** @class */ (function () {\r\n    function User(config, core, unloadHookContainer) {\r\n        /**\r\n         * A flag indicating whether this represents a new user\r\n         */\r\n        this.isNewUser = false;\r\n        /**\r\n         * A flag indicating whether the user cookie has been set\r\n         */\r\n        this.isUserCookieSet = false;\r\n        var _logger = safeGetLogger(core);\r\n        var _cookieManager = safeGetCookieMgr(core);\r\n        var _storageNamePrefix;\r\n        dynamicProto(User, this, function (_self) {\r\n            // Define _self.config\r\n            objDefine(_self, \"config\", {\r\n                g: function () { return config; }\r\n            });\r\n            var unloadHook = onConfigChange(config, function () {\r\n                var userCookiePostfix = config[_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */] || \"\";\r\n                _storageNamePrefix = User.userCookieName + userCookiePostfix;\r\n                // get userId or create new one if none exists\r\n                var cookie = _cookieManager.get(_storageNamePrefix);\r\n                if (cookie) {\r\n                    _self[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = false;\r\n                    var params = cookie.split(User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n                    if (params[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n                        _self.id = params[0];\r\n                        // we already have a cookie\r\n                        _self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */] = !!_self.id;\r\n                    }\r\n                }\r\n                if (!_self.id) {\r\n                    _self.id = _generateNewId();\r\n                    var newCookie = _generateNewCookie(_self.id);\r\n                    _setUserCookie(newCookie[_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]));\r\n                    // If we have an config.namePrefix() + ai_session in local storage this means the user actively removed our cookies.\r\n                    // We should respect their wishes and clear ourselves from local storage\r\n                    var name_1 = (config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] || \"\") + \"ai_session\";\r\n                    utlRemoveStorage(_logger, name_1);\r\n                }\r\n                // We still take the account id from the ctor param for backward compatibility.\r\n                // But if the the customer set the accountId through the newer setAuthenticatedUserContext API, we will override it.\r\n                _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = config[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] || undefined;\r\n                // Get the auth user id and account id from the cookie if exists\r\n                // Cookie is in the pattern: <authenticatedId>|<accountId>\r\n                var authCookie = _cookieManager.get(User[_DYN_AUTH_USER_COOKIE_NAM7 /* @min:%2eauthUserCookieName */]);\r\n                if (authCookie) {\r\n                    authCookie = decodeURI(authCookie);\r\n                    var authCookieString = authCookie.split(User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n                    if (authCookieString[0]) {\r\n                        _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = authCookieString[0];\r\n                    }\r\n                    if (authCookieString[_DYN_LENGTH /* @min:%2elength */] > 1 && authCookieString[1]) {\r\n                        _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = authCookieString[1];\r\n                    }\r\n                }\r\n            });\r\n            unloadHookContainer && unloadHookContainer.add(unloadHook);\r\n            function _generateNewId() {\r\n                var theConfig = (config || {});\r\n                var getNewId = theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */] || newId;\r\n                var id = getNewId(theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */] ? config[_DYN_ID_LENGTH /* @min:%2eidLength */] : 22);\r\n                return id;\r\n            }\r\n            function _generateNewCookie(userId) {\r\n                var acqStr = toISOString(new Date());\r\n                _self.accountAcquisitionDate = acqStr;\r\n                _self[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = true;\r\n                var newCookie = [userId, acqStr];\r\n                return newCookie;\r\n            }\r\n            function _setUserCookie(cookie) {\r\n                // without expiration, cookies expire at the end of the session\r\n                // set it to 365 days from now\r\n                // 365 * 24 * 60 * 60 = 31536000\r\n                var oneYear = 31536000;\r\n                _self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */] = _cookieManager.set(_storageNamePrefix, cookie, oneYear);\r\n            }\r\n            _self.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n                if (storeInCookie === void 0) { storeInCookie = false; }\r\n                // Validate inputs to ensure no cookie control characters.\r\n                var isInvalidInput = !_validateUserInput(authenticatedUserId) || (accountId && !_validateUserInput(accountId));\r\n                if (isInvalidInput) {\r\n                    _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 60 /* _eInternalMessageId.SetAuthContextFailedAccountName */, \"Setting auth user context failed. \" +\r\n                        \"User auth/account id should be of type string, and not contain commas, semi-colons, equal signs, spaces, or vertical-bars.\", true);\r\n                    return;\r\n                }\r\n                // Create cookie string.\r\n                _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = authenticatedUserId;\r\n                var authCookie = _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */];\r\n                if (accountId) {\r\n                    _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = accountId;\r\n                    authCookie = [_self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */], _self.accountId][_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n                }\r\n                if (storeInCookie) {\r\n                    // Set the cookie. No expiration date because this is a session cookie (expires when browser closed).\r\n                    // Encoding the cookie to handle unexpected unicode characters.\r\n                    _cookieManager.set(User[_DYN_AUTH_USER_COOKIE_NAM7 /* @min:%2eauthUserCookieName */], encodeURI(authCookie));\r\n                }\r\n            };\r\n            /**\r\n             * Clears the authenticated user id and the account id from the user context.\r\n             * @returns {}\r\n             */\r\n            _self.clearAuthenticatedUserContext = function () {\r\n                _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = null;\r\n                _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = null;\r\n                _cookieManager.del(User[_DYN_AUTH_USER_COOKIE_NAM7 /* @min:%2eauthUserCookieName */]);\r\n            };\r\n            _self[_DYN_UPDATE /* @min:%2eupdate */] = function (userId) {\r\n                // Optimizations to avoid setting and processing the cookie when not needed\r\n                if (_self.id !== userId || !_self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */]) {\r\n                    var user_id = userId ? userId : _generateNewId();\r\n                    var user_cookie = _generateNewCookie(user_id);\r\n                    _setUserCookie(user_cookie[_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]));\r\n                }\r\n            };\r\n        });\r\n    }\r\n// Removed Stub for User.prototype.setAuthenticatedUserContext.\r\n// Removed Stub for User.prototype.clearAuthenticatedUserContext.\r\n// Removed Stub for User.prototype.update.\r\n    User.cookieSeparator = \"|\";\r\n    User.userCookieName = \"ai_user\";\r\n    User.authUserCookieName = \"ai_authUser\";\r\n    return User;\r\n}());\r\nexport { User };\r\n//# sourceMappingURL=User.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* TelemetryContext.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { CtxTagKeys, Extensions, PageView, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { _InternalLogMessage, getSetValue, hasWindow, isNullOrUndefined, isString, objKeys, setValue } from \"@microsoft/applicationinsights-core-js\";\r\nimport { Application } from \"./Context/Application\";\r\nimport { Device } from \"./Context/Device\";\r\nimport { Internal } from \"./Context/Internal\";\r\nimport { Location } from \"./Context/Location\";\r\nimport { Session, _SessionManager } from \"./Context/Session\";\r\nimport { TelemetryTrace } from \"./Context/TelemetryTrace\";\r\nimport { User } from \"./Context/User\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_APPLY_APPLICATION_CO1, _DYN_APPLY_DEVICE_CONTEXT, _DYN_APPLY_INTERNAL_CONTE5, _DYN_APPLY_LOCATION_CONTE4, _DYN_APPLY_OPERATING_SYST3, _DYN_APPLY_OPERATION_CONT2, _DYN_APPLY_SESSION_CONTEX0, _DYN_APPLY_USER_CONTEXT, _DYN_AUTHENTICATED_ID, _DYN_AUTOMATIC_SESSION, _DYN_GET_SESSION_ID, _DYN_LENGTH, _DYN_SESSION_MANAGER, _DYN_TELEMETRY_TRACE } from \"./__DynamicConstants\";\r\nvar strExt = \"ext\";\r\nvar strTags = \"tags\";\r\nfunction _removeEmpty(target, name) {\r\n    if (target && target[name] && objKeys(target[name])[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n        delete target[name];\r\n    }\r\n}\r\nfunction _nullResult() {\r\n    return null;\r\n}\r\nvar TelemetryContext = /** @class */ (function () {\r\n    function TelemetryContext(core, defaultConfig, previousTraceCtx, unloadHookContainer) {\r\n        var _this = this;\r\n        var logger = core.logger;\r\n        dynamicProto(TelemetryContext, this, function (_self) {\r\n            _self.appId = _nullResult;\r\n            _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */] = _nullResult;\r\n            _self.application = new Application();\r\n            _self.internal = new Internal(defaultConfig, unloadHookContainer);\r\n            if (hasWindow()) {\r\n                _self[_DYN_SESSION_MANAGER /* @min:%2esessionManager */] = new _SessionManager(defaultConfig, core, unloadHookContainer);\r\n                _self.device = new Device();\r\n                _self.location = new Location();\r\n                _self.user = new User(defaultConfig, core, unloadHookContainer);\r\n                var traceId = void 0;\r\n                var parentId = void 0;\r\n                var name_1;\r\n                if (previousTraceCtx) {\r\n                    traceId = previousTraceCtx.getTraceId();\r\n                    parentId = previousTraceCtx.getSpanId();\r\n                    name_1 = previousTraceCtx.getName();\r\n                }\r\n                _self[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */] = new TelemetryTrace(traceId, parentId, name_1, logger);\r\n                _self.session = new Session();\r\n            }\r\n            _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */] = function () {\r\n                var session = _self.session;\r\n                var sesId = null;\r\n                // If customer set session info, apply their context; otherwise apply context automatically generated\r\n                if (session && isString(session.id)) {\r\n                    sesId = session.id;\r\n                }\r\n                else {\r\n                    // Gets the automatic session if it exists or an empty object\r\n                    var autoSession = (_self[_DYN_SESSION_MANAGER /* @min:%2esessionManager */] || {})[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n                    sesId = autoSession && isString(autoSession.id) ? autoSession.id : null;\r\n                }\r\n                return sesId;\r\n            };\r\n            _self[_DYN_APPLY_SESSION_CONTEX0 /* @min:%2eapplySessionContext */] = function (evt, itemCtx) {\r\n                setValue(getSetValue(evt.ext, Extensions.AppExt), \"sesId\", _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */](), isString);\r\n            };\r\n            _self[_DYN_APPLY_OPERATING_SYST3 /* @min:%2eapplyOperatingSystemContxt */] = function (evt, itemCtx) {\r\n                setValue(evt.ext, Extensions.OSExt, _self.os);\r\n            };\r\n            _self[_DYN_APPLY_APPLICATION_CO1 /* @min:%2eapplyApplicationContext */] = function (evt, itemCtx) {\r\n                var application = _self.application;\r\n                if (application) {\r\n                    // evt.ext.app\r\n                    var tags = getSetValue(evt, strTags);\r\n                    setValue(tags, CtxTagKeys.applicationVersion, application.ver, isString);\r\n                    setValue(tags, CtxTagKeys.applicationBuild, application.build, isString);\r\n                }\r\n            };\r\n            _self[_DYN_APPLY_DEVICE_CONTEXT /* @min:%2eapplyDeviceContext */] = function (evt, itemCtx) {\r\n                var device = _self.device;\r\n                if (device) {\r\n                    // evt.ext.device\r\n                    var extDevice = getSetValue(getSetValue(evt, strExt), Extensions.DeviceExt);\r\n                    setValue(extDevice, \"localId\", device.id, isString);\r\n                    setValue(extDevice, \"ip\", device.ip, isString);\r\n                    setValue(extDevice, \"model\", device.model, isString);\r\n                    setValue(extDevice, \"deviceClass\", device.deviceClass, isString);\r\n                }\r\n            };\r\n            _self[_DYN_APPLY_INTERNAL_CONTE5 /* @min:%2eapplyInternalContext */] = function (evt, itemCtx) {\r\n                var internal = _self.internal;\r\n                if (internal) {\r\n                    var tags = getSetValue(evt, strTags);\r\n                    setValue(tags, CtxTagKeys.internalAgentVersion, internal.agentVersion, isString); // not mapped in CS 4.0\r\n                    setValue(tags, CtxTagKeys.internalSdkVersion, dataSanitizeString(logger, internal.sdkVersion, 64), isString);\r\n                    if (evt.baseType === _InternalLogMessage.dataType || evt.baseType === PageView.dataType) {\r\n                        setValue(tags, CtxTagKeys.internalSnippet, internal.snippetVer, isString);\r\n                        setValue(tags, CtxTagKeys.internalSdkSrc, internal.sdkSrc, isString);\r\n                    }\r\n                }\r\n            };\r\n            _self[_DYN_APPLY_LOCATION_CONTE4 /* @min:%2eapplyLocationContext */] = function (evt, itemCtx) {\r\n                var location = _this.location;\r\n                if (location) {\r\n                    setValue(getSetValue(evt, strTags, []), CtxTagKeys.locationIp, location.ip, isString);\r\n                }\r\n            };\r\n            _self[_DYN_APPLY_OPERATION_CONT2 /* @min:%2eapplyOperationContext */] = function (evt, itemCtx) {\r\n                var telemetryTrace = _self[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */];\r\n                if (telemetryTrace) {\r\n                    var extTrace = getSetValue(getSetValue(evt, strExt), Extensions.TraceExt, { traceID: undefined, parentID: undefined });\r\n                    setValue(extTrace, \"traceID\", telemetryTrace.traceID, isString, isNullOrUndefined);\r\n                    setValue(extTrace, \"name\", telemetryTrace.name, isString, isNullOrUndefined);\r\n                    setValue(extTrace, \"parentID\", telemetryTrace.parentID, isString, isNullOrUndefined);\r\n                }\r\n            };\r\n            _self.applyWebContext = function (evt, itemCtx) {\r\n                var web = _this.web;\r\n                if (web) {\r\n                    setValue(getSetValue(evt, strExt), Extensions.WebExt, web);\r\n                }\r\n            };\r\n            _self[_DYN_APPLY_USER_CONTEXT /* @min:%2eapplyUserContext */] = function (evt, itemCtx) {\r\n                var user = _self.user;\r\n                if (user) {\r\n                    var tags = getSetValue(evt, strTags, []);\r\n                    // stays in tags\r\n                    setValue(tags, CtxTagKeys.userAccountId, user[_DYN_ACCOUNT_ID /* @min:%2eaccountId */], isString);\r\n                    // CS 4.0\r\n                    var extUser = getSetValue(getSetValue(evt, strExt), Extensions.UserExt);\r\n                    setValue(extUser, \"id\", user.id, isString);\r\n                    setValue(extUser, \"authId\", user[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */], isString);\r\n                }\r\n            };\r\n            _self.cleanUp = function (evt, itemCtx) {\r\n                var ext = evt.ext;\r\n                if (ext) {\r\n                    _removeEmpty(ext, Extensions.DeviceExt);\r\n                    _removeEmpty(ext, Extensions.UserExt);\r\n                    _removeEmpty(ext, Extensions.WebExt);\r\n                    _removeEmpty(ext, Extensions.OSExt);\r\n                    _removeEmpty(ext, Extensions.AppExt);\r\n                    _removeEmpty(ext, Extensions.TraceExt);\r\n                }\r\n            };\r\n        });\r\n    }\r\n// Removed Stub for TelemetryContext.prototype.applySessionContext.\r\n// Removed Stub for TelemetryContext.prototype.applyOperatingSystemContxt.\r\n// Removed Stub for TelemetryContext.prototype.applyApplicationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyDeviceContext.\r\n// Removed Stub for TelemetryContext.prototype.applyInternalContext.\r\n// Removed Stub for TelemetryContext.prototype.applyLocationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyOperationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyWebContext.\r\n// Removed Stub for TelemetryContext.prototype.applyUserContext.\r\n// Removed Stub for TelemetryContext.prototype.cleanUp.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    TelemetryContext.__ieDyn=1;\n\n    return TelemetryContext;\r\n}());\r\nexport { TelemetryContext };\r\n//# sourceMappingURL=TelemetryContext.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* PropertiesPlugin.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nvar _a;\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, PageView, PropertiesPluginIdentifier, createDistributedTraceContextFromTrace, utlSetStoragePrefix } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, _InternalLogMessage, _logInternalMessage, createProcessTelemetryContext, getNavigator, getSetValue, isNullOrUndefined, onConfigChange } from \"@microsoft/applicationinsights-core-js\";\r\nimport { objDeepFreeze, objDefine } from \"@nevware21/ts-utils\";\r\nimport { TelemetryContext } from \"./TelemetryContext\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_APPLY_APPLICATION_CO1, _DYN_APPLY_DEVICE_CONTEXT, _DYN_APPLY_INTERNAL_CONTE5, _DYN_APPLY_LOCATION_CONTE4, _DYN_APPLY_OPERATING_SYST3, _DYN_APPLY_OPERATION_CONT2, _DYN_APPLY_SESSION_CONTEX0, _DYN_APPLY_USER_CONTEXT, _DYN_GET_NEW_ID, _DYN_GET_SESSION_ID, _DYN_GET_TRACE_CTX, _DYN_ID_LENGTH, _DYN_IS_NEW_USER, _DYN_IS_USER_COOKIE_SET, _DYN_NAME_PREFIX, _DYN_SESSION_COOKIE_POSTF6, _DYN_SESSION_MANAGER, _DYN_TELEMETRY_TRACE, _DYN_UPDATE, _DYN_USER_COOKIE_POSTFIX } from \"./__DynamicConstants\";\r\nvar undefString;\r\nvar nullValue = null;\r\nvar _defaultConfig = objDeepFreeze((_a = {},\r\n    _a[_DYN_ACCOUNT_ID /* @min:accountId */] = nullValue,\r\n    _a.sessionRenewalMs = 30 * 60 * 1000,\r\n    _a.samplingPercentage = 100,\r\n    _a.sessionExpirationMs = 24 * 60 * 60 * 1000,\r\n    _a.cookieDomain = nullValue,\r\n    _a.sdkExtension = nullValue,\r\n    _a.isBrowserLinkTrackingEnabled = false,\r\n    _a.appId = nullValue,\r\n    _a[_DYN_GET_SESSION_ID /* @min:getSessionId */] = nullValue,\r\n    _a[_DYN_NAME_PREFIX /* @min:namePrefix */] = undefString,\r\n    _a[_DYN_SESSION_COOKIE_POSTF6 /* @min:sessionCookiePostfix */] = undefString,\r\n    _a[_DYN_USER_COOKIE_POSTFIX /* @min:userCookiePostfix */] = undefString,\r\n    _a[_DYN_ID_LENGTH /* @min:idLength */] = 22,\r\n    _a[_DYN_GET_NEW_ID /* @min:getNewId */] = nullValue,\r\n    _a));\r\nvar PropertiesPlugin = /** @class */ (function (_super) {\r\n    __extends(PropertiesPlugin, _super);\r\n    function PropertiesPlugin() {\r\n        var _this = _super.call(this) || this;\r\n        _this.priority = 110;\r\n        _this.identifier = PropertiesPluginIdentifier;\r\n        var _extensionConfig;\r\n        var _distributedTraceCtx;\r\n        var _previousTraceCtx;\r\n        var _context;\r\n        var _disableUserInitMessage;\r\n        dynamicProto(PropertiesPlugin, _this, function (_self, _base) {\r\n            _initDefaults();\r\n            objDefine(_self, \"context\", {\r\n                g: function () {\r\n                    return _context;\r\n                }\r\n            });\r\n            _self.initialize = function (config, core, extensions, pluginChain) {\r\n                _base.initialize(config, core, extensions, pluginChain);\r\n                _populateDefaults(config);\r\n            };\r\n            /**\r\n             * Add Part A fields to the event\r\n             * @param event - The event that needs to be processed\r\n             */\r\n            _self.processTelemetry = function (event, itemCtx) {\r\n                if (!isNullOrUndefined(event)) {\r\n                    itemCtx = _self._getTelCtx(itemCtx);\r\n                    // If the envelope is PageView, reset the internal message count so that we can send internal telemetry for the new page.\r\n                    if (event.name === PageView.envelopeType) {\r\n                        itemCtx.diagLog().resetInternalMessageCount();\r\n                    }\r\n                    var theContext = (_context || {});\r\n                    if (theContext.session) {\r\n                        // If customer did not provide custom session id update the session manager\r\n                        if (typeof _context.session.id !== \"string\" && theContext[_DYN_SESSION_MANAGER /* @min:%2esessionManager */]) {\r\n                            theContext[_DYN_SESSION_MANAGER /* @min:%2esessionManager */][_DYN_UPDATE /* @min:%2eupdate */]();\r\n                        }\r\n                    }\r\n                    var userCtx = theContext.user;\r\n                    if (userCtx && !userCtx[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */]) {\r\n                        userCtx[_DYN_UPDATE /* @min:%2eupdate */](theContext.user.id);\r\n                    }\r\n                    _processTelemetryInternal(event, itemCtx);\r\n                    if (userCtx && userCtx[_DYN_IS_NEW_USER /* @min:%2eisNewUser */]) {\r\n                        userCtx[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = false;\r\n                        if (!_disableUserInitMessage) {\r\n                            var message = new _InternalLogMessage(72 /* _eInternalMessageId.SendBrowserInfoOnUserInit */, ((getNavigator() || {}).userAgent || \"\"));\r\n                            _logInternalMessage(itemCtx.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, message);\r\n                        }\r\n                    }\r\n                    _self.processNext(event, itemCtx);\r\n                }\r\n            };\r\n            _self._doTeardown = function (unloadCtx, unloadState) {\r\n                var core = (unloadCtx || {}).core();\r\n                if (core && core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */]) {\r\n                    var traceCtx = core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */](false);\r\n                    if (traceCtx === _distributedTraceCtx) {\r\n                        core.setTraceCtx(_previousTraceCtx);\r\n                    }\r\n                }\r\n                _initDefaults();\r\n            };\r\n            function _initDefaults() {\r\n                _extensionConfig = null;\r\n                _distributedTraceCtx = null;\r\n                _previousTraceCtx = null;\r\n                _context = null;\r\n                _disableUserInitMessage = true;\r\n            }\r\n            function _populateDefaults(config) {\r\n                var identifier = _self.identifier;\r\n                var core = _self.core;\r\n                // This function will be re-called whenever any referenced configuration is changed\r\n                _self._addHook(onConfigChange(config, function () {\r\n                    var ctx = createProcessTelemetryContext(null, config, core);\r\n                    if (config.storagePrefix) {\r\n                        utlSetStoragePrefix(config.storagePrefix);\r\n                    }\r\n                    _disableUserInitMessage = config.disableUserInitMessage === false ? false : true;\r\n                    _extensionConfig = ctx.getExtCfg(identifier, _defaultConfig);\r\n                    // Test hook to allow accessing the internal values -- explicitly not defined as an available property on the class\r\n                    _self[\"_extConfig\"] = _extensionConfig;\r\n                }));\r\n                // This is outside of the onConfigChange as we don't want to update (replace) these values whenever a referenced config item changes\r\n                _previousTraceCtx = core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */](false);\r\n                _context = new TelemetryContext(core, _extensionConfig, _previousTraceCtx, _self._unloadHooks);\r\n                _distributedTraceCtx = createDistributedTraceContextFromTrace(_self.context[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */], _previousTraceCtx);\r\n                core.setTraceCtx(_distributedTraceCtx);\r\n                _self.context.appId = function () {\r\n                    var breezeChannel = core.getPlugin(BreezeChannelIdentifier);\r\n                    return breezeChannel ? breezeChannel.plugin[\"_appId\"] : null;\r\n                };\r\n            }\r\n            function _processTelemetryInternal(evt, itemCtx) {\r\n                // Set Part A fields\r\n                getSetValue(evt, \"tags\", []);\r\n                getSetValue(evt, \"ext\", {});\r\n                var ctx = _self.context;\r\n                ctx[_DYN_APPLY_SESSION_CONTEX0 /* @min:%2eapplySessionContext */](evt, itemCtx);\r\n                ctx[_DYN_APPLY_APPLICATION_CO1 /* @min:%2eapplyApplicationContext */](evt, itemCtx);\r\n                ctx[_DYN_APPLY_DEVICE_CONTEXT /* @min:%2eapplyDeviceContext */](evt, itemCtx);\r\n                ctx[_DYN_APPLY_OPERATION_CONT2 /* @min:%2eapplyOperationContext */](evt, itemCtx);\r\n                ctx[_DYN_APPLY_USER_CONTEXT /* @min:%2eapplyUserContext */](evt, itemCtx);\r\n                ctx[_DYN_APPLY_OPERATING_SYST3 /* @min:%2eapplyOperatingSystemContxt */](evt, itemCtx);\r\n                ctx.applyWebContext(evt, itemCtx);\r\n                ctx[_DYN_APPLY_LOCATION_CONTE4 /* @min:%2eapplyLocationContext */](evt, itemCtx); // legacy tags\r\n                ctx[_DYN_APPLY_INTERNAL_CONTE5 /* @min:%2eapplyInternalContext */](evt, itemCtx); // legacy tags\r\n                ctx.cleanUp(evt, itemCtx);\r\n            }\r\n        });\r\n        return _this;\r\n    }\r\n// Removed Stub for PropertiesPlugin.prototype.initialize.\r\n// Removed Stub for PropertiesPlugin.prototype.processTelemetry.\r\n    // This is a workaround for an IE bug when using dynamicProto() with classes that don't have any\n    // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n    PropertiesPlugin.__ieDyn=1;\n\n    return PropertiesPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport default PropertiesPlugin;\r\n//# sourceMappingURL=PropertiesPlugin.js.map","/*\n * Application Insights JavaScript SDK - Web, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// ###################################################################################################################################################\r\n// Note: DON'T Export these const from the package as we are still targeting IE/ES5 this will export a mutable variables that someone could change ###\r\n// ###################################################################################################################################################\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nvar _AUTHENTICATED_USER_CONTEXT = \"AuthenticatedUserContext\";\r\nvar _TRACK = \"track\";\r\nexport var STR_EMPTY = \"\";\r\nexport var STR_SNIPPET = \"snippet\";\r\nexport var STR_GET_COOKIE_MGR = \"getCookieMgr\";\r\nexport var STR_START_TRACK_PAGE = \"startTrackPage\";\r\nexport var STR_STOP_TRACK_PAGE = \"stopTrackPage\";\r\nexport var STR_FLUSH = \"flush\";\r\nexport var STR_START_TRACK_EVENT = \"startTrackEvent\";\r\nexport var STR_STOP_TRACK_EVENT = \"stopTrackEvent\";\r\nexport var STR_ADD_TELEMETRY_INITIALIZER = \"addTelemetryInitializer\";\r\nexport var STR_ADD_TELEMETRY_INITIALIZERS = STR_ADD_TELEMETRY_INITIALIZER + \"s\";\r\nexport var STR_POLL_INTERNAL_LOGS = \"pollInternalLogs\";\r\nexport var STR_GET_PLUGIN = \"getPlugin\";\r\nexport var STR_EVT_NAMESPACE = \"evtNamespace\";\r\nexport var STR_TRACK_EVENT = _TRACK + \"Event\";\r\nexport var STR_TRACK_TRACE = _TRACK + \"Trace\";\r\nexport var STR_TRACK_METRIC = _TRACK + \"Metric\";\r\nexport var STR_TRACK_PAGE_VIEW = _TRACK + \"PageView\";\r\nexport var STR_TRACK_EXCEPTION = _TRACK + \"Exception\";\r\nexport var STR_TRACK_DEPENDENCY_DATA = _TRACK + \"DependencyData\";\r\nexport var STR_SET_AUTHENTICATED_USER_CONTEXT = \"set\" + _AUTHENTICATED_USER_CONTEXT;\r\nexport var STR_CLEAR_AUTHENTICATED_USER_CONTEXT = \"clear\" + _AUTHENTICATED_USER_CONTEXT;\r\nexport var CONFIG_ENDPOINT_URL = \"https://js.monitor.azure.com/scripts/b/ai.config.1.cfg.json\";\r\n//# sourceMappingURL=InternalConstants.js.map","/*\n * Application Insights JavaScript SDK - Web, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nvar _a, _b, _c, _d;\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AnalyticsPlugin } from \"@microsoft/applicationinsights-analytics-js\";\r\nimport { CfgSyncPlugin } from \"@microsoft/applicationinsights-cfgsync-js\";\r\nimport { Sender } from \"@microsoft/applicationinsights-channel-js\";\r\nimport { AnalyticsPluginIdentifier, DEFAULT_BREEZE_PATH, PropertiesPluginIdentifier, ThrottleMgr, parseConnectionString } from \"@microsoft/applicationinsights-common\";\r\nimport { AppInsightsCore, _throwInternal, addPageHideEventListener, addPageUnloadEventListener, cfgDfMerge, cfgDfValidate, createDynamicConfig, createProcessTelemetryContext, createUniqueNamespace, doPerf, hasDocument, hasWindow, isArray, isFeatureEnabled, isFunction, isNullOrUndefined, isReactNative, isString, mergeEvtNamespace, onConfigChange, proxyAssign, proxyFunctions, removePageHideEventListener, removePageUnloadEventListener } from \"@microsoft/applicationinsights-core-js\";\r\nimport { AjaxPlugin as DependenciesPlugin } from \"@microsoft/applicationinsights-dependencies-js\";\r\nimport { PropertiesPlugin } from \"@microsoft/applicationinsights-properties-js\";\r\nimport { createPromise, createSyncPromise, doAwaitResponse } from \"@nevware21/ts-async\";\r\nimport { arrForEach, arrIndexOf, isPromiseLike, objDefine, objForEachKey, strIndexOf, throwUnsupported } from \"@nevware21/ts-utils\";\r\nimport { CONFIG_ENDPOINT_URL, STR_ADD_TELEMETRY_INITIALIZER, STR_CLEAR_AUTHENTICATED_USER_CONTEXT, STR_EVT_NAMESPACE, STR_FLUSH, STR_GET_COOKIE_MGR, STR_GET_PLUGIN, STR_POLL_INTERNAL_LOGS, STR_SET_AUTHENTICATED_USER_CONTEXT, STR_SNIPPET, STR_START_TRACK_EVENT, STR_START_TRACK_PAGE, STR_STOP_TRACK_EVENT, STR_STOP_TRACK_PAGE, STR_TRACK_DEPENDENCY_DATA, STR_TRACK_EVENT, STR_TRACK_EXCEPTION, STR_TRACK_METRIC, STR_TRACK_PAGE_VIEW, STR_TRACK_TRACE } from \"./InternalConstants\";\r\nimport { _DYN_ADD_HOUSEKEEPING_BEF2, _DYN_CONNECTION_STRING, _DYN_CONTEXT, _DYN_ENDPOINT_URL, _DYN_INGESTIONENDPOINT, _DYN_INSTRUMENTATIONKEY0, _DYN_INSTRUMENTATION_KEY, _DYN_ONUNLOAD_FLUSH, _DYN_QUEUE, _DYN_SEND_MESSAGE, _DYN_UPDATE_SNIPPET_DEFIN3, _DYN_USER_OVERRIDE_ENDPOI1, _DYN_VERSION } from \"./__DynamicConstants\";\r\nvar _internalSdkSrc;\r\n// This is an exclude list of properties that should not be updated during initialization\r\n// They include a combination of private and internal property names\r\nvar _ignoreUpdateSnippetProperties = [\r\n    STR_SNIPPET, \"dependencies\", \"properties\", \"_snippetVersion\", \"appInsightsNew\", \"getSKUDefaults\"\r\n];\r\nvar IKEY_USAGE = \"iKeyUsage\";\r\nvar CDN_USAGE = \"CdnUsage\";\r\nvar SDK_LOADER_VER = \"SdkLoaderVer\";\r\nvar UNDEFINED_VALUE = undefined;\r\nvar default_limit = {\r\n    samplingRate: 100,\r\n    maxSendNumber: 1\r\n};\r\nvar default_interval = {\r\n    monthInterval: 3,\r\n    daysOfMonth: [28]\r\n};\r\nvar default_throttle_config = {\r\n    disabled: true,\r\n    limit: cfgDfMerge(default_limit),\r\n    interval: cfgDfMerge(default_interval)\r\n};\r\n// We need to include all properties that we only reference that we want to be dynamically updatable here\r\n// So they are converted even when not specified in the passed configuration\r\nvar defaultConfigValues = (_a = {},\r\n    _a[_DYN_CONNECTION_STRING /* @min:connectionString */] = UNDEFINED_VALUE,\r\n    _a[_DYN_ENDPOINT_URL /* @min:endpointUrl */] = UNDEFINED_VALUE,\r\n    _a[_DYN_INSTRUMENTATION_KEY /* @min:instrumentationKey */] = UNDEFINED_VALUE,\r\n    _a[_DYN_USER_OVERRIDE_ENDPOI1 /* @min:userOverrideEndpointUrl */] = UNDEFINED_VALUE,\r\n    _a.diagnosticLogInterval = cfgDfValidate(_chkDiagLevel, 10000),\r\n    _a.featureOptIn = (_b = {},\r\n        _b[IKEY_USAGE] = { mode: 3 /* FeatureOptInMode.enable */ },\r\n        _b[CDN_USAGE] = { mode: 2 /* FeatureOptInMode.disable */ },\r\n        _b[SDK_LOADER_VER] = { mode: 2 /* FeatureOptInMode.disable */ },\r\n        _b),\r\n    _a.throttleMgrCfg = cfgDfMerge((_c = {},\r\n        _c[109 /* _eInternalMessageId.DefaultThrottleMsgKey */] = cfgDfMerge(default_throttle_config),\r\n        _c[106 /* _eInternalMessageId.InstrumentationKeyDeprecation */] = cfgDfMerge(default_throttle_config),\r\n        _c[111 /* _eInternalMessageId.SdkLdrUpdate */] = cfgDfMerge(default_throttle_config),\r\n        _c[110 /* _eInternalMessageId.CdnDeprecation */] = cfgDfMerge(default_throttle_config),\r\n        _c)),\r\n    _a.extensionConfig = cfgDfMerge((_d = {},\r\n        _d[\"AppInsightsCfgSyncPlugin\"] = cfgDfMerge({\r\n            cfgUrl: CONFIG_ENDPOINT_URL,\r\n            syncMode: 2 /* ICfgSyncMode.Receive */\r\n        }),\r\n        _d)),\r\n    _a);\r\nfunction _chkDiagLevel(value) {\r\n    // Make sure we have a value > 0\r\n    return value && value > 0;\r\n}\r\n/**\r\n * Application Insights API\r\n * @group Entrypoint\r\n * @group Classes\r\n * @class Initialization\r\n * @implements {IApplicationInsights}\r\n */\r\nvar AppInsightsSku = /** @class */ (function () {\r\n    function AppInsightsSku(snippet) {\r\n        var _this = this;\r\n        // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n        var dependencies;\r\n        var properties;\r\n        var _sender;\r\n        var _snippetVersion;\r\n        var _evtNamespace;\r\n        var _houseKeepingNamespace;\r\n        var _core;\r\n        var _config;\r\n        var _analyticsPlugin;\r\n        var _cfgSyncPlugin;\r\n        var _throttleMgr;\r\n        var _iKeySentMessage;\r\n        var _cdnSentMessage;\r\n        var _sdkVerSentMessage;\r\n        dynamicProto(AppInsightsSku, this, function (_self) {\r\n            _initDefaults();\r\n            objDefine(_self, \"config\", {\r\n                g: function () {\r\n                    return _config;\r\n                }\r\n            });\r\n            arrForEach([\"pluginVersionStringArr\", \"pluginVersionString\"], function (key) {\r\n                objDefine(_self, key, {\r\n                    g: function () {\r\n                        if (_core) {\r\n                            return _core[key];\r\n                        }\r\n                        return null;\r\n                    }\r\n                });\r\n            });\r\n            // initialize the queue and config in case they are undefined\r\n            _snippetVersion = \"\" + (snippet.sv || snippet[_DYN_VERSION /* @min:%2eversion */] || \"\");\r\n            snippet[_DYN_QUEUE /* @min:%2equeue */] = snippet[_DYN_QUEUE /* @min:%2equeue */] || [];\r\n            snippet[_DYN_VERSION /* @min:%2eversion */] = snippet[_DYN_VERSION /* @min:%2eversion */] || 2.0; // Default to new version\r\n            var cfgHandler = createDynamicConfig(snippet.config || {}, defaultConfigValues);\r\n            _config = cfgHandler.cfg;\r\n            _analyticsPlugin = new AnalyticsPlugin();\r\n            objDefine(_self, \"appInsights\", {\r\n                g: function () {\r\n                    return _analyticsPlugin;\r\n                }\r\n            });\r\n            properties = new PropertiesPlugin();\r\n            dependencies = new DependenciesPlugin();\r\n            _sender = new Sender();\r\n            _core = new AppInsightsCore();\r\n            objDefine(_self, \"core\", {\r\n                g: function () {\r\n                    return _core;\r\n                }\r\n            });\r\n            // Will get recalled if any referenced values are changed\r\n            _addUnloadHook(onConfigChange(cfgHandler, function () {\r\n                var configCs = _config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */];\r\n                function _parseCs() {\r\n                    return createSyncPromise(function (resolve, reject) {\r\n                        doAwaitResponse(configCs, function (res) {\r\n                            var curCs = res && res.value;\r\n                            var parsedCs = null;\r\n                            if (!res.rejected && curCs) {\r\n                                // replace cs with resolved values in case of circular promises\r\n                                _config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */] = curCs;\r\n                                parsedCs = parseConnectionString(curCs);\r\n                            }\r\n                            // if can't resolve cs promise, null will be returned\r\n                            resolve(parsedCs);\r\n                        });\r\n                    });\r\n                }\r\n                if (isPromiseLike(configCs)) {\r\n                    var ikeyPromise = createSyncPromise(function (resolve, reject) {\r\n                        _parseCs().then(function (cs) {\r\n                            var ikey = _config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n                            ikey = cs && cs[_DYN_INSTRUMENTATIONKEY0 /* @min:%2einstrumentationkey */] || ikey;\r\n                            resolve(ikey);\r\n                        }).catch(function (e) {\r\n                            // parseCs will always resolve(unless timeout)\r\n                            // return null in case any error happens\r\n                            resolve(null);\r\n                        });\r\n                    });\r\n                    var url = _config[_DYN_USER_OVERRIDE_ENDPOI1 /* @min:%2euserOverrideEndpointUrl */];\r\n                    if (isNullOrUndefined(url)) {\r\n                        url = createSyncPromise(function (resolve, reject) {\r\n                            _parseCs().then(function (cs) {\r\n                                var url = _config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */];\r\n                                var ingest = cs && cs[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */];\r\n                                url = ingest ? ingest + DEFAULT_BREEZE_PATH : url;\r\n                                resolve(url);\r\n                            }).catch(function (e) {\r\n                                // parseCs will always resolve(unless timeout)\r\n                                // return null in case any error happens\r\n                                resolve(null);\r\n                            });\r\n                        });\r\n                    }\r\n                    _config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */] = ikeyPromise;\r\n                    _config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */] = url;\r\n                }\r\n                if (isString(configCs) && configCs) {\r\n                    // confirm if promiselike function present\r\n                    // handle cs promise here\r\n                    // add cases to oneNote\r\n                    var cs = parseConnectionString(configCs);\r\n                    var ingest = cs[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */];\r\n                    _config.endpointUrl = _config[_DYN_USER_OVERRIDE_ENDPOI1 /* @min:%2euserOverrideEndpointUrl */] ? _config[_DYN_USER_OVERRIDE_ENDPOI1 /* @min:%2euserOverrideEndpointUrl */] : ingest + DEFAULT_BREEZE_PATH; // add /v2/track\r\n                    _config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */] = cs[_DYN_INSTRUMENTATIONKEY0 /* @min:%2einstrumentationkey */] || _config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n                }\r\n                // userOverrideEndpointUrl have the highest priority\r\n                _config.endpointUrl = _config[_DYN_USER_OVERRIDE_ENDPOI1 /* @min:%2euserOverrideEndpointUrl */] ? _config[_DYN_USER_OVERRIDE_ENDPOI1 /* @min:%2euserOverrideEndpointUrl */] : _config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */];\r\n            }));\r\n            _self[STR_SNIPPET /* @min:%2esnippet */] = snippet;\r\n            _self[STR_FLUSH /* @min:%2eflush */] = function (async, callBack) {\r\n                if (async === void 0) { async = true; }\r\n                var result;\r\n                doPerf(_core, function () { return \"AISKU.flush\"; }, function () {\r\n                    if (async && !callBack) {\r\n                        result = createPromise(function (resolve) {\r\n                            callBack = resolve;\r\n                        });\r\n                    }\r\n                    var waiting = 1;\r\n                    var flushDone = function () {\r\n                        waiting--;\r\n                        if (waiting === 0) {\r\n                            callBack();\r\n                        }\r\n                    };\r\n                    arrForEach(_core.getChannels(), function (channel) {\r\n                        if (channel) {\r\n                            waiting++;\r\n                            channel[STR_FLUSH /* @min:%2eflush */](async, flushDone);\r\n                        }\r\n                    });\r\n                    // decrement the initial \"waiting\"\r\n                    flushDone();\r\n                }, null, async);\r\n                return result;\r\n            };\r\n            _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */] = function (async) {\r\n                if (async === void 0) { async = true; }\r\n                arrForEach(_core.getChannels(), function (channel) {\r\n                    if (channel[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]) {\r\n                        channel[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]();\r\n                    }\r\n                    else {\r\n                        channel[STR_FLUSH /* @min:%2eflush */](async);\r\n                    }\r\n                });\r\n            };\r\n            _self.loadAppInsights = function (legacyMode, logger, notificationManager) {\r\n                if (legacyMode === void 0) { legacyMode = false; }\r\n                if (legacyMode) {\r\n                    throwUnsupported(\"Legacy Mode is no longer supported\");\r\n                }\r\n                function _updateSnippetProperties(snippet) {\r\n                    if (snippet) {\r\n                        var snippetVer = \"\";\r\n                        if (!isNullOrUndefined(_snippetVersion)) {\r\n                            snippetVer += _snippetVersion;\r\n                        }\r\n                        if (_self[_DYN_CONTEXT /* @min:%2econtext */] && _self[_DYN_CONTEXT /* @min:%2econtext */].internal) {\r\n                            _self[_DYN_CONTEXT /* @min:%2econtext */].internal.snippetVer = snippetVer || \"-\";\r\n                        }\r\n                        // apply updated properties to the global instance (snippet)\r\n                        objForEachKey(_self, function (field, value) {\r\n                            if (isString(field) &&\r\n                                !isFunction(value) &&\r\n                                field && field[0] !== \"_\" && // Don't copy \"internal\" values\r\n                                arrIndexOf(_ignoreUpdateSnippetProperties, field) === -1) {\r\n                                if (snippet[field] !== value) {\r\n                                    snippet[field] = value;\r\n                                }\r\n                            }\r\n                        });\r\n                    }\r\n                }\r\n                doPerf(_self.core, function () { return \"AISKU.loadAppInsights\"; }, function () {\r\n                    // initialize core\r\n                    _core.initialize(_config, [_sender, properties, dependencies, _analyticsPlugin, _cfgSyncPlugin], logger, notificationManager);\r\n                    objDefine(_self, \"context\", {\r\n                        g: function () { return properties[_DYN_CONTEXT /* @min:%2econtext */]; }\r\n                    });\r\n                    if (!_throttleMgr) {\r\n                        _throttleMgr = new ThrottleMgr(_core);\r\n                    }\r\n                    var sdkSrc = _findSdkSourceFile();\r\n                    if (sdkSrc && _self[_DYN_CONTEXT /* @min:%2econtext */]) {\r\n                        _self[_DYN_CONTEXT /* @min:%2econtext */].internal.sdkSrc = sdkSrc;\r\n                    }\r\n                    _updateSnippetProperties(_self[STR_SNIPPET /* @min:%2esnippet */]);\r\n                    // Empty queue of all api calls logged prior to sdk download\r\n                    _self.emptyQueue();\r\n                    _self[STR_POLL_INTERNAL_LOGS /* @min:%2epollInternalLogs */]();\r\n                    _self[_DYN_ADD_HOUSEKEEPING_BEF2 /* @min:%2eaddHousekeepingBeforeUnload */](_self);\r\n                    _addUnloadHook(onConfigChange(cfgHandler, function () {\r\n                        var defaultEnable = false;\r\n                        if (_config.throttleMgrCfg[109 /* _eInternalMessageId.DefaultThrottleMsgKey */]) {\r\n                            defaultEnable = !_config.throttleMgrCfg[109 /* _eInternalMessageId.DefaultThrottleMsgKey */].disabled;\r\n                        }\r\n                        if (!_throttleMgr.isReady() && _config.extensionConfig && _config.extensionConfig[_cfgSyncPlugin.identifier] && defaultEnable) {\r\n                            // set ready state to true will automatically trigger flush()\r\n                            _throttleMgr.onReadyState(true);\r\n                        }\r\n                        var result;\r\n                        if (!_iKeySentMessage && !_config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */] && isFeatureEnabled(IKEY_USAGE, _config)) {\r\n                            result = _throttleMgr[_DYN_SEND_MESSAGE /* @min:%2esendMessage */](106 /* _eInternalMessageId.InstrumentationKeyDeprecation */, \"See Instrumentation key support at aka.ms/IkeyMigrate\");\r\n                            _iKeySentMessage = true;\r\n                        }\r\n                        if (!_cdnSentMessage && _self[_DYN_CONTEXT /* @min:%2econtext */].internal.sdkSrc && _self[_DYN_CONTEXT /* @min:%2econtext */].internal.sdkSrc.indexOf(\"az416426\") != -1 && isFeatureEnabled(CDN_USAGE, _config)) {\r\n                            result = _throttleMgr[_DYN_SEND_MESSAGE /* @min:%2esendMessage */](110 /* _eInternalMessageId.CdnDeprecation */, \"See Cdn support notice at aka.ms/JsActiveCdn\");\r\n                            _cdnSentMessage = true;\r\n                        }\r\n                        if (!_sdkVerSentMessage && parseInt(_snippetVersion) < 6 && isFeatureEnabled(SDK_LOADER_VER, _config)) {\r\n                            result = _throttleMgr[_DYN_SEND_MESSAGE /* @min:%2esendMessage */](111 /* _eInternalMessageId.SdkLdrUpdate */, \"An updated Sdk Loader is available, see aka.ms/SnippetVer\");\r\n                            _sdkVerSentMessage = true;\r\n                        }\r\n                    }));\r\n                });\r\n                return _self;\r\n            };\r\n            _self[_DYN_UPDATE_SNIPPET_DEFIN3 /* @min:%2eupdateSnippetDefinitions */] = function (snippet) {\r\n                // apply full appInsights to the global instance\r\n                // Note: This must be called before loadAppInsights is called\r\n                proxyAssign(snippet, _self, function (name) {\r\n                    // Not excluding names prefixed with \"_\" as we need to proxy some functions like _onError\r\n                    return name && arrIndexOf(_ignoreUpdateSnippetProperties, name) === -1;\r\n                });\r\n            };\r\n            _self.emptyQueue = function () {\r\n                // call functions that were queued before the main script was loaded\r\n                try {\r\n                    if (isArray(_self.snippet[_DYN_QUEUE /* @min:%2equeue */])) {\r\n                        // note: do not check length in the for-loop conditional in case something goes wrong and the stub methods are not overridden.\r\n                        var length_1 = _self.snippet[_DYN_QUEUE /* @min:%2equeue */].length;\r\n                        for (var i = 0; i < length_1; i++) {\r\n                            var call = _self.snippet[_DYN_QUEUE /* @min:%2equeue */][i];\r\n                            call();\r\n                        }\r\n                        _self.snippet[_DYN_QUEUE /* @min:%2equeue */] = undefined;\r\n                        delete _self.snippet[_DYN_QUEUE /* @min:%2equeue */];\r\n                    }\r\n                }\r\n                catch (exception) {\r\n                    var properties_1 = {};\r\n                    if (exception && isFunction(exception.toString)) {\r\n                        properties_1.exception = exception.toString();\r\n                    }\r\n                    // need from core\r\n                    // Microsoft.ApplicationInsights._InternalLogging.throwInternal(\r\n                    //     eLoggingSeverity.WARNING,\r\n                    //     _eInternalMessageId.FailedToSendQueuedTelemetry,\r\n                    //     \"Failed to send queued telemetry\",\r\n                    //     properties);\r\n                }\r\n            };\r\n            _self[_DYN_ADD_HOUSEKEEPING_BEF2 /* @min:%2eaddHousekeepingBeforeUnload */] = function (appInsightsInstance) {\r\n                // Add callback to push events when the user navigates away\r\n                if (hasWindow() || hasDocument()) {\r\n                    var performHousekeeping_1 = function () {\r\n                        // Adds the ability to flush all data before the page unloads.\r\n                        // Note: This approach tries to push a sync request with all the pending events onbeforeunload.\r\n                        // Firefox does not respect this.Other browsers DO push out the call with < 100% hit rate.\r\n                        // Telemetry here will help us analyze how effective this approach is.\r\n                        // Another approach would be to make this call sync with a acceptable timeout to reduce the\r\n                        // impact on user experience.\r\n                        // appInsightsInstance.context._sender.triggerSend();\r\n                        appInsightsInstance[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */](false);\r\n                        // Back up the current session to local storage\r\n                        // This lets us close expired sessions after the cookies themselves expire\r\n                        if (isFunction(_self.core[STR_GET_PLUGIN /* @min:%2egetPlugin */])) {\r\n                            var loadedPlugin = _this.core[STR_GET_PLUGIN /* @min:%2egetPlugin */](PropertiesPluginIdentifier);\r\n                            if (loadedPlugin) {\r\n                                var propertiesPlugin = loadedPlugin.plugin;\r\n                                if (propertiesPlugin && propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */] && propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */]._sessionManager) {\r\n                                    propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */]._sessionManager.backup();\r\n                                }\r\n                            }\r\n                        }\r\n                    };\r\n                    var added_1 = false;\r\n                    if (!_houseKeepingNamespace) {\r\n                        _houseKeepingNamespace = mergeEvtNamespace(_evtNamespace, _core[STR_EVT_NAMESPACE /* @min:%2eevtNamespace */] && _core[STR_EVT_NAMESPACE /* @min:%2eevtNamespace */]());\r\n                    }\r\n                    // Will be recalled if any referenced config properties change\r\n                    _addUnloadHook(onConfigChange(_config, function (details) {\r\n                        var coreConfig = details.cfg;\r\n                        var analyticsPlugin = appInsightsInstance.appInsights;\r\n                        var ctx = createProcessTelemetryContext(null, coreConfig, analyticsPlugin.core);\r\n                        var extConfig = ctx.getExtCfg(analyticsPlugin.identifier || AnalyticsPluginIdentifier);\r\n                        // As we could get recalled, remove any previously registered event handlers first\r\n                        _removePageEventHandlers();\r\n                        var excludePageUnloadEvents = coreConfig.disablePageUnloadEvents;\r\n                        if (!extConfig.disableFlushOnBeforeUnload) {\r\n                            // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n                            // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n                            if (addPageUnloadEventListener(performHousekeeping_1, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n                                added_1 = true;\r\n                            }\r\n                            // We also need to hook the pagehide and visibilitychange events as not all versions of Safari support load/unload events.\r\n                            if (addPageHideEventListener(performHousekeeping_1, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n                                added_1 = true;\r\n                            }\r\n                            // A reactNative app may not have a window and therefore the beforeunload/pagehide events -- so don't\r\n                            // log the failure in this case\r\n                            if (!added_1 && !isReactNative()) {\r\n                                _throwInternal(_core.logger, 1 /* eLoggingSeverity.CRITICAL */, 19 /* _eInternalMessageId.FailedToAddHandlerForOnBeforeUnload */, \"Could not add handler for beforeunload and pagehide\");\r\n                            }\r\n                        }\r\n                        if (!added_1 && !extConfig.disableFlushOnUnload) {\r\n                            // If we didn't add the normal set then attempt to add the pagehide and visibilitychange only\r\n                            addPageHideEventListener(performHousekeeping_1, excludePageUnloadEvents, _houseKeepingNamespace);\r\n                        }\r\n                    }));\r\n                }\r\n            };\r\n            _self.getSender = function () {\r\n                return _sender;\r\n            };\r\n            _self.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n                var unloadDone = false;\r\n                var result;\r\n                if (isAsync && !unloadComplete) {\r\n                    result = createPromise(function (resolve) {\r\n                        // Set the callback to the promise resolve callback\r\n                        unloadComplete = resolve;\r\n                    });\r\n                }\r\n                function _unloadCallback(unloadState) {\r\n                    if (!unloadDone) {\r\n                        unloadDone = true;\r\n                        _initDefaults();\r\n                        unloadComplete && unloadComplete(unloadState);\r\n                    }\r\n                }\r\n                _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */](isAsync);\r\n                _removePageEventHandlers();\r\n                _core.unload && _core.unload(isAsync, _unloadCallback, cbTimeout);\r\n                return result;\r\n            };\r\n            proxyFunctions(_self, _analyticsPlugin, [\r\n                STR_GET_COOKIE_MGR,\r\n                STR_TRACK_EVENT,\r\n                STR_TRACK_PAGE_VIEW,\r\n                \"trackPageViewPerformance\",\r\n                STR_TRACK_EXCEPTION,\r\n                \"_onerror\",\r\n                STR_TRACK_TRACE,\r\n                STR_TRACK_METRIC,\r\n                STR_START_TRACK_PAGE,\r\n                STR_STOP_TRACK_PAGE,\r\n                STR_START_TRACK_EVENT,\r\n                STR_STOP_TRACK_EVENT\r\n            ]);\r\n            proxyFunctions(_self, _getCurrentDependencies, [\r\n                STR_TRACK_DEPENDENCY_DATA,\r\n                \"addDependencyListener\",\r\n                \"addDependencyInitializer\"\r\n            ]);\r\n            proxyFunctions(_self, _core, [\r\n                STR_ADD_TELEMETRY_INITIALIZER,\r\n                STR_POLL_INTERNAL_LOGS,\r\n                \"stopPollingInternalLogs\",\r\n                STR_GET_PLUGIN,\r\n                \"addPlugin\",\r\n                STR_EVT_NAMESPACE,\r\n                \"addUnloadCb\",\r\n                \"getTraceCtx\",\r\n                \"updateCfg\",\r\n                \"onCfgChange\"\r\n            ]);\r\n            proxyFunctions(_self, function () {\r\n                var context = properties[_DYN_CONTEXT /* @min:%2econtext */];\r\n                return context ? context.user : null;\r\n            }, [\r\n                STR_SET_AUTHENTICATED_USER_CONTEXT,\r\n                STR_CLEAR_AUTHENTICATED_USER_CONTEXT\r\n            ]);\r\n            // Using a function to support the dynamic adding / removal of plugins, so this will always return the current value\r\n            function _getCurrentDependencies() {\r\n                return dependencies;\r\n            }\r\n            function _initDefaults() {\r\n                _evtNamespace = createUniqueNamespace(\"AISKU\");\r\n                _houseKeepingNamespace = null;\r\n                dependencies = null;\r\n                properties = null;\r\n                _sender = null;\r\n                _snippetVersion = null;\r\n                _throttleMgr = null;\r\n                _iKeySentMessage = false;\r\n                _cdnSentMessage = false;\r\n                _sdkVerSentMessage = false;\r\n                _cfgSyncPlugin = new CfgSyncPlugin();\r\n            }\r\n            function _removePageEventHandlers() {\r\n                // Remove any registered event handlers\r\n                if (_houseKeepingNamespace) {\r\n                    removePageUnloadEventListener(null, _houseKeepingNamespace);\r\n                    removePageHideEventListener(null, _houseKeepingNamespace);\r\n                }\r\n            }\r\n            function _addUnloadHook(hooks) {\r\n                _core.addUnloadHook(hooks);\r\n            }\r\n        });\r\n    }\r\n    // Analytics Plugin\r\n// Removed Stub for AppInsightsSku.prototype.getCookieMgr.\r\n// Removed Stub for AppInsightsSku.prototype.trackEvent.\r\n// Removed Stub for AppInsightsSku.prototype.trackPageView.\r\n// Removed Stub for AppInsightsSku.prototype.trackPageViewPerformance.\r\n// Removed Stub for AppInsightsSku.prototype.trackException.\r\n// Removed Stub for AppInsightsSku.prototype._onerror.\r\n// Removed Stub for AppInsightsSku.prototype.trackTrace.\r\n// Removed Stub for AppInsightsSku.prototype.trackMetric.\r\n// Removed Stub for AppInsightsSku.prototype.startTrackPage.\r\n// Removed Stub for AppInsightsSku.prototype.stopTrackPage.\r\n// Removed Stub for AppInsightsSku.prototype.startTrackEvent.\r\n// Removed Stub for AppInsightsSku.prototype.stopTrackEvent.\r\n// Removed Stub for AppInsightsSku.prototype.addTelemetryInitializer.\r\n    // Properties Plugin\r\n// Removed Stub for AppInsightsSku.prototype.setAuthenticatedUserContext.\r\n// Removed Stub for AppInsightsSku.prototype.clearAuthenticatedUserContext.\r\n    // Dependencies Plugin\r\n// Removed Stub for AppInsightsSku.prototype.trackDependencyData.\r\n    // Misc\r\n// Removed Stub for AppInsightsSku.prototype.flush.\r\n// Removed Stub for AppInsightsSku.prototype.onunloadFlush.\r\n// Removed Stub for AppInsightsSku.prototype.loadAppInsights.\r\n// Removed Stub for AppInsightsSku.prototype.updateSnippetDefinitions.\r\n// Removed Stub for AppInsightsSku.prototype.emptyQueue.\r\n// Removed Stub for AppInsightsSku.prototype.pollInternalLogs.\r\n// Removed Stub for AppInsightsSku.prototype.stopPollingInternalLogs.\r\n// Removed Stub for AppInsightsSku.prototype.addHousekeepingBeforeUnload.\r\n// Removed Stub for AppInsightsSku.prototype.getSender.\r\n// Removed Stub for AppInsightsSku.prototype.unload.\r\n// Removed Stub for AppInsightsSku.prototype.getPlugin.\r\n// Removed Stub for AppInsightsSku.prototype.addPlugin.\r\n// Removed Stub for AppInsightsSku.prototype.updateCfg.\r\n// Removed Stub for AppInsightsSku.prototype.evtNamespace.\r\n// Removed Stub for AppInsightsSku.prototype.addUnloadCb.\r\n// Removed Stub for AppInsightsSku.prototype.addDependencyListener.\r\n    /**\r\n     * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.\r\n     * It is called after the dependency call has completed and any available performance details are available. A dependency\r\n     * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency\r\n     * request so that it doesn't count against the `maxAjaxCallsPerView`.\r\n     * @param dependencyInitializer - The Dependency Telemetry Initializer function\r\n     * @returns - A IDependencyInitializerHandler to enable the initializer to be removed\r\n     */\r\n    AppInsightsSku.prototype.addDependencyInitializer = function (dependencyInitializer) {\r\n        return null;\r\n    };\r\n// Removed Stub for AppInsightsSku.prototype.getTraceCtx.\r\n// Removed Stub for AppInsightsSku.prototype.onCfgChange.\r\n    return AppInsightsSku;\r\n}());\r\nexport { AppInsightsSku };\r\n// tslint:disable-next-line\r\nexport function _findSdkSourceFile() {\r\n    if (_internalSdkSrc) {\r\n        // Use the cached value\r\n        return _internalSdkSrc;\r\n    }\r\n    var sdkSrc = null;\r\n    var isModule = false;\r\n    var cdns = [\r\n        \"://js.monitor.azure.com/\",\r\n        \"://az416426.vo.msecnd.net/\"\r\n    ];\r\n    try {\r\n        // Try and determine whether the sdk is being loaded from the CDN\r\n        // currentScript is only valid during initial processing\r\n        var scrpt = (document || {}).currentScript;\r\n        if (scrpt) {\r\n            sdkSrc = scrpt.src;\r\n            // } else {\r\n            //     // We need to update to at least typescript 2.9 for this to work :-(\r\n            //     // Leaving as a stub for now so after we upgrade this breadcrumb is available\r\n            //     let meta = import.meta;\r\n            //     sdkSrc = (meta || {}).url;\r\n            //     isModule = true;\r\n        }\r\n    }\r\n    catch (e) {\r\n        // eslint-disable-next-line no-empty\r\n    }\r\n    if (sdkSrc) {\r\n        try {\r\n            var url_1 = sdkSrc.toLowerCase();\r\n            if (url_1) {\r\n                var src_1 = \"\";\r\n                arrForEach(cdns, function (value, idx) {\r\n                    if (strIndexOf(url_1, value) !== -1) {\r\n                        src_1 = \"cdn\" + (idx + 1);\r\n                        if (strIndexOf(url_1, \"/scripts/\") === -1) {\r\n                            if (strIndexOf(url_1, \"/next/\") !== -1) {\r\n                                src_1 += \"-next\";\r\n                            }\r\n                            else if (strIndexOf(url_1, \"/beta/\") !== -1) {\r\n                                src_1 += \"-beta\";\r\n                            }\r\n                        }\r\n                        _internalSdkSrc = src_1 + (isModule ? \".mod\" : \"\");\r\n                        return -1;\r\n                    }\r\n                });\r\n            }\r\n        }\r\n        catch (e) {\r\n            // eslint-disable-next-line no-empty\r\n        }\r\n        // Cache the found value so we don't have to look it up again\r\n        _internalSdkSrc = sdkSrc;\r\n    }\r\n    return _internalSdkSrc;\r\n}\r\n//# sourceMappingURL=AISku.js.map","/*\n * Application Insights JavaScript SDK - Web, 3.3.4\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_VERSION = \"version\"; // Count: 6\r\nexport var _DYN_QUEUE = \"queue\"; // Count: 6\r\nexport var _DYN_CONNECTION_STRING = \"connectionString\"; // Count: 4\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 5\r\nexport var _DYN_INSTRUMENTATIONKEY0 = \"instrumentationkey\"; // Count: 2\r\nexport var _DYN_USER_OVERRIDE_ENDPOI1 = \"userOverrideEndpointUrl\"; // Count: 6\r\nexport var _DYN_ENDPOINT_URL = \"endpointUrl\"; // Count: 6\r\nexport var _DYN_INGESTIONENDPOINT = \"ingestionendpoint\"; // Count: 2\r\nexport var _DYN_ONUNLOAD_FLUSH = \"onunloadFlush\"; // Count: 6\r\nexport var _DYN_CONTEXT = \"context\"; // Count: 5\r\nexport var _DYN_ADD_HOUSEKEEPING_BEF2 = \"addHousekeepingBeforeUnload\"; // Count: 2\r\nexport var _DYN_SEND_MESSAGE = \"sendMessage\"; // Count: 3\r\nexport var _DYN_UPDATE_SNIPPET_DEFIN3 = \"updateSnippetDefinitions\"; // Count: 2\r\n//# sourceMappingURL=__DynamicConstants.js.map","/**\n* @license\n* MarionetteJS (Backbone.Marionette)\n* ----------------------------------\n* v4.1.3\n*\n* Copyright (c)2020 Derick Bailey, Muted Solutions, LLC.\n* Distributed under MIT license\n*\n* http://marionettejs.com\n*/\n\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('backbone'), require('underscore'), require('backbone.radio')) :\n  typeof define === 'function' && define.amd ? define(['exports', 'backbone', 'underscore', 'backbone.radio'], factory) :\n  (global = global || self, (function () {\n    var current = global.Marionette;\n    var exports = global.Marionette = {};\n    factory(exports, global.Backbone, global._, global.Backbone.Radio);\n    exports.noConflict = function () { global.Marionette = current; return exports; };\n  }()));\n}(this, function (exports, Backbone, _, Radio) { 'use strict';\n\n  Backbone = Backbone && Backbone.hasOwnProperty('default') ? Backbone['default'] : Backbone;\n  _ = _ && _.hasOwnProperty('default') ? _['default'] : _;\n  Radio = Radio && Radio.hasOwnProperty('default') ? Radio['default'] : Radio;\n\n  var version = \"4.1.3\";\n\n  //Internal utility for creating context style global utils\n  var proxy = function proxy(method) {\n    return function (context) {\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 method.apply(context, args);\n    };\n  };\n\n  // Marionette.extend\n\n  var extend = Backbone.Model.extend;\n\n  // ----------------------\n  // Pass in a mapping of events => functions or function names\n  // and return a mapping of events => functions\n\n  var normalizeMethods = function normalizeMethods(hash) {\n    var _this = this;\n\n    if (!hash) {\n      return;\n    }\n\n    return _.reduce(hash, function (normalizedHash, method, name) {\n      if (!_.isFunction(method)) {\n        method = _this[method];\n      }\n\n      if (method) {\n        normalizedHash[name] = method;\n      }\n\n      return normalizedHash;\n    }, {});\n  };\n\n  // Error\n  var errorProps = ['description', 'fileName', 'lineNumber', 'name', 'message', 'number', 'url'];\n  var MarionetteError = extend.call(Error, {\n    urlRoot: \"http://marionettejs.com/docs/v\".concat(version, \"/\"),\n    url: '',\n    constructor: function constructor(options) {\n      var error = Error.call(this, options.message);\n\n      _.extend(this, _.pick(error, errorProps), _.pick(options, errorProps));\n\n      if (Error.captureStackTrace) {\n        this.captureStackTrace();\n      }\n\n      this.url = this.urlRoot + this.url;\n    },\n    captureStackTrace: function captureStackTrace() {\n      Error.captureStackTrace(this, MarionetteError);\n    },\n    toString: function toString() {\n      return \"\".concat(this.name, \": \").concat(this.message, \" See: \").concat(this.url);\n    }\n  });\n\n  // Bind Entity Events & Unbind Entity Events\n\n  function normalizeBindings(context, bindings) {\n    if (!_.isObject(bindings)) {\n      throw new MarionetteError({\n        message: 'Bindings must be an object.',\n        url: 'common.html#bindevents'\n      });\n    }\n\n    return normalizeMethods.call(context, bindings);\n  }\n\n  function bindEvents(entity, bindings) {\n    if (!entity || !bindings) {\n      return this;\n    }\n\n    this.listenTo(entity, normalizeBindings(this, bindings));\n    return this;\n  }\n\n  function unbindEvents(entity, bindings) {\n    if (!entity) {\n      return this;\n    }\n\n    if (!bindings) {\n      this.stopListening(entity);\n      return this;\n    }\n\n    this.stopListening(entity, normalizeBindings(this, bindings));\n    return this;\n  } // Export Public API\n\n  // Bind/Unbind Radio Requests\n\n  function normalizeBindings$1(context, bindings) {\n    if (!_.isObject(bindings)) {\n      throw new MarionetteError({\n        message: 'Bindings must be an object.',\n        url: 'common.html#bindrequests'\n      });\n    }\n\n    return normalizeMethods.call(context, bindings);\n  }\n\n  function bindRequests(channel, bindings) {\n    if (!channel || !bindings) {\n      return this;\n    }\n\n    channel.reply(normalizeBindings$1(this, bindings), this);\n    return this;\n  }\n\n  function unbindRequests(channel, bindings) {\n    if (!channel) {\n      return this;\n    }\n\n    if (!bindings) {\n      channel.stopReplying(null, null, this);\n      return this;\n    }\n\n    channel.stopReplying(normalizeBindings$1(this, bindings), this);\n    return this;\n  }\n\n  // Marionette.getOption\n  // --------------------\n  // Retrieve an object, function or other value from the\n  // object or its `options`, with `options` taking precedence.\n  var getOption = function getOption(optionName) {\n    if (!optionName) {\n      return;\n    }\n\n    if (this.options && this.options[optionName] !== undefined) {\n      return this.options[optionName];\n    } else {\n      return this[optionName];\n    }\n  };\n\n  var mergeOptions = function mergeOptions(options, keys) {\n    var _this = this;\n\n    if (!options) {\n      return;\n    }\n\n    _.each(keys, function (key) {\n      var option = options[key];\n\n      if (option !== undefined) {\n        _this[key] = option;\n      }\n    });\n  };\n\n  // DOM Refresh\n\n  function triggerMethodChildren(view, event, shouldTrigger) {\n    if (!view._getImmediateChildren) {\n      return;\n    }\n\n    _.each(view._getImmediateChildren(), function (child) {\n      if (!shouldTrigger(child)) {\n        return;\n      }\n\n      child.triggerMethod(event, child);\n    });\n  }\n\n  function shouldTriggerAttach(view) {\n    return !view._isAttached;\n  }\n\n  function shouldAttach(view) {\n    if (!shouldTriggerAttach(view)) {\n      return false;\n    }\n\n    view._isAttached = true;\n    return true;\n  }\n\n  function shouldTriggerDetach(view) {\n    return view._isAttached;\n  }\n\n  function shouldDetach(view) {\n    view._isAttached = false;\n    return true;\n  }\n\n  function triggerDOMRefresh(view) {\n    if (view._isAttached && view._isRendered) {\n      view.triggerMethod('dom:refresh', view);\n    }\n  }\n\n  function triggerDOMRemove(view) {\n    if (view._isAttached && view._isRendered) {\n      view.triggerMethod('dom:remove', view);\n    }\n  }\n\n  function handleBeforeAttach() {\n    triggerMethodChildren(this, 'before:attach', shouldTriggerAttach);\n  }\n\n  function handleAttach() {\n    triggerMethodChildren(this, 'attach', shouldAttach);\n    triggerDOMRefresh(this);\n  }\n\n  function handleBeforeDetach() {\n    triggerMethodChildren(this, 'before:detach', shouldTriggerDetach);\n    triggerDOMRemove(this);\n  }\n\n  function handleDetach() {\n    triggerMethodChildren(this, 'detach', shouldDetach);\n  }\n\n  function handleBeforeRender() {\n    triggerDOMRemove(this);\n  }\n\n  function handleRender() {\n    triggerDOMRefresh(this);\n  } // Monitor a view's state, propagating attach/detach events to children and firing dom:refresh\n  // whenever a rendered view is attached or an attached view is rendered.\n\n\n  function monitorViewEvents(view) {\n    if (view._areViewEventsMonitored || view.monitorViewEvents === false) {\n      return;\n    }\n\n    view._areViewEventsMonitored = true;\n    view.on({\n      'before:attach': handleBeforeAttach,\n      'attach': handleAttach,\n      'before:detach': handleBeforeDetach,\n      'detach': handleDetach,\n      'before:render': handleBeforeRender,\n      'render': handleRender\n    });\n  }\n\n  // Trigger Method\n\n  var splitter = /(^|:)(\\w)/gi; // Only calc getOnMethodName once\n\n  var methodCache = {}; // take the event section (\"section1:section2:section3\")\n  // and turn it in to uppercase name onSection1Section2Section3\n\n  function getEventName(match, prefix, eventName) {\n    return eventName.toUpperCase();\n  }\n\n  var getOnMethodName = function getOnMethodName(event) {\n    if (!methodCache[event]) {\n      methodCache[event] = 'on' + event.replace(splitter, getEventName);\n    }\n\n    return methodCache[event];\n  }; // Trigger an event and/or a corresponding method name. Examples:\n  //\n  // `this.triggerMethod(\"foo\")` will trigger the \"foo\" event and\n  // call the \"onFoo\" method.\n  //\n  // `this.triggerMethod(\"foo:bar\")` will trigger the \"foo:bar\" event and\n  // call the \"onFooBar\" method.\n\n\n  function triggerMethod(event) {\n    // get the method name from the event name\n    var methodName = getOnMethodName(event);\n    var method = getOption.call(this, methodName);\n    var result; // call the onMethodName if it exists\n\n    if (_.isFunction(method)) {\n      // pass all args, except the event name\n      result = method.apply(this, _.drop(arguments));\n    } // trigger the event\n\n\n    this.trigger.apply(this, arguments);\n    return result;\n  }\n\n  var Events = {\n    triggerMethod: triggerMethod\n  };\n\n  var CommonMixin = {\n    // Imports the \"normalizeMethods\" to transform hashes of\n    // events=>function references/names to a hash of events=>function references\n    normalizeMethods: normalizeMethods,\n    _setOptions: function _setOptions(options, classOptions) {\n      this.options = _.extend({}, _.result(this, 'options'), options);\n      this.mergeOptions(options, classOptions);\n    },\n    // A handy way to merge passed-in options onto the instance\n    mergeOptions: mergeOptions,\n    // Enable getting options from this or this.options by name.\n    getOption: getOption,\n    // Enable binding view's events from another entity.\n    bindEvents: bindEvents,\n    // Enable unbinding view's events from another entity.\n    unbindEvents: unbindEvents,\n    // Enable binding view's requests.\n    bindRequests: bindRequests,\n    // Enable unbinding view's requests.\n    unbindRequests: unbindRequests,\n    triggerMethod: triggerMethod\n  };\n\n  _.extend(CommonMixin, Backbone.Events);\n\n  var DestroyMixin = {\n    _isDestroyed: false,\n    isDestroyed: function isDestroyed() {\n      return this._isDestroyed;\n    },\n    destroy: function destroy(options) {\n      if (this._isDestroyed) {\n        return this;\n      }\n\n      this.triggerMethod('before:destroy', this, options);\n      this._isDestroyed = true;\n      this.triggerMethod('destroy', this, options);\n      this.stopListening();\n      return this;\n    }\n  };\n\n  // - channelName\n  // - radioEvents\n  // - radioRequests\n\n  var RadioMixin = {\n    _initRadio: function _initRadio() {\n      var channelName = _.result(this, 'channelName');\n\n      if (!channelName) {\n        return;\n      }\n      /* istanbul ignore next */\n\n\n      if (!Radio) {\n        throw new MarionetteError({\n          message: 'The dependency \"backbone.radio\" is missing.',\n          url: 'backbone.radio.html#marionette-integration'\n        });\n      }\n\n      var channel = this._channel = Radio.channel(channelName);\n\n      var radioEvents = _.result(this, 'radioEvents');\n\n      this.bindEvents(channel, radioEvents);\n\n      var radioRequests = _.result(this, 'radioRequests');\n\n      this.bindRequests(channel, radioRequests);\n      this.on('destroy', this._destroyRadio);\n    },\n    _destroyRadio: function _destroyRadio() {\n      this._channel.stopReplying(null, null, this);\n    },\n    getChannel: function getChannel() {\n      return this._channel;\n    }\n  };\n\n  // Object\n  var ClassOptions = ['channelName', 'radioEvents', 'radioRequests']; // Object borrows many conventions and utilities from Backbone.\n\n  var MarionetteObject = function MarionetteObject(options) {\n    this._setOptions(options, ClassOptions);\n\n    this.cid = _.uniqueId(this.cidPrefix);\n\n    this._initRadio();\n\n    this.initialize.apply(this, arguments);\n  };\n\n  MarionetteObject.extend = extend; // Object Methods\n  // --------------\n\n  _.extend(MarionetteObject.prototype, CommonMixin, DestroyMixin, RadioMixin, {\n    cidPrefix: 'mno',\n    // This is a noop method intended to be overridden\n    initialize: function initialize() {}\n  });\n\n  // Implementation of the invoke method (http://underscorejs.org/#invoke) with support for\n  var _invoke = _.invokeMap || _.invoke;\n\n  // - behaviors\n  // Takes care of getting the behavior class\n  // given options and a key.\n  // If a user passes in options.behaviorClass\n  // default to using that.\n  // If a user passes in a Behavior Class directly, use that\n  // Otherwise an error is thrown\n\n  function getBehaviorClass(options) {\n    if (options.behaviorClass) {\n      return {\n        BehaviorClass: options.behaviorClass,\n        options: options\n      };\n    } //treat functions as a Behavior constructor\n\n\n    if (_.isFunction(options)) {\n      return {\n        BehaviorClass: options,\n        options: {}\n      };\n    }\n\n    throw new MarionetteError({\n      message: 'Unable to get behavior class. A Behavior constructor should be passed directly or as behaviorClass property of options',\n      url: 'marionette.behavior.html#defining-and-attaching-behaviors'\n    });\n  } // Iterate over the behaviors object, for each behavior\n  // instantiate it and get its grouped behaviors.\n  // This accepts a list of behaviors in either an object or array form\n\n\n  function parseBehaviors(view, behaviors, allBehaviors) {\n    return _.reduce(behaviors, function (reducedBehaviors, behaviorDefiniton) {\n      var _getBehaviorClass = getBehaviorClass(behaviorDefiniton),\n          BehaviorClass = _getBehaviorClass.BehaviorClass,\n          options = _getBehaviorClass.options;\n\n      var behavior = new BehaviorClass(options, view);\n      reducedBehaviors.push(behavior);\n      return parseBehaviors(view, _.result(behavior, 'behaviors'), reducedBehaviors);\n    }, allBehaviors);\n  }\n\n  var BehaviorsMixin = {\n    _initBehaviors: function _initBehaviors() {\n      this._behaviors = parseBehaviors(this, _.result(this, 'behaviors'), []);\n    },\n    _getBehaviorTriggers: function _getBehaviorTriggers() {\n      var triggers = _invoke(this._behaviors, '_getTriggers');\n\n      return _.reduce(triggers, function (memo, _triggers) {\n        return _.extend(memo, _triggers);\n      }, {});\n    },\n    _getBehaviorEvents: function _getBehaviorEvents() {\n      var events = _invoke(this._behaviors, '_getEvents');\n\n      return _.reduce(events, function (memo, _events) {\n        return _.extend(memo, _events);\n      }, {});\n    },\n    // proxy behavior $el to the view's $el.\n    _proxyBehaviorViewProperties: function _proxyBehaviorViewProperties() {\n      _invoke(this._behaviors, 'proxyViewProperties');\n    },\n    // delegate modelEvents and collectionEvents\n    _delegateBehaviorEntityEvents: function _delegateBehaviorEntityEvents() {\n      _invoke(this._behaviors, 'delegateEntityEvents');\n    },\n    // undelegate modelEvents and collectionEvents\n    _undelegateBehaviorEntityEvents: function _undelegateBehaviorEntityEvents() {\n      _invoke(this._behaviors, 'undelegateEntityEvents');\n    },\n    _destroyBehaviors: function _destroyBehaviors(options) {\n      // Call destroy on each behavior after\n      // destroying the view.\n      // This unbinds event listeners\n      // that behaviors have registered for.\n      _invoke(this._behaviors, 'destroy', options);\n    },\n    // Remove a behavior\n    _removeBehavior: function _removeBehavior(behavior) {\n      // Don't worry about the clean up if the view is destroyed\n      if (this._isDestroyed) {\n        return;\n      } // Remove behavior-only triggers and events\n\n\n      this.undelegate(\".trig\".concat(behavior.cid, \" .\").concat(behavior.cid));\n      this._behaviors = _.without(this._behaviors, behavior);\n    },\n    _bindBehaviorUIElements: function _bindBehaviorUIElements() {\n      _invoke(this._behaviors, 'bindUIElements');\n    },\n    _unbindBehaviorUIElements: function _unbindBehaviorUIElements() {\n      _invoke(this._behaviors, 'unbindUIElements');\n    },\n    _triggerEventOnBehaviors: function _triggerEventOnBehaviors(eventName, view, options) {\n      _invoke(this._behaviors, 'triggerMethod', eventName, view, options);\n    }\n  };\n\n  // - collectionEvents\n  // - modelEvents\n\n  var DelegateEntityEventsMixin = {\n    // Handle `modelEvents`, and `collectionEvents` configuration\n    _delegateEntityEvents: function _delegateEntityEvents(model, collection) {\n      if (model) {\n        this._modelEvents = _.result(this, 'modelEvents');\n        this.bindEvents(model, this._modelEvents);\n      }\n\n      if (collection) {\n        this._collectionEvents = _.result(this, 'collectionEvents');\n        this.bindEvents(collection, this._collectionEvents);\n      }\n    },\n    // Remove any previously delegate entity events\n    _undelegateEntityEvents: function _undelegateEntityEvents(model, collection) {\n      if (this._modelEvents) {\n        this.unbindEvents(model, this._modelEvents);\n        delete this._modelEvents;\n      }\n\n      if (this._collectionEvents) {\n        this.unbindEvents(collection, this._collectionEvents);\n        delete this._collectionEvents;\n      }\n    },\n    // Remove cached event handlers\n    _deleteEntityEventHandlers: function _deleteEntityEventHandlers() {\n      delete this._modelEvents;\n      delete this._collectionEvents;\n    }\n  };\n\n  // - template\n  // - templateContext\n\n  var TemplateRenderMixin = {\n    // Internal method to render the template with the serialized data\n    // and template context\n    _renderTemplate: function _renderTemplate(template) {\n      // Add in entity data and template context\n      var data = this.mixinTemplateContext(this.serializeData()) || {}; // Render and add to el\n\n      var html = this._renderHtml(template, data);\n\n      if (typeof html !== 'undefined') {\n        this.attachElContent(html);\n      }\n    },\n    // Get the template for this view instance.\n    // You can set a `template` attribute in the view definition\n    // or pass a `template: TemplateFunction` parameter in\n    // to the constructor options.\n    getTemplate: function getTemplate() {\n      return this.template;\n    },\n    // Mix in template context methods. Looks for a\n    // `templateContext` attribute, which can either be an\n    // object literal, or a function that returns an object\n    // literal. All methods and attributes from this object\n    // are copies to the object passed in.\n    mixinTemplateContext: function mixinTemplateContext(serializedData) {\n      var templateContext = _.result(this, 'templateContext');\n\n      if (!templateContext) {\n        return serializedData;\n      }\n\n      if (!serializedData) {\n        return templateContext;\n      }\n\n      return _.extend({}, serializedData, templateContext);\n    },\n    // Serialize the view's model *or* collection, if\n    // it exists, for the template\n    serializeData: function serializeData() {\n      // If we have a model, we serialize that\n      if (this.model) {\n        return this.serializeModel();\n      } // Otherwise, we serialize the collection,\n      // making it available under the `items` property\n\n\n      if (this.collection) {\n        return {\n          items: this.serializeCollection()\n        };\n      }\n    },\n    // Prepares the special `model` property of a view\n    // for being displayed in the template. Override this if\n    // you need a custom transformation for your view's model\n    serializeModel: function serializeModel() {\n      return this.model.attributes;\n    },\n    // Serialize a collection\n    serializeCollection: function serializeCollection() {\n      return _.map(this.collection.models, function (model) {\n        return model.attributes;\n      });\n    },\n    // Renders the data into the template\n    _renderHtml: function _renderHtml(template, data) {\n      return template(data);\n    },\n    // Attaches the content of a given view.\n    // This method can be overridden to optimize rendering,\n    // or to render in a non standard way.\n    //\n    // For example, using `innerHTML` instead of `$el.html`\n    //\n    // ```js\n    // attachElContent(html) {\n    //   this.el.innerHTML = html;\n    // }\n    // ```\n    attachElContent: function attachElContent(html) {\n      this.Dom.setContents(this.el, html, this.$el);\n    }\n  };\n\n  // Borrow event splitter from Backbone\n  var delegateEventSplitter = /^(\\S+)\\s*(.*)$/; // Set event name to be namespaced using a unique index\n  // to generate a non colliding event namespace\n  // http://api.jquery.com/event.namespace/\n\n  var getNamespacedEventName = function getNamespacedEventName(eventName, namespace) {\n    var match = eventName.match(delegateEventSplitter);\n    return \"\".concat(match[1], \".\").concat(namespace, \" \").concat(match[2]);\n  };\n\n  // Add Feature flags here\n  // e.g. 'class' => false\n  var FEATURES = {\n    childViewEventPrefix: false,\n    triggersStopPropagation: true,\n    triggersPreventDefault: true,\n    DEV_MODE: false\n  };\n\n  function isEnabled(name) {\n    return !!FEATURES[name];\n  }\n\n  function setEnabled(name, state) {\n    return FEATURES[name] = state;\n  }\n\n  // 'click:foo'\n\n  function buildViewTrigger(view, triggerDef) {\n    if (_.isString(triggerDef)) {\n      triggerDef = {\n        event: triggerDef\n      };\n    }\n\n    var eventName = triggerDef.event;\n    var shouldPreventDefault = !!triggerDef.preventDefault;\n\n    if (isEnabled('triggersPreventDefault')) {\n      shouldPreventDefault = triggerDef.preventDefault !== false;\n    }\n\n    var shouldStopPropagation = !!triggerDef.stopPropagation;\n\n    if (isEnabled('triggersStopPropagation')) {\n      shouldStopPropagation = triggerDef.stopPropagation !== false;\n    }\n\n    return function (event) {\n      if (shouldPreventDefault) {\n        event.preventDefault();\n      }\n\n      if (shouldStopPropagation) {\n        event.stopPropagation();\n      }\n\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      view.triggerMethod.apply(view, [eventName, view, event].concat(args));\n    };\n  }\n\n  var TriggersMixin = {\n    // Configure `triggers` to forward DOM events to view\n    // events. `triggers: {\"click .foo\": \"do:foo\"}`\n    _getViewTriggers: function _getViewTriggers(view, triggers) {\n      var _this = this;\n\n      // Configure the triggers, prevent default\n      // action and stop propagation of DOM events\n      return _.reduce(triggers, function (events, value, key) {\n        key = getNamespacedEventName(key, \"trig\".concat(_this.cid));\n        events[key] = buildViewTrigger(view, value);\n        return events;\n      }, {});\n    }\n  };\n\n  // a given key for triggers and events\n  // swaps the @ui with the associated selector.\n  // Returns a new, non-mutated, parsed events hash.\n\n  var _normalizeUIKeys = function normalizeUIKeys(hash, ui) {\n    return _.reduce(hash, function (memo, val, key) {\n      var normalizedKey = _normalizeUIString(key, ui);\n\n      memo[normalizedKey] = val;\n      return memo;\n    }, {});\n  };\n\n  var uiRegEx = /@ui\\.[a-zA-Z-_$0-9]*/g; // utility method for parsing @ui. syntax strings\n  // into associated selector\n\n  var _normalizeUIString = function normalizeUIString(uiString, ui) {\n    return uiString.replace(uiRegEx, function (r) {\n      return ui[r.slice(4)];\n    });\n  }; // allows for the use of the @ui. syntax within\n  // a given value for regions\n  // swaps the @ui with the associated selector\n\n\n  var _normalizeUIValues = function normalizeUIValues(hash, ui, property) {\n    _.each(hash, function (val, key) {\n      if (_.isString(val)) {\n        hash[key] = _normalizeUIString(val, ui);\n      } else if (val) {\n        var propertyVal = val[property];\n\n        if (_.isString(propertyVal)) {\n          val[property] = _normalizeUIString(propertyVal, ui);\n        }\n      }\n    });\n\n    return hash;\n  };\n\n  var UIMixin = {\n    // normalize the keys of passed hash with the views `ui` selectors.\n    // `{\"@ui.foo\": \"bar\"}`\n    normalizeUIKeys: function normalizeUIKeys(hash) {\n      var uiBindings = this._getUIBindings();\n\n      return _normalizeUIKeys(hash, uiBindings);\n    },\n    // normalize the passed string with the views `ui` selectors.\n    // `\"@ui.bar\"`\n    normalizeUIString: function normalizeUIString(uiString) {\n      var uiBindings = this._getUIBindings();\n\n      return _normalizeUIString(uiString, uiBindings);\n    },\n    // normalize the values of passed hash with the views `ui` selectors.\n    // `{foo: \"@ui.bar\"}`\n    normalizeUIValues: function normalizeUIValues(hash, property) {\n      var uiBindings = this._getUIBindings();\n\n      return _normalizeUIValues(hash, uiBindings, property);\n    },\n    _getUIBindings: function _getUIBindings() {\n      var uiBindings = _.result(this, '_uiBindings');\n\n      return uiBindings || _.result(this, 'ui');\n    },\n    // This method binds the elements specified in the \"ui\" hash inside the view's code with\n    // the associated jQuery selectors.\n    _bindUIElements: function _bindUIElements() {\n      var _this = this;\n\n      if (!this.ui) {\n        return;\n      } // store the ui hash in _uiBindings so they can be reset later\n      // and so re-rendering the view will be able to find the bindings\n\n\n      if (!this._uiBindings) {\n        this._uiBindings = this.ui;\n      } // get the bindings result, as a function or otherwise\n\n\n      var bindings = _.result(this, '_uiBindings'); // empty the ui so we don't have anything to start with\n\n\n      this._ui = {}; // bind each of the selectors\n\n      _.each(bindings, function (selector, key) {\n        _this._ui[key] = _this.$(selector);\n      });\n\n      this.ui = this._ui;\n    },\n    _unbindUIElements: function _unbindUIElements() {\n      var _this2 = this;\n\n      if (!this.ui || !this._uiBindings) {\n        return;\n      } // delete all of the existing ui bindings\n\n\n      _.each(this.ui, function ($el, name) {\n        delete _this2.ui[name];\n      }); // reset the ui element to the original bindings configuration\n\n\n      this.ui = this._uiBindings;\n      delete this._uiBindings;\n      delete this._ui;\n    },\n    _getUI: function _getUI(name) {\n      return this._ui[name];\n    }\n  };\n\n  // DomApi\n\n  function _getEl(el) {\n    return el instanceof Backbone.$ ? el : Backbone.$(el);\n  } // Static setter\n\n\n  function setDomApi(mixin) {\n    this.prototype.Dom = _.extend({}, this.prototype.Dom, mixin);\n    return this;\n  }\n  var DomApi = {\n    // Returns a new HTML DOM node instance\n    createBuffer: function createBuffer() {\n      return document.createDocumentFragment();\n    },\n    // Returns the document element for a given DOM element\n    getDocumentEl: function getDocumentEl(el) {\n      return el.ownerDocument.documentElement;\n    },\n    // Lookup the `selector` string\n    // Selector may also be a DOM element\n    // Returns an array-like object of nodes\n    getEl: function getEl(selector) {\n      return _getEl(selector);\n    },\n    // Finds the `selector` string with the el\n    // Returns an array-like object of nodes\n    findEl: function findEl(el, selector) {\n      return _getEl(el).find(selector);\n    },\n    // Returns true if the el contains the node childEl\n    hasEl: function hasEl(el, childEl) {\n      return el.contains(childEl && childEl.parentNode);\n    },\n    // Detach `el` from the DOM without removing listeners\n    detachEl: function detachEl(el) {\n      var _$el = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _getEl(el);\n\n      _$el.detach();\n    },\n    // Remove `oldEl` from the DOM and put `newEl` in its place\n    replaceEl: function replaceEl(newEl, oldEl) {\n      if (newEl === oldEl) {\n        return;\n      }\n\n      var parent = oldEl.parentNode;\n\n      if (!parent) {\n        return;\n      }\n\n      parent.replaceChild(newEl, oldEl);\n    },\n    // Swaps the location of `el1` and `el2` in the DOM\n    swapEl: function swapEl(el1, el2) {\n      if (el1 === el2) {\n        return;\n      }\n\n      var parent1 = el1.parentNode;\n      var parent2 = el2.parentNode;\n\n      if (!parent1 || !parent2) {\n        return;\n      }\n\n      var next1 = el1.nextSibling;\n      var next2 = el2.nextSibling;\n      parent1.insertBefore(el2, next1);\n      parent2.insertBefore(el1, next2);\n    },\n    // Replace the contents of `el` with the HTML string of `html`\n    setContents: function setContents(el, html) {\n      var _$el = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _getEl(el);\n\n      _$el.html(html);\n    },\n    // Takes the DOM node `el` and appends the DOM node `contents`\n    // to the end of the element's contents.\n    appendContents: function appendContents(el, contents) {\n      var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n          _ref$_$el = _ref._$el,\n          _$el = _ref$_$el === void 0 ? _getEl(el) : _ref$_$el,\n          _ref$_$contents = _ref._$contents,\n          _$contents = _ref$_$contents === void 0 ? _getEl(contents) : _ref$_$contents;\n\n      _$el.append(_$contents);\n    },\n    // Does the el have child nodes\n    hasContents: function hasContents(el) {\n      return !!el && el.hasChildNodes();\n    },\n    // Remove the inner contents of `el` from the DOM while leaving\n    // `el` itself in the DOM.\n    detachContents: function detachContents(el) {\n      var _$el = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _getEl(el);\n\n      _$el.contents().detach();\n    }\n  };\n\n  // ViewMixin\n  // - behaviors\n  // - childViewEventPrefix\n  // - childViewEvents\n  // - childViewTriggers\n  // - collectionEvents\n  // - modelEvents\n  // - triggers\n  // - ui\n\n  var ViewMixin = {\n    Dom: DomApi,\n    _isElAttached: function _isElAttached() {\n      return !!this.el && this.Dom.hasEl(this.Dom.getDocumentEl(this.el), this.el);\n    },\n    supportsRenderLifecycle: true,\n    supportsDestroyLifecycle: true,\n    _isDestroyed: false,\n    isDestroyed: function isDestroyed() {\n      return !!this._isDestroyed;\n    },\n    _isRendered: false,\n    isRendered: function isRendered() {\n      return !!this._isRendered;\n    },\n    _isAttached: false,\n    isAttached: function isAttached() {\n      return !!this._isAttached;\n    },\n    // Overriding Backbone.View's `delegateEvents` to handle\n    // `events` and `triggers`\n    delegateEvents: function delegateEvents(events) {\n      this._proxyBehaviorViewProperties();\n\n      this._buildEventProxies();\n\n      var combinedEvents = _.extend({}, this._getBehaviorEvents(), this._getEvents(events), this._getBehaviorTriggers(), this._getTriggers());\n\n      Backbone.View.prototype.delegateEvents.call(this, combinedEvents);\n      return this;\n    },\n    // Allows Backbone.View events to utilize `@ui.` selectors\n    _getEvents: function _getEvents(events) {\n      if (events) {\n        return this.normalizeUIKeys(events);\n      }\n\n      if (!this.events) {\n        return;\n      }\n\n      return this.normalizeUIKeys(_.result(this, 'events'));\n    },\n    // Configure `triggers` to forward DOM events to view\n    // events. `triggers: {\"click .foo\": \"do:foo\"}`\n    _getTriggers: function _getTriggers() {\n      if (!this.triggers) {\n        return;\n      } // Allow `triggers` to be configured as a function\n\n\n      var triggers = this.normalizeUIKeys(_.result(this, 'triggers')); // Configure the triggers, prevent default\n      // action and stop propagation of DOM events\n\n      return this._getViewTriggers(this, triggers);\n    },\n    // Handle `modelEvents`, and `collectionEvents` configuration\n    delegateEntityEvents: function delegateEntityEvents() {\n      this._delegateEntityEvents(this.model, this.collection); // bind each behaviors model and collection events\n\n\n      this._delegateBehaviorEntityEvents();\n\n      return this;\n    },\n    // Handle unbinding `modelEvents`, and `collectionEvents` configuration\n    undelegateEntityEvents: function undelegateEntityEvents() {\n      this._undelegateEntityEvents(this.model, this.collection); // unbind each behaviors model and collection events\n\n\n      this._undelegateBehaviorEntityEvents();\n\n      return this;\n    },\n    // Handle destroying the view and its children.\n    destroy: function destroy(options) {\n      if (this._isDestroyed || this._isDestroying) {\n        return this;\n      }\n\n      this._isDestroying = true;\n      var shouldTriggerDetach = this._isAttached && !this._disableDetachEvents;\n      this.triggerMethod('before:destroy', this, options);\n\n      if (shouldTriggerDetach) {\n        this.triggerMethod('before:detach', this);\n      } // unbind UI elements\n\n\n      this.unbindUIElements(); // remove the view from the DOM\n\n      this._removeElement();\n\n      if (shouldTriggerDetach) {\n        this._isAttached = false;\n        this.triggerMethod('detach', this);\n      } // remove children after the remove to prevent extra paints\n\n\n      this._removeChildren();\n\n      this._isDestroyed = true;\n      this._isRendered = false; // Destroy behaviors after _isDestroyed flag\n\n      this._destroyBehaviors(options);\n\n      this._deleteEntityEventHandlers();\n\n      this.triggerMethod('destroy', this, options);\n\n      this._triggerEventOnBehaviors('destroy', this, options);\n\n      this.stopListening();\n      return this;\n    },\n    // Equates to this.$el.remove\n    _removeElement: function _removeElement() {\n      this.$el.off().removeData();\n      this.Dom.detachEl(this.el, this.$el);\n    },\n    // This method binds the elements specified in the \"ui\" hash\n    bindUIElements: function bindUIElements() {\n      this._bindUIElements();\n\n      this._bindBehaviorUIElements();\n\n      return this;\n    },\n    // This method unbinds the elements specified in the \"ui\" hash\n    unbindUIElements: function unbindUIElements() {\n      this._unbindUIElements();\n\n      this._unbindBehaviorUIElements();\n\n      return this;\n    },\n    getUI: function getUI(name) {\n      return this._getUI(name);\n    },\n    // Cache `childViewEvents` and `childViewTriggers`\n    _buildEventProxies: function _buildEventProxies() {\n      this._childViewEvents = this.normalizeMethods(_.result(this, 'childViewEvents'));\n      this._childViewTriggers = _.result(this, 'childViewTriggers');\n      this._eventPrefix = this._getEventPrefix();\n    },\n    _getEventPrefix: function _getEventPrefix() {\n      var defaultPrefix = isEnabled('childViewEventPrefix') ? 'childview' : false;\n\n      var prefix = _.result(this, 'childViewEventPrefix', defaultPrefix);\n\n      return prefix === false ? prefix : prefix + ':';\n    },\n    _proxyChildViewEvents: function _proxyChildViewEvents(view) {\n      if (this._childViewEvents || this._childViewTriggers || this._eventPrefix) {\n        this.listenTo(view, 'all', this._childViewEventHandler);\n      }\n    },\n    _childViewEventHandler: function _childViewEventHandler(eventName) {\n      var childViewEvents = this._childViewEvents; // call collectionView childViewEvent if defined\n\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      if (childViewEvents && childViewEvents[eventName]) {\n        childViewEvents[eventName].apply(this, args);\n      } // use the parent view's proxyEvent handlers\n\n\n      var childViewTriggers = this._childViewTriggers; // Call the event with the proxy name on the parent layout\n\n      if (childViewTriggers && childViewTriggers[eventName]) {\n        this.triggerMethod.apply(this, [childViewTriggers[eventName]].concat(args));\n      }\n\n      if (this._eventPrefix) {\n        this.triggerMethod.apply(this, [this._eventPrefix + eventName].concat(args));\n      }\n    }\n  };\n\n  _.extend(ViewMixin, BehaviorsMixin, CommonMixin, DelegateEntityEventsMixin, TemplateRenderMixin, TriggersMixin, UIMixin);\n\n  function renderView(view) {\n    if (view._isRendered) {\n      return;\n    }\n\n    if (!view.supportsRenderLifecycle) {\n      view.triggerMethod('before:render', view);\n    }\n\n    view.render();\n    view._isRendered = true;\n\n    if (!view.supportsRenderLifecycle) {\n      view.triggerMethod('render', view);\n    }\n  }\n  function destroyView(view, disableDetachEvents) {\n    if (view.destroy) {\n      // Attach flag for public destroy function internal check\n      view._disableDetachEvents = disableDetachEvents;\n      view.destroy();\n      return;\n    } // Destroy for non-Marionette Views\n\n\n    if (!view.supportsDestroyLifecycle) {\n      view.triggerMethod('before:destroy', view);\n    }\n\n    var shouldTriggerDetach = view._isAttached && !disableDetachEvents;\n\n    if (shouldTriggerDetach) {\n      view.triggerMethod('before:detach', view);\n    }\n\n    view.remove();\n\n    if (shouldTriggerDetach) {\n      view._isAttached = false;\n      view.triggerMethod('detach', view);\n    }\n\n    view._isDestroyed = true;\n\n    if (!view.supportsDestroyLifecycle) {\n      view.triggerMethod('destroy', view);\n    }\n  }\n\n  // Region\n  var classErrorName = 'RegionError';\n  var ClassOptions$1 = ['allowMissingEl', 'parentEl', 'replaceElement'];\n\n  var Region = function Region(options) {\n    this._setOptions(options, ClassOptions$1);\n\n    this.cid = _.uniqueId(this.cidPrefix); // getOption necessary because options.el may be passed as undefined\n\n    this._initEl = this.el = this.getOption('el'); // Handle when this.el is passed in as a $ wrapped element.\n\n    this.el = this.el instanceof Backbone.$ ? this.el[0] : this.el;\n    this.$el = this._getEl(this.el);\n    this.initialize.apply(this, arguments);\n  };\n\n  Region.extend = extend;\n  Region.setDomApi = setDomApi; // Region Methods\n  // --------------\n\n  _.extend(Region.prototype, CommonMixin, {\n    Dom: DomApi,\n    cidPrefix: 'mnr',\n    replaceElement: false,\n    _isReplaced: false,\n    _isSwappingView: false,\n    // This is a noop method intended to be overridden\n    initialize: function initialize() {},\n    // Displays a view instance inside of the region. If necessary handles calling the `render`\n    // method for you. Reads content directly from the `el` attribute.\n    show: function show(view, options) {\n      if (!this._ensureElement(options)) {\n        return;\n      }\n\n      view = this._getView(view, options);\n\n      if (view === this.currentView) {\n        return this;\n      }\n\n      if (view._isShown) {\n        throw new MarionetteError({\n          name: classErrorName,\n          message: 'View is already shown in a Region or CollectionView',\n          url: 'marionette.region.html#showing-a-view'\n        });\n      }\n\n      this._isSwappingView = !!this.currentView;\n      this.triggerMethod('before:show', this, view, options); // Assume an attached view is already in the region for pre-existing DOM\n\n      if (this.currentView || !view._isAttached) {\n        this.empty(options);\n      }\n\n      this._setupChildView(view);\n\n      this.currentView = view;\n      renderView(view);\n\n      this._attachView(view, options);\n\n      this.triggerMethod('show', this, view, options);\n      this._isSwappingView = false;\n      return this;\n    },\n    _getEl: function _getEl(el) {\n      if (!el) {\n        throw new MarionetteError({\n          name: classErrorName,\n          message: 'An \"el\" must be specified for a region.',\n          url: 'marionette.region.html#additional-options'\n        });\n      }\n\n      return this.getEl(el);\n    },\n    _setEl: function _setEl() {\n      this.$el = this._getEl(this.el);\n\n      if (this.$el.length) {\n        this.el = this.$el[0];\n      } // Make sure the $el contains only the el\n\n\n      if (this.$el.length > 1) {\n        this.$el = this.Dom.getEl(this.el);\n      }\n    },\n    // Set the `el` of the region and move any current view to the new `el`.\n    _setElement: function _setElement(el) {\n      if (el === this.el) {\n        return this;\n      }\n\n      var shouldReplace = this._isReplaced;\n\n      this._restoreEl();\n\n      this.el = el;\n\n      this._setEl();\n\n      if (this.currentView) {\n        var view = this.currentView;\n\n        if (shouldReplace) {\n          this._replaceEl(view);\n        } else {\n          this.attachHtml(view);\n        }\n      }\n\n      return this;\n    },\n    _setupChildView: function _setupChildView(view) {\n      monitorViewEvents(view);\n\n      this._proxyChildViewEvents(view); // We need to listen for if a view is destroyed in a way other than through the region.\n      // If this happens we need to remove the reference to the currentView since once a view\n      // has been destroyed we can not reuse it.\n\n\n      view.on('destroy', this._empty, this);\n    },\n    _proxyChildViewEvents: function _proxyChildViewEvents(view) {\n      var parentView = this._parentView;\n\n      if (!parentView) {\n        return;\n      }\n\n      parentView._proxyChildViewEvents(view);\n    },\n    // If the regions parent view is not monitoring its attach/detach events\n    _shouldDisableMonitoring: function _shouldDisableMonitoring() {\n      return this._parentView && this._parentView.monitorViewEvents === false;\n    },\n    _isElAttached: function _isElAttached() {\n      return this.Dom.hasEl(this.Dom.getDocumentEl(this.el), this.el);\n    },\n    _attachView: function _attachView(view) {\n      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          replaceElement = _ref.replaceElement;\n\n      var shouldTriggerAttach = !view._isAttached && this._isElAttached() && !this._shouldDisableMonitoring();\n      var shouldReplaceEl = typeof replaceElement === 'undefined' ? !!_.result(this, 'replaceElement') : !!replaceElement;\n\n      if (shouldTriggerAttach) {\n        view.triggerMethod('before:attach', view);\n      }\n\n      if (shouldReplaceEl) {\n        this._replaceEl(view);\n      } else {\n        this.attachHtml(view);\n      }\n\n      if (shouldTriggerAttach) {\n        view._isAttached = true;\n        view.triggerMethod('attach', view);\n      } // Corresponds that view is shown in a marionette Region or CollectionView\n\n\n      view._isShown = true;\n    },\n    _ensureElement: function _ensureElement() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      if (!_.isObject(this.el)) {\n        this._setEl();\n      }\n\n      if (!this.$el || this.$el.length === 0) {\n        var allowMissingEl = typeof options.allowMissingEl === 'undefined' ? !!_.result(this, 'allowMissingEl') : !!options.allowMissingEl;\n\n        if (allowMissingEl) {\n          return false;\n        } else {\n          throw new MarionetteError({\n            name: classErrorName,\n            message: \"An \\\"el\\\" must exist in DOM for this region \".concat(this.cid),\n            url: 'marionette.region.html#additional-options'\n          });\n        }\n      }\n\n      return true;\n    },\n    _getView: function _getView(view) {\n      if (!view) {\n        throw new MarionetteError({\n          name: classErrorName,\n          message: 'The view passed is undefined and therefore invalid. You must pass a view instance to show.',\n          url: 'marionette.region.html#showing-a-view'\n        });\n      }\n\n      if (view._isDestroyed) {\n        throw new MarionetteError({\n          name: classErrorName,\n          message: \"View (cid: \\\"\".concat(view.cid, \"\\\") has already been destroyed and cannot be used.\"),\n          url: 'marionette.region.html#showing-a-view'\n        });\n      }\n\n      if (view instanceof Backbone.View) {\n        return view;\n      }\n\n      var viewOptions = this._getViewOptions(view);\n\n      return new View(viewOptions);\n    },\n    // This allows for a template or a static string to be\n    // used as a template\n    _getViewOptions: function _getViewOptions(viewOptions) {\n      if (_.isFunction(viewOptions)) {\n        return {\n          template: viewOptions\n        };\n      }\n\n      if (_.isObject(viewOptions)) {\n        return viewOptions;\n      }\n\n      var template = function template() {\n        return viewOptions;\n      };\n\n      return {\n        template: template\n      };\n    },\n    // Override this method to change how the region finds the DOM element that it manages. Return\n    // a jQuery selector object scoped to a provided parent el or the document if none exists.\n    getEl: function getEl(el) {\n      var context = _.result(this, 'parentEl');\n\n      if (context && _.isString(el)) {\n        return this.Dom.findEl(context, el);\n      }\n\n      return this.Dom.getEl(el);\n    },\n    _replaceEl: function _replaceEl(view) {\n      // Always restore the el to ensure the regions el is present before replacing\n      this._restoreEl();\n\n      view.on('before:destroy', this._restoreEl, this);\n      this.Dom.replaceEl(view.el, this.el);\n      this._isReplaced = true;\n    },\n    // Restore the region's element in the DOM.\n    _restoreEl: function _restoreEl() {\n      // There is nothing to replace\n      if (!this._isReplaced) {\n        return;\n      }\n\n      var view = this.currentView;\n\n      if (!view) {\n        return;\n      }\n\n      this._detachView(view);\n\n      this._isReplaced = false;\n    },\n    // Check to see if the region's el was replaced.\n    isReplaced: function isReplaced() {\n      return !!this._isReplaced;\n    },\n    // Check to see if a view is being swapped by another\n    isSwappingView: function isSwappingView() {\n      return !!this._isSwappingView;\n    },\n    // Override this method to change how the new view is appended to the `$el` that the\n    // region is managing\n    attachHtml: function attachHtml(view) {\n      this.Dom.appendContents(this.el, view.el, {\n        _$el: this.$el,\n        _$contents: view.$el\n      });\n    },\n    // Destroy the current view, if there is one. If there is no current view,\n    // it will detach any html inside the region's `el`.\n    empty: function empty() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n        allowMissingEl: true\n      };\n      var view = this.currentView; // If there is no view in the region we should only detach current html\n\n      if (!view) {\n        if (this._ensureElement(options)) {\n          this.detachHtml();\n        }\n\n        return this;\n      }\n\n      this._empty(view, true);\n\n      return this;\n    },\n    _empty: function _empty(view, shouldDestroy) {\n      view.off('destroy', this._empty, this);\n      this.triggerMethod('before:empty', this, view);\n\n      this._restoreEl();\n\n      delete this.currentView;\n\n      if (!view._isDestroyed) {\n        if (shouldDestroy) {\n          this.removeView(view);\n        } else {\n          this._detachView(view);\n        }\n\n        view._isShown = false;\n\n        this._stopChildViewEvents(view);\n      }\n\n      this.triggerMethod('empty', this, view);\n    },\n    _stopChildViewEvents: function _stopChildViewEvents(view) {\n      var parentView = this._parentView;\n\n      if (!parentView) {\n        return;\n      }\n\n      this._parentView.stopListening(view);\n    },\n    // Non-Marionette safe view.destroy\n    destroyView: function destroyView$1(view) {\n      if (view._isDestroyed) {\n        return view;\n      }\n\n      destroyView(view, this._shouldDisableMonitoring());\n\n      return view;\n    },\n    // Override this method to determine what happens when the view\n    // is removed from the region when the view is not being detached\n    removeView: function removeView(view) {\n      this.destroyView(view);\n    },\n    // Empties the Region without destroying the view\n    // Returns the detached view\n    detachView: function detachView() {\n      var view = this.currentView;\n\n      if (!view) {\n        return;\n      }\n\n      this._empty(view);\n\n      return view;\n    },\n    _detachView: function _detachView(view) {\n      var shouldTriggerDetach = view._isAttached && !this._shouldDisableMonitoring();\n      var shouldRestoreEl = this._isReplaced;\n\n      if (shouldTriggerDetach) {\n        view.triggerMethod('before:detach', view);\n      }\n\n      if (shouldRestoreEl) {\n        this.Dom.replaceEl(this.el, view.el);\n      } else {\n        this.detachHtml();\n      }\n\n      if (shouldTriggerDetach) {\n        view._isAttached = false;\n        view.triggerMethod('detach', view);\n      }\n    },\n    // Override this method to change how the region detaches current content\n    detachHtml: function detachHtml() {\n      this.Dom.detachContents(this.el, this.$el);\n    },\n    // Checks whether a view is currently present within the region. Returns `true` if there is\n    // and `false` if no view is present.\n    hasView: function hasView() {\n      return !!this.currentView;\n    },\n    // Reset the region by destroying any existing view and clearing out the cached `$el`.\n    // The next time a view is shown via this region, the region will re-query the DOM for\n    // the region's `el`.\n    reset: function reset(options) {\n      this.empty(options);\n      this.el = this._initEl;\n      delete this.$el;\n      return this;\n    },\n    _isDestroyed: false,\n    isDestroyed: function isDestroyed() {\n      return this._isDestroyed;\n    },\n    // Destroy the region, remove any child view\n    // and remove the region from any associated view\n    destroy: function destroy(options) {\n      if (this._isDestroyed) {\n        return this;\n      }\n\n      this.triggerMethod('before:destroy', this, options);\n      this._isDestroyed = true;\n      this.reset(options);\n\n      if (this._name) {\n        this._parentView._removeReferences(this._name);\n      }\n\n      delete this._parentView;\n      delete this._name;\n      this.triggerMethod('destroy', this, options);\n      this.stopListening();\n      return this;\n    }\n  });\n\n  function buildRegion (definition, defaults) {\n    if (definition instanceof Region) {\n      return definition;\n    }\n\n    if (_.isString(definition)) {\n      return buildRegionFromObject(defaults, {\n        el: definition\n      });\n    }\n\n    if (_.isFunction(definition)) {\n      return buildRegionFromObject(defaults, {\n        regionClass: definition\n      });\n    }\n\n    if (_.isObject(definition)) {\n      return buildRegionFromObject(defaults, definition);\n    }\n\n    throw new MarionetteError({\n      message: 'Improper region configuration type.',\n      url: 'marionette.region.html#defining-regions'\n    });\n  }\n\n  function buildRegionFromObject(defaults, definition) {\n    var options = _.extend({}, defaults, definition);\n\n    var RegionClass = options.regionClass;\n    delete options.regionClass;\n    return new RegionClass(options);\n  }\n\n  // - regions\n  // - regionClass\n\n  var RegionsMixin = {\n    regionClass: Region,\n    // Internal method to initialize the regions that have been defined in a\n    // `regions` attribute on this View.\n    _initRegions: function _initRegions() {\n      // init regions hash\n      this.regions = this.regions || {};\n      this._regions = {};\n      this.addRegions(_.result(this, 'regions'));\n    },\n    // Internal method to re-initialize all of the regions by updating\n    // the `el` that they point to\n    _reInitRegions: function _reInitRegions() {\n      _invoke(this._regions, 'reset');\n    },\n    // Add a single region, by name, to the View\n    addRegion: function addRegion(name, definition) {\n      var regions = {};\n      regions[name] = definition;\n      return this.addRegions(regions)[name];\n    },\n    // Add multiple regions as a {name: definition, name2: def2} object literal\n    addRegions: function addRegions(regions) {\n      // If there's nothing to add, stop here.\n      if (_.isEmpty(regions)) {\n        return;\n      } // Normalize region selectors hash to allow\n      // a user to use the @ui. syntax.\n\n\n      regions = this.normalizeUIValues(regions, 'el'); // Add the regions definitions to the regions property\n\n      this.regions = _.extend({}, this.regions, regions);\n      return this._addRegions(regions);\n    },\n    // internal method to build and add regions\n    _addRegions: function _addRegions(regionDefinitions) {\n      var _this = this;\n\n      var defaults = {\n        regionClass: this.regionClass,\n        parentEl: _.partial(_.result, this, 'el')\n      };\n      return _.reduce(regionDefinitions, function (regions, definition, name) {\n        regions[name] = buildRegion(definition, defaults);\n\n        _this._addRegion(regions[name], name);\n\n        return regions;\n      }, {});\n    },\n    _addRegion: function _addRegion(region, name) {\n      this.triggerMethod('before:add:region', this, name, region);\n      region._parentView = this;\n      region._name = name;\n      this._regions[name] = region;\n      this.triggerMethod('add:region', this, name, region);\n    },\n    // Remove a single region from the View, by name\n    removeRegion: function removeRegion(name) {\n      var region = this._regions[name];\n\n      this._removeRegion(region, name);\n\n      return region;\n    },\n    // Remove all regions from the View\n    removeRegions: function removeRegions() {\n      var regions = this._getRegions();\n\n      _.each(this._regions, this._removeRegion.bind(this));\n\n      return regions;\n    },\n    _removeRegion: function _removeRegion(region, name) {\n      this.triggerMethod('before:remove:region', this, name, region);\n      region.destroy();\n      this.triggerMethod('remove:region', this, name, region);\n    },\n    // Called in a region's destroy\n    _removeReferences: function _removeReferences(name) {\n      delete this.regions[name];\n      delete this._regions[name];\n    },\n    // Empty all regions in the region manager, but\n    // leave them attached\n    emptyRegions: function emptyRegions() {\n      var regions = this.getRegions();\n\n      _invoke(regions, 'empty');\n\n      return regions;\n    },\n    // Checks to see if view contains region\n    // Accepts the region name\n    // hasRegion('main')\n    hasRegion: function hasRegion(name) {\n      return !!this.getRegion(name);\n    },\n    // Provides access to regions\n    // Accepts the region name\n    // getRegion('main')\n    getRegion: function getRegion(name) {\n      if (!this._isRendered) {\n        this.render();\n      }\n\n      return this._regions[name];\n    },\n    _getRegions: function _getRegions() {\n      return _.clone(this._regions);\n    },\n    // Get all regions\n    getRegions: function getRegions() {\n      if (!this._isRendered) {\n        this.render();\n      }\n\n      return this._getRegions();\n    },\n    showChildView: function showChildView(name, view, options) {\n      var region = this.getRegion(name);\n      region.show(view, options);\n      return view;\n    },\n    detachChildView: function detachChildView(name) {\n      return this.getRegion(name).detachView();\n    },\n    getChildView: function getChildView(name) {\n      return this.getRegion(name).currentView;\n    }\n  };\n\n  // Static setter for the renderer\n  function setRenderer(renderer) {\n    this.prototype._renderHtml = renderer;\n    return this;\n  }\n\n  // View\n  var ClassOptions$2 = ['behaviors', 'childViewEventPrefix', 'childViewEvents', 'childViewTriggers', 'collectionEvents', 'events', 'modelEvents', 'regionClass', 'regions', 'template', 'templateContext', 'triggers', 'ui']; // Used by _getImmediateChildren\n\n  function childReducer(children, region) {\n    if (region.currentView) {\n      children.push(region.currentView);\n    }\n\n    return children;\n  } // The standard view. Includes view events, automatic rendering\n  // templates, nested views, and more.\n\n\n  var View = Backbone.View.extend({\n    constructor: function constructor(options) {\n      this._setOptions(options, ClassOptions$2);\n\n      monitorViewEvents(this);\n\n      this._initBehaviors();\n\n      this._initRegions();\n\n      Backbone.View.prototype.constructor.apply(this, arguments);\n      this.delegateEntityEvents();\n\n      this._triggerEventOnBehaviors('initialize', this, options);\n    },\n    // Overriding Backbone.View's `setElement` to handle\n    // if an el was previously defined. If so, the view might be\n    // rendered or attached on setElement.\n    setElement: function setElement() {\n      Backbone.View.prototype.setElement.apply(this, arguments);\n      this._isRendered = this.Dom.hasContents(this.el);\n      this._isAttached = this._isElAttached();\n\n      if (this._isRendered) {\n        this.bindUIElements();\n      }\n\n      return this;\n    },\n    // If a template is available, renders it into the view's `el`\n    // Re-inits regions and binds UI.\n    render: function render() {\n      var template = this.getTemplate();\n\n      if (template === false || this._isDestroyed) {\n        return this;\n      }\n\n      this.triggerMethod('before:render', this); // If this is not the first render call, then we need to\n      // re-initialize the `el` for each region\n\n      if (this._isRendered) {\n        this._reInitRegions();\n      }\n\n      this._renderTemplate(template);\n\n      this.bindUIElements();\n      this._isRendered = true;\n      this.triggerMethod('render', this);\n      return this;\n    },\n    // called by ViewMixin destroy\n    _removeChildren: function _removeChildren() {\n      this.removeRegions();\n    },\n    _getImmediateChildren: function _getImmediateChildren() {\n      return _.reduce(this._regions, childReducer, []);\n    }\n  }, {\n    setRenderer: setRenderer,\n    setDomApi: setDomApi\n  });\n\n  _.extend(View.prototype, ViewMixin, RegionsMixin);\n\n  // shut down child views.\n\n  var Container = function Container() {\n    this._init();\n  }; // Mix in methods from Underscore, for iteration, and other\n  // collection related features.\n  // Borrowing this code from Backbone.Collection:\n  // https://github.com/jashkenas/backbone/blob/1.1.2/backbone.js#L962\n\n\n  var methods = ['forEach', 'each', 'map', 'find', 'detect', 'filter', 'select', 'reject', 'every', 'all', 'some', 'any', 'include', 'contains', 'invoke', 'toArray', 'first', 'initial', 'rest', 'last', 'without', 'isEmpty', 'pluck', 'reduce', 'partition'];\n\n  _.each(methods, function (method) {\n    Container.prototype[method] = function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return _[method].apply(_, [this._views].concat(args));\n    };\n  });\n\n  function stringComparator(comparator, view) {\n    return view.model && view.model.get(comparator);\n  } // Container Methods\n  // -----------------\n\n\n  _.extend(Container.prototype, {\n    // Initializes an empty container\n    _init: function _init() {\n      this._views = [];\n      this._viewsByCid = {};\n      this._indexByModel = {};\n\n      this._updateLength();\n    },\n    // Add a view to this container. Stores the view\n    // by `cid` and makes it searchable by the model\n    // cid (and model itself). Additionally it stores\n    // the view by index in the _views array\n    _add: function _add(view) {\n      var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._views.length;\n\n      this._addViewIndexes(view); // add to end by default\n\n\n      this._views.splice(index, 0, view);\n\n      this._updateLength();\n    },\n    _addViewIndexes: function _addViewIndexes(view) {\n      // store the view\n      this._viewsByCid[view.cid] = view; // index it by model\n\n      if (view.model) {\n        this._indexByModel[view.model.cid] = view;\n      }\n    },\n    // Sort (mutate) and return the array of the child views.\n    _sort: function _sort(comparator, context) {\n      if (typeof comparator === 'string') {\n        comparator = _.partial(stringComparator, comparator);\n        return this._sortBy(comparator);\n      }\n\n      if (comparator.length === 1) {\n        return this._sortBy(comparator.bind(context));\n      }\n\n      return this._views.sort(comparator.bind(context));\n    },\n    // Makes `_.sortBy` mutate the array to match `this._views.sort`\n    _sortBy: function _sortBy(comparator) {\n      var sortedViews = _.sortBy(this._views, comparator);\n\n      this._set(sortedViews);\n\n      return sortedViews;\n    },\n    // Replace array contents without overwriting the reference.\n    // Should not add/remove views\n    _set: function _set(views, shouldReset) {\n      this._views.length = 0;\n\n      this._views.push.apply(this._views, views.slice(0));\n\n      if (shouldReset) {\n        this._viewsByCid = {};\n        this._indexByModel = {};\n\n        _.each(views, this._addViewIndexes.bind(this));\n\n        this._updateLength();\n      }\n    },\n    // Swap views by index\n    _swap: function _swap(view1, view2) {\n      var view1Index = this.findIndexByView(view1);\n      var view2Index = this.findIndexByView(view2);\n\n      if (view1Index === -1 || view2Index === -1) {\n        return;\n      }\n\n      var swapView = this._views[view1Index];\n      this._views[view1Index] = this._views[view2Index];\n      this._views[view2Index] = swapView;\n    },\n    // Find a view by the model that was attached to it.\n    // Uses the model's `cid` to find it.\n    findByModel: function findByModel(model) {\n      return this.findByModelCid(model.cid);\n    },\n    // Find a view by the `cid` of the model that was attached to it.\n    findByModelCid: function findByModelCid(modelCid) {\n      return this._indexByModel[modelCid];\n    },\n    // Find a view by index.\n    findByIndex: function findByIndex(index) {\n      return this._views[index];\n    },\n    // Find the index of a view instance\n    findIndexByView: function findIndexByView(view) {\n      return this._views.indexOf(view);\n    },\n    // Retrieve a view by its `cid` directly\n    findByCid: function findByCid(cid) {\n      return this._viewsByCid[cid];\n    },\n    hasView: function hasView(view) {\n      return !!this.findByCid(view.cid);\n    },\n    // Remove a view and clean up index references.\n    _remove: function _remove(view) {\n      if (!this._viewsByCid[view.cid]) {\n        return;\n      } // delete model index\n\n\n      if (view.model) {\n        delete this._indexByModel[view.model.cid];\n      } // remove the view from the container\n\n\n      delete this._viewsByCid[view.cid];\n      var index = this.findIndexByView(view);\n\n      this._views.splice(index, 1);\n\n      this._updateLength();\n    },\n    // Update the `.length` attribute on this container\n    _updateLength: function _updateLength() {\n      this.length = this._views.length;\n    }\n  });\n\n  // Collection View\n  var classErrorName$1 = 'CollectionViewError';\n  var ClassOptions$3 = ['behaviors', 'childView', 'childViewContainer', 'childViewEventPrefix', 'childViewEvents', 'childViewOptions', 'childViewTriggers', 'collectionEvents', 'emptyView', 'emptyViewOptions', 'events', 'modelEvents', 'sortWithCollection', 'template', 'templateContext', 'triggers', 'ui', 'viewComparator', 'viewFilter']; // A view that iterates over a Backbone.Collection\n  // and renders an individual child view for each model.\n\n  var CollectionView = Backbone.View.extend({\n    // flag for maintaining the sorted order of the collection\n    sortWithCollection: true,\n    // constructor\n    constructor: function constructor(options) {\n      this._setOptions(options, ClassOptions$3);\n\n      monitorViewEvents(this);\n\n      this._initChildViewStorage();\n\n      this._initBehaviors();\n\n      Backbone.View.prototype.constructor.apply(this, arguments); // Init empty region\n\n      this.getEmptyRegion();\n      this.delegateEntityEvents();\n\n      this._triggerEventOnBehaviors('initialize', this, options);\n    },\n    // Internal method to set up the `children` object for storing all of the child views\n    // `_children` represents all child views\n    // `children` represents only views filtered to be shown\n    _initChildViewStorage: function _initChildViewStorage() {\n      this._children = new Container();\n      this.children = new Container();\n    },\n    // Create an region to show the emptyView\n    getEmptyRegion: function getEmptyRegion() {\n      var $emptyEl = this.$container || this.$el;\n\n      if (this._emptyRegion && !this._emptyRegion.isDestroyed()) {\n        this._emptyRegion._setElement($emptyEl[0]);\n\n        return this._emptyRegion;\n      }\n\n      this._emptyRegion = new Region({\n        el: $emptyEl[0],\n        replaceElement: false\n      });\n      this._emptyRegion._parentView = this;\n      return this._emptyRegion;\n    },\n    // Configured the initial events that the collection view binds to.\n    _initialEvents: function _initialEvents() {\n      if (this._isRendered) {\n        return;\n      }\n\n      this.listenTo(this.collection, {\n        'sort': this._onCollectionSort,\n        'reset': this._onCollectionReset,\n        'update': this._onCollectionUpdate\n      });\n    },\n    // Internal method. This checks for any changes in the order of the collection.\n    // If the index of any view doesn't match, it will re-sort.\n    _onCollectionSort: function _onCollectionSort(collection, _ref) {\n      var add = _ref.add,\n          merge = _ref.merge,\n          remove = _ref.remove;\n\n      if (!this.sortWithCollection || this.viewComparator === false) {\n        return;\n      } // If the data is changing we will handle the sort later in `_onCollectionUpdate`\n\n\n      if (add || remove || merge) {\n        return;\n      } // If the only thing happening here is sorting, sort.\n\n\n      this.sort();\n    },\n    _onCollectionReset: function _onCollectionReset() {\n      this._destroyChildren();\n\n      this._addChildModels(this.collection.models);\n\n      this.sort();\n    },\n    // Handle collection update model additions and  removals\n    _onCollectionUpdate: function _onCollectionUpdate(collection, options) {\n      var changes = options.changes; // Remove first since it'll be a shorter array lookup.\n\n      var removedViews = changes.removed.length && this._removeChildModels(changes.removed);\n\n      this._addedViews = changes.added.length && this._addChildModels(changes.added);\n\n      this._detachChildren(removedViews);\n\n      this.sort(); // Destroy removed child views after all of the render is complete\n\n      this._removeChildViews(removedViews);\n    },\n    _removeChildModels: function _removeChildModels(models) {\n      var _this = this;\n\n      return _.reduce(models, function (views, model) {\n        var removeView = _this._removeChildModel(model);\n\n        if (removeView) {\n          views.push(removeView);\n        }\n\n        return views;\n      }, []);\n    },\n    _removeChildModel: function _removeChildModel(model) {\n      var view = this._children.findByModel(model);\n\n      if (view) {\n        this._removeChild(view);\n      }\n\n      return view;\n    },\n    _removeChild: function _removeChild(view) {\n      this.triggerMethod('before:remove:child', this, view);\n\n      this.children._remove(view);\n\n      this._children._remove(view);\n\n      this.triggerMethod('remove:child', this, view);\n    },\n    // Added views are returned for consistency with _removeChildModels\n    _addChildModels: function _addChildModels(models) {\n      return _.map(models, this._addChildModel.bind(this));\n    },\n    _addChildModel: function _addChildModel(model) {\n      var view = this._createChildView(model);\n\n      this._addChild(view);\n\n      return view;\n    },\n    _createChildView: function _createChildView(model) {\n      var ChildView = this._getChildView(model);\n\n      var childViewOptions = this._getChildViewOptions(model);\n\n      var view = this.buildChildView(model, ChildView, childViewOptions);\n      return view;\n    },\n    _addChild: function _addChild(view, index) {\n      this.triggerMethod('before:add:child', this, view);\n\n      this._setupChildView(view);\n\n      this._children._add(view, index);\n\n      this.children._add(view, index);\n\n      this.triggerMethod('add:child', this, view);\n    },\n    // Retrieve the `childView` class\n    // The `childView` property can be either a view class or a function that\n    // returns a view class. If it is a function, it will receive the model that\n    // will be passed to the view instance (created from the returned view class)\n    _getChildView: function _getChildView(child) {\n      var childView = this.childView;\n\n      if (!childView) {\n        throw new MarionetteError({\n          name: classErrorName$1,\n          message: 'A \"childView\" must be specified',\n          url: 'marionette.collectionview.html#collectionviews-childview'\n        });\n      }\n\n      childView = this._getView(childView, child);\n\n      if (!childView) {\n        throw new MarionetteError({\n          name: classErrorName$1,\n          message: '\"childView\" must be a view class or a function that returns a view class',\n          url: 'marionette.collectionview.html#collectionviews-childview'\n        });\n      }\n\n      return childView;\n    },\n    // First check if the `view` is a view class (the common case)\n    // Then check if it's a function (which we assume that returns a view class)\n    _getView: function _getView(view, child) {\n      if (view.prototype instanceof Backbone.View || view === Backbone.View) {\n        return view;\n      } else if (_.isFunction(view)) {\n        return view.call(this, child);\n      }\n    },\n    _getChildViewOptions: function _getChildViewOptions(child) {\n      if (_.isFunction(this.childViewOptions)) {\n        return this.childViewOptions(child);\n      }\n\n      return this.childViewOptions;\n    },\n    // Build a `childView` for a model in the collection.\n    // Override to customize the build\n    buildChildView: function buildChildView(child, ChildViewClass, childViewOptions) {\n      var options = _.extend({\n        model: child\n      }, childViewOptions);\n\n      return new ChildViewClass(options);\n    },\n    _setupChildView: function _setupChildView(view) {\n      monitorViewEvents(view); // We need to listen for if a view is destroyed in a way other\n      // than through the CollectionView.\n      // If this happens we need to remove the reference to the view\n      // since once a view has been destroyed we can not reuse it.\n\n      view.on('destroy', this.removeChildView, this); // set up the child view event forwarding\n\n      this._proxyChildViewEvents(view);\n    },\n    // used by ViewMixin's `_childViewEventHandler`\n    _getImmediateChildren: function _getImmediateChildren() {\n      return this.children._views;\n    },\n    // Overriding Backbone.View's `setElement` to handle\n    // if an el was previously defined. If so, the view might be\n    // attached on setElement.\n    setElement: function setElement() {\n      Backbone.View.prototype.setElement.apply(this, arguments);\n      this._isAttached = this._isElAttached();\n      return this;\n    },\n    // Render children views.\n    render: function render() {\n      if (this._isDestroyed) {\n        return this;\n      }\n\n      this.triggerMethod('before:render', this);\n\n      this._destroyChildren();\n\n      if (this.collection) {\n        this._addChildModels(this.collection.models);\n\n        this._initialEvents();\n      }\n\n      var template = this.getTemplate();\n\n      if (template) {\n        this._renderTemplate(template);\n\n        this.bindUIElements();\n      }\n\n      this._getChildViewContainer();\n\n      this.sort();\n      this._isRendered = true;\n      this.triggerMethod('render', this);\n      return this;\n    },\n    // Get a container within the template to add the children within\n    _getChildViewContainer: function _getChildViewContainer() {\n      var childViewContainer = _.result(this, 'childViewContainer');\n\n      this.$container = childViewContainer ? this.$(childViewContainer) : this.$el;\n\n      if (!this.$container.length) {\n        throw new MarionetteError({\n          name: classErrorName$1,\n          message: \"The specified \\\"childViewContainer\\\" was not found: \".concat(childViewContainer),\n          url: 'marionette.collectionview.html#defining-the-childviewcontainer'\n        });\n      }\n    },\n    // Sorts the children then filters and renders the results.\n    sort: function sort() {\n      this._sortChildren();\n\n      this.filter();\n      return this;\n    },\n    // Sorts views by viewComparator and sets the children to the new order\n    _sortChildren: function _sortChildren() {\n      if (!this._children.length) {\n        return;\n      }\n\n      var viewComparator = this.getComparator();\n\n      if (!viewComparator) {\n        return;\n      } // If children are sorted prevent added to end perf\n\n\n      delete this._addedViews;\n      this.triggerMethod('before:sort', this);\n\n      this._children._sort(viewComparator, this);\n\n      this.triggerMethod('sort', this);\n    },\n    // Sets the view's `viewComparator` and applies the sort if the view is ready.\n    // To prevent the render pass `{ preventRender: true }` as the 2nd argument.\n    setComparator: function setComparator(comparator) {\n      var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          preventRender = _ref2.preventRender;\n\n      var comparatorChanged = this.viewComparator !== comparator;\n      var shouldSort = comparatorChanged && !preventRender;\n      this.viewComparator = comparator;\n\n      if (shouldSort) {\n        this.sort();\n      }\n\n      return this;\n    },\n    // Clears the `viewComparator` and follows the same rules for rendering as `setComparator`.\n    removeComparator: function removeComparator(options) {\n      return this.setComparator(null, options);\n    },\n    // If viewComparator is overridden it will be returned here.\n    // Additionally override this function to provide custom\n    // viewComparator logic\n    getComparator: function getComparator() {\n      if (this.viewComparator) {\n        return this.viewComparator;\n      }\n\n      if (!this.sortWithCollection || this.viewComparator === false || !this.collection) {\n        return false;\n      }\n\n      return this._viewComparator;\n    },\n    // Default internal view comparator that order the views by\n    // the order of the collection\n    _viewComparator: function _viewComparator(view) {\n      return this.collection.indexOf(view.model);\n    },\n    // This method filters the children views and renders the results\n    filter: function filter() {\n      if (this._isDestroyed) {\n        return this;\n      }\n\n      this._filterChildren();\n\n      this._renderChildren();\n\n      return this;\n    },\n    _filterChildren: function _filterChildren() {\n      var _this2 = this;\n\n      if (!this._children.length) {\n        return;\n      }\n\n      var viewFilter = this._getFilter();\n\n      if (!viewFilter) {\n        var shouldReset = this.children.length !== this._children.length;\n\n        this.children._set(this._children._views, shouldReset);\n\n        return;\n      } // If children are filtered prevent added to end perf\n\n\n      delete this._addedViews;\n      this.triggerMethod('before:filter', this);\n      var attachViews = [];\n      var detachViews = [];\n\n      _.each(this._children._views, function (view, key, children) {\n        (viewFilter.call(_this2, view, key, children) ? attachViews : detachViews).push(view);\n      });\n\n      this._detachChildren(detachViews); // reset children\n\n\n      this.children._set(attachViews, true);\n\n      this.triggerMethod('filter', this, attachViews, detachViews);\n    },\n    // This method returns a function for the viewFilter\n    _getFilter: function _getFilter() {\n      var viewFilter = this.getFilter();\n\n      if (!viewFilter) {\n        return false;\n      }\n\n      if (_.isFunction(viewFilter)) {\n        return viewFilter;\n      } // Support filter predicates `{ fooFlag: true }`\n\n\n      if (_.isObject(viewFilter)) {\n        var matcher = _.matches(viewFilter);\n\n        return function (view) {\n          return matcher(view.model && view.model.attributes);\n        };\n      } // Filter by model attribute\n\n\n      if (_.isString(viewFilter)) {\n        return function (view) {\n          return view.model && view.model.get(viewFilter);\n        };\n      }\n\n      throw new MarionetteError({\n        name: classErrorName$1,\n        message: '\"viewFilter\" must be a function, predicate object literal, a string indicating a model attribute, or falsy',\n        url: 'marionette.collectionview.html#defining-the-viewfilter'\n      });\n    },\n    // Override this function to provide custom\n    // viewFilter logic\n    getFilter: function getFilter() {\n      return this.viewFilter;\n    },\n    // Sets the view's `viewFilter` and applies the filter if the view is ready.\n    // To prevent the render pass `{ preventRender: true }` as the 2nd argument.\n    setFilter: function setFilter(filter) {\n      var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          preventRender = _ref3.preventRender;\n\n      var filterChanged = this.viewFilter !== filter;\n      var shouldRender = filterChanged && !preventRender;\n      this.viewFilter = filter;\n\n      if (shouldRender) {\n        this.filter();\n      }\n\n      return this;\n    },\n    // Clears the `viewFilter` and follows the same rules for rendering as `setFilter`.\n    removeFilter: function removeFilter(options) {\n      return this.setFilter(null, options);\n    },\n    _detachChildren: function _detachChildren(detachingViews) {\n      _.each(detachingViews, this._detachChildView.bind(this));\n    },\n    _detachChildView: function _detachChildView(view) {\n      var shouldTriggerDetach = view._isAttached && this.monitorViewEvents !== false;\n\n      if (shouldTriggerDetach) {\n        view.triggerMethod('before:detach', view);\n      }\n\n      this.detachHtml(view);\n\n      if (shouldTriggerDetach) {\n        view._isAttached = false;\n        view.triggerMethod('detach', view);\n      }\n\n      view._isShown = false;\n    },\n    // Override this method to change how the collectionView detaches a child view\n    detachHtml: function detachHtml(view) {\n      this.Dom.detachEl(view.el, view.$el);\n    },\n    _renderChildren: function _renderChildren() {\n      // If there are unrendered views prevent add to end perf\n      if (this._hasUnrenderedViews) {\n        delete this._addedViews;\n        delete this._hasUnrenderedViews;\n      }\n\n      var views = this._addedViews || this.children._views;\n      this.triggerMethod('before:render:children', this, views);\n\n      if (this.isEmpty()) {\n        this._showEmptyView();\n      } else {\n        this._destroyEmptyView();\n\n        var els = this._getBuffer(views);\n\n        this._attachChildren(els, views);\n      }\n\n      delete this._addedViews;\n      this.triggerMethod('render:children', this, views);\n    },\n    // Renders each view and creates a fragment buffer from them\n    _getBuffer: function _getBuffer(views) {\n      var _this3 = this;\n\n      var elBuffer = this.Dom.createBuffer();\n\n      _.each(views, function (view) {\n        renderView(view); // corresponds that view is shown in a Region or CollectionView\n\n        view._isShown = true;\n\n        _this3.Dom.appendContents(elBuffer, view.el, {\n          _$contents: view.$el\n        });\n      });\n\n      return elBuffer;\n    },\n    _attachChildren: function _attachChildren(els, views) {\n      var shouldTriggerAttach = this._isAttached && this.monitorViewEvents !== false;\n      views = shouldTriggerAttach ? views : [];\n\n      _.each(views, function (view) {\n        if (view._isAttached) {\n          return;\n        }\n\n        view.triggerMethod('before:attach', view);\n      });\n\n      this.attachHtml(els, this.$container);\n\n      _.each(views, function (view) {\n        if (view._isAttached) {\n          return;\n        }\n\n        view._isAttached = true;\n        view.triggerMethod('attach', view);\n      });\n    },\n    // Override this method to do something other than `.append`.\n    // You can attach any HTML at this point including the els.\n    attachHtml: function attachHtml(els, $container) {\n      this.Dom.appendContents($container[0], els, {\n        _$el: $container\n      });\n    },\n    isEmpty: function isEmpty() {\n      return !this.children.length;\n    },\n    _showEmptyView: function _showEmptyView() {\n      var EmptyView = this._getEmptyView();\n\n      if (!EmptyView) {\n        return;\n      }\n\n      var options = this._getEmptyViewOptions();\n\n      var emptyRegion = this.getEmptyRegion();\n      emptyRegion.show(new EmptyView(options));\n    },\n    // Retrieve the empty view class\n    _getEmptyView: function _getEmptyView() {\n      var emptyView = this.emptyView;\n\n      if (!emptyView) {\n        return;\n      }\n\n      return this._getView(emptyView);\n    },\n    // Remove the emptyView\n    _destroyEmptyView: function _destroyEmptyView() {\n      var emptyRegion = this.getEmptyRegion(); // Only empty if a view is show so the region\n      // doesn't detach any other unrelated HTML\n\n      if (emptyRegion.hasView()) {\n        emptyRegion.empty();\n      }\n    },\n    //\n    _getEmptyViewOptions: function _getEmptyViewOptions() {\n      var emptyViewOptions = this.emptyViewOptions || this.childViewOptions;\n\n      if (_.isFunction(emptyViewOptions)) {\n        return emptyViewOptions.call(this);\n      }\n\n      return emptyViewOptions;\n    },\n    swapChildViews: function swapChildViews(view1, view2) {\n      if (!this._children.hasView(view1) || !this._children.hasView(view2)) {\n        throw new MarionetteError({\n          name: classErrorName$1,\n          message: 'Both views must be children of the collection view to swap.',\n          url: 'marionette.collectionview.html#swapping-child-views'\n        });\n      }\n\n      this._children._swap(view1, view2);\n\n      this.Dom.swapEl(view1.el, view2.el); // If the views are not filtered the same, refilter\n\n      if (this.children.hasView(view1) !== this.children.hasView(view2)) {\n        this.filter();\n      } else {\n        this.children._swap(view1, view2);\n      }\n\n      return this;\n    },\n    // Render the child's view and add it to the HTML for the collection view at a given index, based on the current sort\n    addChildView: function addChildView(view, index) {\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n      if (!view || view._isDestroyed) {\n        return view;\n      }\n\n      if (view._isShown) {\n        throw new MarionetteError({\n          name: classErrorName$1,\n          message: 'View is already shown in a Region or CollectionView',\n          url: 'marionette.region.html#showing-a-view'\n        });\n      }\n\n      if (_.isObject(index)) {\n        options = index;\n      } // If options has defined index we should use it\n\n\n      if (options.index != null) {\n        index = options.index;\n      }\n\n      if (!this._isRendered) {\n        this.render();\n      }\n\n      this._addChild(view, index);\n\n      if (options.preventRender) {\n        this._hasUnrenderedViews = true;\n        return view;\n      }\n\n      var hasIndex = typeof index !== 'undefined';\n      var isAddedToEnd = !hasIndex || index >= this._children.length; // Only cache views if added to the end and there is no unrendered views\n\n      if (isAddedToEnd && !this._hasUnrenderedViews) {\n        this._addedViews = [view];\n      }\n\n      if (hasIndex) {\n        this._renderChildren();\n      } else {\n        this.sort();\n      }\n\n      return view;\n    },\n    // Detach a view from the children.  Best used when adding a\n    // childView from `addChildView`\n    detachChildView: function detachChildView(view) {\n      this.removeChildView(view, {\n        shouldDetach: true\n      });\n      return view;\n    },\n    // Remove the child view and destroy it.  Best used when adding a\n    // childView from `addChildView`\n    // The options argument is for internal use only\n    removeChildView: function removeChildView(view, options) {\n      if (!view) {\n        return view;\n      }\n\n      this._removeChildView(view, options);\n\n      this._removeChild(view);\n\n      if (this.isEmpty()) {\n        this._showEmptyView();\n      }\n\n      return view;\n    },\n    _removeChildViews: function _removeChildViews(views) {\n      _.each(views, this._removeChildView.bind(this));\n    },\n    _removeChildView: function _removeChildView(view) {\n      var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n          shouldDetach = _ref4.shouldDetach;\n\n      view.off('destroy', this.removeChildView, this);\n\n      if (shouldDetach) {\n        this._detachChildView(view);\n      } else {\n        this._destroyChildView(view);\n      }\n\n      this.stopListening(view);\n    },\n    _destroyChildView: function _destroyChildView(view) {\n      if (view._isDestroyed) {\n        return;\n      }\n\n      var shouldDisableEvents = this.monitorViewEvents === false;\n      destroyView(view, shouldDisableEvents);\n    },\n    // called by ViewMixin destroy\n    _removeChildren: function _removeChildren() {\n      this._destroyChildren();\n\n      var emptyRegion = this.getEmptyRegion();\n      emptyRegion.destroy();\n      delete this._addedViews;\n    },\n    // Destroy the child views that this collection view is holding on to, if any\n    _destroyChildren: function _destroyChildren() {\n      if (!this._children.length) {\n        return;\n      }\n\n      this.triggerMethod('before:destroy:children', this);\n\n      if (this.monitorViewEvents === false) {\n        this.Dom.detachContents(this.el, this.$el);\n      }\n\n      this._removeChildViews(this._children._views); // After all children have been destroyed re-init the container\n\n\n      this._children._init();\n\n      this.children._init();\n\n      this.triggerMethod('destroy:children', this);\n    }\n  }, {\n    setDomApi: setDomApi,\n    setRenderer: setRenderer\n  });\n\n  _.extend(CollectionView.prototype, ViewMixin);\n\n  // Behavior\n  var ClassOptions$4 = ['collectionEvents', 'events', 'modelEvents', 'triggers', 'ui'];\n\n  var Behavior = function Behavior(options, view) {\n    // Setup reference to the view.\n    // this comes in handle when a behavior\n    // wants to directly talk up the chain\n    // to the view.\n    this.view = view;\n\n    this._setOptions(options, ClassOptions$4);\n\n    this.cid = _.uniqueId(this.cidPrefix); // Construct an internal UI hash using the behaviors UI\n    // hash combined and overridden by the view UI hash.\n    // This allows the user to use UI hash elements defined\n    // in the parent view as well as those defined in the behavior.\n    // This order will help the reuse and share of a behavior\n    // between multiple views, while letting a view override\n    // a selector under an UI key.\n\n    this.ui = _.extend({}, _.result(this, 'ui'), _.result(view, 'ui')); // Proxy view triggers\n\n    this.listenTo(view, 'all', this.triggerMethod);\n    this.initialize.apply(this, arguments);\n  };\n\n  Behavior.extend = extend; // Behavior Methods\n  // --------------\n\n  _.extend(Behavior.prototype, CommonMixin, DelegateEntityEventsMixin, TriggersMixin, UIMixin, {\n    cidPrefix: 'mnb',\n    // This is a noop method intended to be overridden\n    initialize: function initialize() {},\n    // proxy behavior $ method to the view\n    // this is useful for doing jquery DOM lookups\n    // scoped to behaviors view.\n    $: function $() {\n      return this.view.$.apply(this.view, arguments);\n    },\n    // Stops the behavior from listening to events.\n    destroy: function destroy() {\n      this.stopListening();\n\n      this.view._removeBehavior(this);\n\n      this._deleteEntityEventHandlers();\n\n      return this;\n    },\n    proxyViewProperties: function proxyViewProperties() {\n      this.$el = this.view.$el;\n      this.el = this.view.el;\n      return this;\n    },\n    bindUIElements: function bindUIElements() {\n      this._bindUIElements();\n\n      return this;\n    },\n    unbindUIElements: function unbindUIElements() {\n      this._unbindUIElements();\n\n      return this;\n    },\n    getUI: function getUI(name) {\n      return this._getUI(name);\n    },\n    // Handle `modelEvents`, and `collectionEvents` configuration\n    delegateEntityEvents: function delegateEntityEvents() {\n      this._delegateEntityEvents(this.view.model, this.view.collection);\n\n      return this;\n    },\n    undelegateEntityEvents: function undelegateEntityEvents() {\n      this._undelegateEntityEvents(this.view.model, this.view.collection);\n\n      return this;\n    },\n    _getEvents: function _getEvents() {\n      var _this = this;\n\n      if (!this.events) {\n        return;\n      } // Normalize behavior events hash to allow\n      // a user to use the @ui. syntax.\n\n\n      var behaviorEvents = this.normalizeUIKeys(_.result(this, 'events')); // binds the handler to the behavior and builds a unique eventName\n\n      return _.reduce(behaviorEvents, function (events, behaviorHandler, key) {\n        if (!_.isFunction(behaviorHandler)) {\n          behaviorHandler = _this[behaviorHandler];\n        }\n\n        if (!behaviorHandler) {\n          return events;\n        }\n\n        key = getNamespacedEventName(key, _this.cid);\n        events[key] = behaviorHandler.bind(_this);\n        return events;\n      }, {});\n    },\n    // Internal method to build all trigger handlers for a given behavior\n    _getTriggers: function _getTriggers() {\n      if (!this.triggers) {\n        return;\n      } // Normalize behavior triggers hash to allow\n      // a user to use the @ui. syntax.\n\n\n      var behaviorTriggers = this.normalizeUIKeys(_.result(this, 'triggers'));\n      return this._getViewTriggers(this.view, behaviorTriggers);\n    }\n  });\n\n  // Application\n  var ClassOptions$5 = ['channelName', 'radioEvents', 'radioRequests', 'region', 'regionClass'];\n\n  var Application = function Application(options) {\n    this._setOptions(options, ClassOptions$5);\n\n    this.cid = _.uniqueId(this.cidPrefix);\n\n    this._initRegion();\n\n    this._initRadio();\n\n    this.initialize.apply(this, arguments);\n  };\n\n  Application.extend = extend; // Application Methods\n  // --------------\n\n  _.extend(Application.prototype, CommonMixin, DestroyMixin, RadioMixin, {\n    cidPrefix: 'mna',\n    // This is a noop method intended to be overridden\n    initialize: function initialize() {},\n    // Kick off all of the application's processes.\n    start: function start(options) {\n      this.triggerMethod('before:start', this, options);\n      this.triggerMethod('start', this, options);\n      return this;\n    },\n    regionClass: Region,\n    _initRegion: function _initRegion() {\n      var region = this.region;\n\n      if (!region) {\n        return;\n      }\n\n      var defaults = {\n        regionClass: this.regionClass\n      };\n      this._region = buildRegion(region, defaults);\n    },\n    getRegion: function getRegion() {\n      return this._region;\n    },\n    showView: function showView(view) {\n      var region = this.getRegion();\n\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      region.show.apply(region, [view].concat(args));\n      return view;\n    },\n    getView: function getView() {\n      return this.getRegion().currentView;\n    }\n  });\n\n  var bindEvents$1 = proxy(bindEvents);\n  var unbindEvents$1 = proxy(unbindEvents);\n  var bindRequests$1 = proxy(bindRequests);\n  var unbindRequests$1 = proxy(unbindRequests);\n  var mergeOptions$1 = proxy(mergeOptions);\n  var getOption$1 = proxy(getOption);\n  var normalizeMethods$1 = proxy(normalizeMethods);\n  var triggerMethod$1 = proxy(triggerMethod); // Configuration\n\n  var setDomApi$1 = function setDomApi(mixin) {\n    CollectionView.setDomApi(mixin);\n    Region.setDomApi(mixin);\n    View.setDomApi(mixin);\n  };\n  var setRenderer$1 = function setRenderer(renderer) {\n    CollectionView.setRenderer(renderer);\n    View.setRenderer(renderer);\n  };\n  var backbone_marionette = {\n    View: View,\n    CollectionView: CollectionView,\n    MnObject: MarionetteObject,\n    Object: MarionetteObject,\n    Region: Region,\n    Behavior: Behavior,\n    Application: Application,\n    isEnabled: isEnabled,\n    setEnabled: setEnabled,\n    monitorViewEvents: monitorViewEvents,\n    Events: Events,\n    extend: extend,\n    DomApi: DomApi,\n    VERSION: version\n  };\n\n  exports.Application = Application;\n  exports.Behavior = Behavior;\n  exports.CollectionView = CollectionView;\n  exports.DomApi = DomApi;\n  exports.Events = Events;\n  exports.MnObject = MarionetteObject;\n  exports.Region = Region;\n  exports.VERSION = version;\n  exports.View = View;\n  exports.bindEvents = bindEvents$1;\n  exports.bindRequests = bindRequests$1;\n  exports.default = backbone_marionette;\n  exports.extend = extend;\n  exports.getOption = getOption$1;\n  exports.isEnabled = isEnabled;\n  exports.mergeOptions = mergeOptions$1;\n  exports.monitorViewEvents = monitorViewEvents;\n  exports.normalizeMethods = normalizeMethods$1;\n  exports.setDomApi = setDomApi$1;\n  exports.setEnabled = setEnabled;\n  exports.setRenderer = setRenderer$1;\n  exports.triggerMethod = triggerMethod$1;\n  exports.unbindEvents = unbindEvents$1;\n  exports.unbindRequests = unbindRequests$1;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\nthis && this.Marionette && (this.Mn = this.Marionette);\n//# sourceMappingURL=backbone.marionette.js.map\n","// Backbone.Radio v2.0.0\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('underscore'), require('backbone')) :\n  typeof define === 'function' && define.amd ? define(['underscore', 'backbone'], factory) :\n  (global.Backbone = global.Backbone || {}, global.Backbone.Radio = factory(global._,global.Backbone));\n}(this, function (_,Backbone) { 'use strict';\n\n  _ = 'default' in _ ? _['default'] : _;\n  Backbone = 'default' in Backbone ? Backbone['default'] : Backbone;\n\n  var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n  };\n\n  var previousRadio = Backbone.Radio;\n\n  var Radio = Backbone.Radio = {};\n\n  Radio.VERSION = '2.0.0';\n\n  // This allows you to run multiple instances of Radio on the same\n  // webapp. After loading the new version, call `noConflict()` to\n  // get a reference to it. At the same time the old version will be\n  // returned to Backbone.Radio.\n  Radio.noConflict = function () {\n    Backbone.Radio = previousRadio;\n    return this;\n  };\n\n  // Whether or not we're in DEBUG mode or not. DEBUG mode helps you\n  // get around the issues of lack of warnings when events are mis-typed.\n  Radio.DEBUG = false;\n\n  // Format debug text.\n  Radio._debugText = function (warning, eventName, channelName) {\n    return warning + (channelName ? ' on the ' + channelName + ' channel' : '') + ': \"' + eventName + '\"';\n  };\n\n  // This is the method that's called when an unregistered event was called.\n  // By default, it logs warning to the console. By overriding this you could\n  // make it throw an Error, for instance. This would make firing a nonexistent event\n  // have the same consequence as firing a nonexistent method on an Object.\n  Radio.debugLog = function (warning, eventName, channelName) {\n    if (Radio.DEBUG && console && console.warn) {\n      console.warn(Radio._debugText(warning, eventName, channelName));\n    }\n  };\n\n  var eventSplitter = /\\s+/;\n\n  // An internal method used to handle Radio's method overloading for Requests.\n  // It's borrowed from Backbone.Events. It differs from Backbone's overload\n  // API (which is used in Backbone.Events) in that it doesn't support space-separated\n  // event names.\n  Radio._eventsApi = function (obj, action, name, rest) {\n    if (!name) {\n      return false;\n    }\n\n    var results = {};\n\n    // Handle event maps.\n    if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n      for (var key in name) {\n        var result = obj[action].apply(obj, [key, name[key]].concat(rest));\n        eventSplitter.test(key) ? _.extend(results, result) : results[key] = result;\n      }\n      return results;\n    }\n\n    // Handle space separated event names.\n    if (eventSplitter.test(name)) {\n      var names = name.split(eventSplitter);\n      for (var i = 0, l = names.length; i < l; i++) {\n        results[names[i]] = obj[action].apply(obj, [names[i]].concat(rest));\n      }\n      return results;\n    }\n\n    return false;\n  };\n\n  // An optimized way to execute callbacks.\n  Radio._callHandler = function (callback, context, args) {\n    var a1 = args[0],\n        a2 = args[1],\n        a3 = args[2];\n    switch (args.length) {\n      case 0:\n        return callback.call(context);\n      case 1:\n        return callback.call(context, a1);\n      case 2:\n        return callback.call(context, a1, a2);\n      case 3:\n        return callback.call(context, a1, a2, a3);\n      default:\n        return callback.apply(context, args);\n    }\n  };\n\n  // A helper used by `off` methods to the handler from the store\n  function removeHandler(store, name, callback, context) {\n    var event = store[name];\n    if ((!callback || callback === event.callback || callback === event.callback._callback) && (!context || context === event.context)) {\n      delete store[name];\n      return true;\n    }\n  }\n\n  function removeHandlers(store, name, callback, context) {\n    store || (store = {});\n    var names = name ? [name] : _.keys(store);\n    var matched = false;\n\n    for (var i = 0, length = names.length; i < length; i++) {\n      name = names[i];\n\n      // If there's no event by this name, log it and continue\n      // with the loop\n      if (!store[name]) {\n        continue;\n      }\n\n      if (removeHandler(store, name, callback, context)) {\n        matched = true;\n      }\n    }\n\n    return matched;\n  }\n\n  /*\n   * tune-in\n   * -------\n   * Get console logs of a channel's activity\n   *\n   */\n\n  var _logs = {};\n\n  // This is to produce an identical function in both tuneIn and tuneOut,\n  // so that Backbone.Events unregisters it.\n  function _partial(channelName) {\n    return _logs[channelName] || (_logs[channelName] = _.bind(Radio.log, Radio, channelName));\n  }\n\n  _.extend(Radio, {\n\n    // Log information about the channel and event\n    log: function log(channelName, eventName) {\n      if (typeof console === 'undefined') {\n        return;\n      }\n      var args = _.toArray(arguments).slice(2);\n      console.log('[' + channelName + '] \"' + eventName + '\"', args);\n    },\n\n    // Logs all events on this channel to the console. It sets an\n    // internal value on the channel telling it we're listening,\n    // then sets a listener on the Backbone.Events\n    tuneIn: function tuneIn(channelName) {\n      var channel = Radio.channel(channelName);\n      channel._tunedIn = true;\n      channel.on('all', _partial(channelName));\n      return this;\n    },\n\n    // Stop logging all of the activities on this channel to the console\n    tuneOut: function tuneOut(channelName) {\n      var channel = Radio.channel(channelName);\n      channel._tunedIn = false;\n      channel.off('all', _partial(channelName));\n      delete _logs[channelName];\n      return this;\n    }\n  });\n\n  /*\n   * Backbone.Radio.Requests\n   * -----------------------\n   * A messaging system for requesting data.\n   *\n   */\n\n  function makeCallback(callback) {\n    return _.isFunction(callback) ? callback : function () {\n      return callback;\n    };\n  }\n\n  Radio.Requests = {\n\n    // Make a request\n    request: function request(name) {\n      var args = _.toArray(arguments).slice(1);\n      var results = Radio._eventsApi(this, 'request', name, args);\n      if (results) {\n        return results;\n      }\n      var channelName = this.channelName;\n      var requests = this._requests;\n\n      // Check if we should log the request, and if so, do it\n      if (channelName && this._tunedIn) {\n        Radio.log.apply(this, [channelName, name].concat(args));\n      }\n\n      // If the request isn't handled, log it in DEBUG mode and exit\n      if (requests && (requests[name] || requests['default'])) {\n        var handler = requests[name] || requests['default'];\n        args = requests[name] ? args : arguments;\n        return Radio._callHandler(handler.callback, handler.context, args);\n      } else {\n        Radio.debugLog('An unhandled request was fired', name, channelName);\n      }\n    },\n\n    // Set up a handler for a request\n    reply: function reply(name, callback, context) {\n      if (Radio._eventsApi(this, 'reply', name, [callback, context])) {\n        return this;\n      }\n\n      this._requests || (this._requests = {});\n\n      if (this._requests[name]) {\n        Radio.debugLog('A request was overwritten', name, this.channelName);\n      }\n\n      this._requests[name] = {\n        callback: makeCallback(callback),\n        context: context || this\n      };\n\n      return this;\n    },\n\n    // Set up a handler that can only be requested once\n    replyOnce: function replyOnce(name, callback, context) {\n      if (Radio._eventsApi(this, 'replyOnce', name, [callback, context])) {\n        return this;\n      }\n\n      var self = this;\n\n      var once = _.once(function () {\n        self.stopReplying(name);\n        return makeCallback(callback).apply(this, arguments);\n      });\n\n      return this.reply(name, once, context);\n    },\n\n    // Remove handler(s)\n    stopReplying: function stopReplying(name, callback, context) {\n      if (Radio._eventsApi(this, 'stopReplying', name)) {\n        return this;\n      }\n\n      // Remove everything if there are no arguments passed\n      if (!name && !callback && !context) {\n        delete this._requests;\n      } else if (!removeHandlers(this._requests, name, callback, context)) {\n        Radio.debugLog('Attempted to remove the unregistered request', name, this.channelName);\n      }\n\n      return this;\n    }\n  };\n\n  /*\n   * Backbone.Radio.channel\n   * ----------------------\n   * Get a reference to a channel by name.\n   *\n   */\n\n  Radio._channels = {};\n\n  Radio.channel = function (channelName) {\n    if (!channelName) {\n      throw new Error('You must provide a name for the channel.');\n    }\n\n    if (Radio._channels[channelName]) {\n      return Radio._channels[channelName];\n    } else {\n      return Radio._channels[channelName] = new Radio.Channel(channelName);\n    }\n  };\n\n  /*\n   * Backbone.Radio.Channel\n   * ----------------------\n   * A Channel is an object that extends from Backbone.Events,\n   * and Radio.Requests.\n   *\n   */\n\n  Radio.Channel = function (channelName) {\n    this.channelName = channelName;\n  };\n\n  _.extend(Radio.Channel.prototype, Backbone.Events, Radio.Requests, {\n\n    // Remove all handlers from the messaging systems of this channel\n    reset: function reset() {\n      this.off();\n      this.stopListening();\n      this.stopReplying();\n      return this;\n    }\n  });\n\n  /*\n   * Top-level API\n   * -------------\n   * Supplies the 'top-level API' for working with Channels directly\n   * from Backbone.Radio.\n   *\n   */\n\n  var channel;\n  var args;\n  var systems = [Backbone.Events, Radio.Requests];\n  _.each(systems, function (system) {\n    _.each(system, function (method, methodName) {\n      Radio[methodName] = function (channelName) {\n        args = _.toArray(arguments).slice(1);\n        channel = this.channel(channelName);\n        return channel[methodName].apply(channel, args);\n      };\n    });\n  });\n\n  Radio.reset = function (channelName) {\n    var channels = !channelName ? this._channels : [this._channels[channelName]];\n    _.each(channels, function (channel) {\n      channel.reset();\n    });\n  };\n\n  return Radio;\n\n}));\n//# sourceMappingURL=./backbone.radio.js.map","// Backbone.Syphon, v0.8.0\n// ----------------------------------\n//\n// Copyright (c) 2018 Derick Bailey, Muted Solutions, LLC.\n// Distributed under MIT license\n//\n// http://github.com/marionettejs/backbone.syphon\n(function(root, factory) {\n\n  if (typeof define === 'function' && define.amd) {\n    define(['underscore', 'backbone', 'jquery'], function(_, Backbone, $) {\n      return factory(_, Backbone, $);\n    });\n  } else if (typeof exports !== 'undefined') {\n    var _ = require('underscore');\n    var Backbone = require('backbone');\n    var $ = require('jquery');\n    module.exports = factory(_, Backbone, $);\n  } else {\n    factory(root._, root.Backbone, root.jQuery);\n  }\n\n}(this, function(_, Backbone, $) {\n  'use strict';\n\n  var previousSyphon = Backbone.Syphon;\n\n  var Syphon = Backbone.Syphon = {};\n\n  Syphon.VERSION = '0.8.0';\n\n  Syphon.noConflict = function() {\n    Backbone.Syphon = previousSyphon;\n    return this;\n  };\n\n  /* jshint maxstatements: 13, maxlen: 102, maxcomplexity: 8, latedef: false */\n  \n  // Ignore Element Types\n  // --------------------\n  \n  // Tell Syphon to ignore all elements of these types. You can\n  // push new types to ignore directly in to this array.\n  Syphon.ignoredTypes = ['button', 'submit', 'reset', 'fieldset'];\n  \n  // Syphon\n  // ------\n  \n  // Get a JSON object that represents\n  // all of the form inputs, in this view.\n  // Alternately, pass a form element directly\n  // in place of the view.\n  Syphon.serialize = function(view, options) {\n    var data = {};\n  \n    // Build the configuration\n    var config = buildConfig(options);\n  \n    // Get all of the elements to process\n    var elements = getInputElements(view, config);\n  \n    // Process all of the elements\n    _.each(elements, function(el) {\n      var $el = $(el);\n      var type = getElementType($el);\n  \n      // Get the key for the input\n      var keyExtractor = config.keyExtractors.get(type);\n      var key = keyExtractor($el);\n  \n      // Get the value for the input\n      var inputReader = config.inputReaders.get(type);\n      var value = inputReader($el);\n  \n      // Get the key assignment validator and make sure\n      // it's valid before assigning the value to the key\n      var validKeyAssignment = config.keyAssignmentValidators.get(type);\n      if (validKeyAssignment($el, key, value)) {\n        var keychain = config.keySplitter(key);\n        data = assignKeyValue(data, keychain, value);\n      }\n    });\n  \n    // Done; send back the results.\n    return data;\n  };\n  \n  // Use the given JSON object to populate\n  // all of the form inputs, in this view.\n  // Alternately, pass a form element directly\n  // in place of the view.\n  Syphon.deserialize = function(view, data, options) {\n    // Build the configuration\n    var config = buildConfig(options);\n  \n    // Get all of the elements to process\n    var elements = getInputElements(view, config);\n  \n    // Flatten the data structure that we are deserializing\n    var flattenedData = flattenData(config, data);\n  \n    // Process all of the elements\n    _.each(elements, function(el) {\n      var $el = $(el);\n      var type = getElementType($el);\n  \n      // Get the key for the input\n      var keyExtractor = config.keyExtractors.get(type);\n      var key = keyExtractor($el);\n  \n      // Get the input writer and the value to write\n      var inputWriter = config.inputWriters.get(type);\n      var value = flattenedData[key];\n  \n      // Write the value to the input\n      inputWriter($el, value);\n    });\n  };\n  \n  // Helpers\n  // -------\n  \n  // Retrieve all of the form inputs\n  // from the form\n  var getInputElements = function(view, config) {\n    var formInputs = getForm(view);\n  \n    formInputs = _.reject(formInputs, function(el) {\n      var reject;\n      var myType = getElementType(el);\n      var extractor = config.keyExtractors.get(myType);\n      var identifier = extractor($(el));\n  \n      var foundInIgnored = _.find(config.ignoredTypes, function(ignoredTypeOrSelector) {\n        return (ignoredTypeOrSelector === myType) || $(el).is(ignoredTypeOrSelector);\n      });\n  \n      var foundInInclude = _.includes(config.include, identifier);\n      var foundInExclude = _.includes(config.exclude, identifier);\n  \n      if (foundInInclude) {\n        reject = false;\n      } else {\n        if (config.include) {\n          reject = true;\n        } else {\n          reject = (foundInExclude || foundInIgnored);\n        }\n      }\n  \n      return reject;\n    });\n  \n    return formInputs;\n  };\n  \n  // Determine what type of element this is. It\n  // will either return the `type` attribute of\n  // an `<input>` element, or the `tagName` of\n  // the element when the element is not an `<input>`.\n  var getElementType = function(el) {\n    var typeAttr;\n    var $el = $(el);\n    var tagName = $el[0].tagName;\n    var type = tagName;\n  \n    if (tagName.toLowerCase() === 'input') {\n      typeAttr = $el.attr('type');\n      if (typeAttr) {\n        type = typeAttr;\n      } else {\n        type = 'text';\n      }\n    }\n  \n    if (('' + $el.attr('contenteditable')).toLowerCase() === 'true') {\n      type = 'contenteditable';\n    }\n  \n    // Always return the type as lowercase\n    // so it can be matched to lowercase\n    // type registrations.\n    return type.toLowerCase();\n  };\n  \n  // If a dom element is given, just return the form fields.\n  // Otherwise, get the form fields from the view.\n  var getForm = function(viewOrForm) {\n    if (_.isUndefined(viewOrForm.$el)) {\n      return $(viewOrForm).find(':input, [contenteditable]');\n    } else {\n      return viewOrForm.$(':input, [contenteditable]');\n    }\n  };\n  \n  // Build a configuration object and initialize\n  // default values.\n  var buildConfig = function(options) {\n    var config = _.clone(options) || {};\n  \n    config.ignoredTypes = _.clone(Syphon.ignoredTypes);\n    config.inputReaders = config.inputReaders || Syphon.InputReaders;\n    config.inputWriters = config.inputWriters || Syphon.InputWriters;\n    config.keyExtractors = config.keyExtractors || Syphon.KeyExtractors;\n    config.keySplitter = config.keySplitter || Syphon.KeySplitter;\n    config.keyJoiner = config.keyJoiner || Syphon.KeyJoiner;\n    config.keyAssignmentValidators = config.keyAssignmentValidators || Syphon.KeyAssignmentValidators;\n  \n    return config;\n  };\n  \n  // Assigns `value` to a parsed JSON key.\n  //\n  // The first parameter is the object which will be\n  // modified to store the key/value pair.\n  //\n  // The second parameter accepts an array of keys as a\n  // string with an option array containing a\n  // single string as the last option.\n  //\n  // The third parameter is the value to be assigned.\n  //\n  // Examples:\n  //\n  // `['foo', 'bar', 'baz'] => {foo: {bar: {baz: 'value'}}}`\n  //\n  // `['foo', 'bar', ['baz']] => {foo: {bar: {baz: ['value']}}}`\n  //\n  // When the final value is an array with a string, the key\n  // becomes an array, and values are pushed in to the array,\n  // allowing multiple fields with the same name to be\n  // assigned to the array.\n  var assignKeyValue = function(obj, keychain, value) {\n    if (!keychain) { return obj; }\n  \n    var key = keychain.shift();\n  \n    // build the current object we need to store data\n    if (!obj[key]) {\n      obj[key] = _.isArray(key) ? [] : {};\n    }\n  \n    // if it's the last key in the chain, assign the value directly\n    if (keychain.length === 0) {\n      if (_.isArray(obj[key])) {\n        obj[key].push(value);\n      } else {\n        obj[key] = value;\n      }\n    }\n  \n    // recursive parsing of the array, depth-first\n    if (keychain.length > 0) {\n      assignKeyValue(obj[key], keychain, value);\n    }\n  \n    return obj;\n  };\n  \n  // Flatten the data structure in to nested strings, using the\n  // provided `KeyJoiner` function.\n  //\n  // Example:\n  //\n  // This input:\n  //\n  // ```js\n  // {\n  //   widget: 'wombat',\n  //   foo: {\n  //     bar: 'baz',\n  //     baz: {\n  //       quux: 'qux'\n  //     },\n  //     quux: ['foo', 'bar']\n  //   }\n  // }\n  // ```\n  //\n  // With a KeyJoiner that uses [ ] square brackets,\n  // should produce this output:\n  //\n  // ```js\n  // {\n  //  'widget': 'wombat',\n  //  'foo[bar]': 'baz',\n  //  'foo[baz][quux]': 'qux',\n  //  'foo[quux]': ['foo', 'bar']\n  // }\n  // ```\n  var flattenData = function(config, data, parentKey) {\n    var flatData = {};\n  \n    _.each(data, function(value, keyName) {\n      var hash = {};\n  \n      // If there is a parent key, join it with\n      // the current, child key.\n      if (parentKey) {\n        keyName = config.keyJoiner(parentKey, keyName);\n      }\n  \n      if (_.isArray(value)) {\n        keyName += '[]';\n        hash[keyName] = value;\n      } else if (_.isObject(value)) {\n        hash = flattenData(config, value, keyName);\n      } else {\n        hash[keyName] = value;\n      }\n  \n      // Store the resulting key/value pairs in the\n      // final flattened data object\n      _.extend(flatData, hash);\n    });\n  \n    return flatData;\n  };\n  \n  // Type Registry\n  // -------------\n  \n  // Type Registries allow you to register something to\n  // an input type, and retrieve either the item registered\n  // for a specific type or the default registration\n  var TypeRegistry = Syphon.TypeRegistry = function() {\n    this.registeredTypes = {};\n  };\n  \n  // Borrow Backbone's `extend` keyword for our TypeRegistry\n  TypeRegistry.extend = Backbone.Model.extend;\n  \n  _.extend(TypeRegistry.prototype, {\n  \n    // Get the registered item by type. If nothing is\n    // found for the specified type, the default is\n    // returned.\n    get: function(type) {\n      if (_.has(this.registeredTypes, type)) {\n        return this.registeredTypes[type];\n      } else {\n        return this.registeredTypes['default'];\n      }\n    },\n  \n    // Register a new item for a specified type\n    register: function(type, item) {\n      this.registeredTypes[type] = item;\n    },\n  \n    // Register a default item to be used when no\n    // item for a specified type is found\n    registerDefault: function(item) {\n      this.registeredTypes['default'] = item;\n    },\n  \n    // Remove an item from a given type registration\n    unregister: function(type) {\n      if (_.has(this.registeredTypes, type)) {\n        delete this.registeredTypes[type];\n      }\n    }\n  });\n  \n  // Key Extractors\n  // --------------\n  \n  // Key extractors produce the \"key\" in `{key: \"value\"}`\n  // pairs, when serializing.\n  var KeyExtractorSet = Syphon.KeyExtractorSet = TypeRegistry.extend();\n  \n  // Built-in Key Extractors\n  var KeyExtractors = Syphon.KeyExtractors = new KeyExtractorSet();\n  \n  // The default key extractor, which uses the\n  // input element's \"name\" attribute\n  KeyExtractors.registerDefault(function($el) {\n    return $el.prop('name') || $el.data('name') || '';\n  });\n  \n  // Input Readers\n  // -------------\n  \n  // Input Readers are used to extract the value from\n  // an input element, for the serialized object result\n  var InputReaderSet = Syphon.InputReaderSet = TypeRegistry.extend();\n  \n  // Built-in Input Readers\n  var InputReaders = Syphon.InputReaders = new InputReaderSet();\n  \n  // The default input reader, which uses an input\n  // element's \"value\"\n  InputReaders.registerDefault(function($el) {\n    return $el.val();\n  });\n  \n  // contenteditable reader, which returns the HTML\n  // contained by the element\n  InputReaders.register('contenteditable', function($el) {\n    return $el.html();\n  });\n  \n  // Checkbox reader, returning a boolean value for\n  // whether or not the checkbox is checked.\n  InputReaders.register('checkbox', function($el) {\n    return ($el.prop('indeterminate')) ? null : $el.prop('checked');\n  });\n  \n  // Input Writers\n  // -------------\n  \n  // Input Writers are used to insert a value from an\n  // object into an input element.\n  var InputWriterSet = Syphon.InputWriterSet = TypeRegistry.extend();\n  \n  // Built-in Input Writers\n  var InputWriters = Syphon.InputWriters = new InputWriterSet();\n  \n  // The default input writer, which sets an input\n  // element's \"value\"\n  InputWriters.registerDefault(function($el, value) {\n    $el.val(value);\n  });\n  \n  // contenteditable writer, which changes the HTML contained by\n  // the element\n  InputWriters.register('contenteditable', function($el, value) {\n    $el.html(value);\n  });\n  \n  // Checkbox writer, set whether or not the checkbox is checked\n  // depending on the boolean value.\n  InputWriters.register('checkbox', function($el, value) {\n    if (value === null) {\n      $el.prop('indeterminate', true);\n    } else {\n      $el.prop('checked', value);\n    }\n  });\n  \n  // Radio button writer, set whether or not the radio button is\n  // checked.  The button should only be checked if it's value\n  // equals the given value.\n  InputWriters.register('radio', function($el, value) {\n    var checked = _.isUndefined(value) ? false : $el.val() === value.toString();\n    $el.prop('checked', checked);\n  });\n  \n  // Key Assignment Validators\n  // -------------------------\n  \n  // Key Assignment Validators are used to determine whether or not a\n  // key should be assigned to a value, after the key and value have been\n  // extracted from the element. This is the last opportunity to prevent\n  // bad data from getting serialized to your object.\n  \n  var KeyAssignmentValidatorSet = Syphon.KeyAssignmentValidatorSet = TypeRegistry.extend();\n  \n  // Build-in Key Assignment Validators\n  var KeyAssignmentValidators = Syphon.KeyAssignmentValidators = new KeyAssignmentValidatorSet();\n  \n  // Everything is valid by default\n  KeyAssignmentValidators.registerDefault(function() {\n    return true;\n  });\n  \n  // But only the \"checked\" radio button for a given\n  // radio button group is valid\n  KeyAssignmentValidators.register('radio', function($el, key, value) {\n    return $el.prop('checked');\n  });\n  \n  // Backbone.Syphon.KeySplitter\n  // ---------------------------\n  \n  // This function is used to split DOM element keys in to an array\n  // of parts, which are then used to create a nested result structure.\n  // returning `[\"foo\", \"bar\"]` results in `{foo: { bar: \"value\" }}`.\n  //\n  // Override this method to use a custom key splitter, such as:\n  // `<input name=\"foo.bar.baz\">`, `return key.split(\".\")`\n  Syphon.KeySplitter = function(key) {\n    var matches = key.match(/[^\\[\\]]+/g);\n    var lastKey;\n  \n    if (key.length > 1 && key.indexOf('[]') === key.length - 2) {\n      lastKey = matches.pop();\n      matches.push([lastKey]);\n    }\n  \n    return matches;\n  };\n  \n  // Backbone.Syphon.KeyJoiner\n  // -------------------------\n  \n  // Take two segments of a key and join them together, to create the\n  // de-normalized key name, when deserializing a data structure back\n  // in to a form.\n  //\n  // Example:\n  //\n  // With this data strucutre `{foo: { bar: {baz: \"value\", quux: \"another\"} } }`,\n  // the key joiner will be called with these parameters, and assuming the\n  // join happens with \"[ ]\" square brackets, the specified output:\n  //\n  // `KeyJoiner(\"foo\", \"bar\")` //=> \"foo[bar]\"\n  // `KeyJoiner(\"foo[bar]\", \"baz\")` //=> \"foo[bar][baz]\"\n  // `KeyJoiner(\"foo[bar]\", \"quux\")` //=> \"foo[bar][quux]\"\n  \n  Syphon.KeyJoiner = function(parentKey, childKey) {\n    return parentKey + '[' + childKey + ']';\n  };\n  \n\n  return Backbone.Syphon;\n}));\n","//     Backbone.js 1.3.3\n\n//     (c) 2010-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n//     Backbone may be freely distributed under the MIT license.\n//     For all details and documentation:\n//     http://backbonejs.org\n\n(function(factory) {\n\n  // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n  // We use `self` instead of `window` for `WebWorker` support.\n  var root = (typeof self == 'object' && self.self === self && self) ||\n            (typeof global == 'object' && global.global === global && global);\n\n  // Set up Backbone appropriately for the environment. Start with AMD.\n  if (typeof define === 'function' && define.amd) {\n    define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n      // Export global even in AMD case in case this script is loaded with\n      // others that may still expect a global Backbone.\n      root.Backbone = factory(root, exports, _, $);\n    });\n\n  // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n  } else if (typeof exports !== 'undefined') {\n    var _ = require('underscore'), $;\n    try { $ = require('jquery'); } catch (e) {}\n    factory(root, exports, _, $);\n\n  // Finally, as a browser global.\n  } else {\n    root.Backbone = factory(root, {}, root._, (root.jQuery || root.Zepto || root.ender || root.$));\n  }\n\n})(function(root, Backbone, _, $) {\n\n  // Initial Setup\n  // -------------\n\n  // Save the previous value of the `Backbone` variable, so that it can be\n  // restored later on, if `noConflict` is used.\n  var previousBackbone = root.Backbone;\n\n  // Create a local reference to a common array method we'll want to use later.\n  var slice = Array.prototype.slice;\n\n  // Current version of the library. Keep in sync with `package.json`.\n  Backbone.VERSION = '1.3.3';\n\n  // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n  // the `$` variable.\n  Backbone.$ = $;\n\n  // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n  // to its previous owner. Returns a reference to this Backbone object.\n  Backbone.noConflict = function() {\n    root.Backbone = previousBackbone;\n    return this;\n  };\n\n  // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n  // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n  // set a `X-Http-Method-Override` header.\n  Backbone.emulateHTTP = false;\n\n  // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n  // `application/json` requests ... this will encode the body as\n  // `application/x-www-form-urlencoded` instead and will send the model in a\n  // form param named `model`.\n  Backbone.emulateJSON = false;\n\n  // Proxy Backbone class methods to Underscore functions, wrapping the model's\n  // `attributes` object or collection's `models` array behind the scenes.\n  //\n  // collection.filter(function(model) { return model.get('age') > 10 });\n  // collection.each(this.addView);\n  //\n  // `Function#apply` can be slow so we use the method's arg count, if we know it.\n  var addMethod = function(length, method, attribute) {\n    switch (length) {\n      case 1: return function() {\n        return _[method](this[attribute]);\n      };\n      case 2: return function(value) {\n        return _[method](this[attribute], value);\n      };\n      case 3: return function(iteratee, context) {\n        return _[method](this[attribute], cb(iteratee, this), context);\n      };\n      case 4: return function(iteratee, defaultVal, context) {\n        return _[method](this[attribute], cb(iteratee, this), defaultVal, context);\n      };\n      default: return function() {\n        var args = slice.call(arguments);\n        args.unshift(this[attribute]);\n        return _[method].apply(_, args);\n      };\n    }\n  };\n  var addUnderscoreMethods = function(Class, methods, attribute) {\n    _.each(methods, function(length, method) {\n      if (_[method]) Class.prototype[method] = addMethod(length, method, attribute);\n    });\n  };\n\n  // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n  var cb = function(iteratee, instance) {\n    if (_.isFunction(iteratee)) return iteratee;\n    if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n    if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n    return iteratee;\n  };\n  var modelMatcher = function(attrs) {\n    var matcher = _.matches(attrs);\n    return function(model) {\n      return matcher(model.attributes);\n    };\n  };\n\n  // Backbone.Events\n  // ---------------\n\n  // A module that can be mixed in to *any object* in order to provide it with\n  // a custom event channel. You may bind a callback to an event with `on` or\n  // remove with `off`; `trigger`-ing an event fires all callbacks in\n  // succession.\n  //\n  //     var object = {};\n  //     _.extend(object, Backbone.Events);\n  //     object.on('expand', function(){ alert('expanded'); });\n  //     object.trigger('expand');\n  //\n  var Events = Backbone.Events = {};\n\n  // Regular expression used to split event strings.\n  var eventSplitter = /\\s+/;\n\n  // Iterates over the standard `event, callback` (as well as the fancy multiple\n  // space-separated events `\"change blur\", callback` and jQuery-style event\n  // maps `{event: callback}`).\n  var eventsApi = function(iteratee, events, name, callback, opts) {\n    var i = 0, names;\n    if (name && typeof name === 'object') {\n      // Handle event maps.\n      if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n      for (names = _.keys(name); i < names.length ; i++) {\n        events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n      }\n    } else if (name && eventSplitter.test(name)) {\n      // Handle space-separated event names by delegating them individually.\n      for (names = name.split(eventSplitter); i < names.length; i++) {\n        events = iteratee(events, names[i], callback, opts);\n      }\n    } else {\n      // Finally, standard events.\n      events = iteratee(events, name, callback, opts);\n    }\n    return events;\n  };\n\n  // Bind an event to a `callback` function. Passing `\"all\"` will bind\n  // the callback to all events fired.\n  Events.on = function(name, callback, context) {\n    return internalOn(this, name, callback, context);\n  };\n\n  // Guard the `listening` argument from the public API.\n  var internalOn = function(obj, name, callback, context, listening) {\n    obj._events = eventsApi(onApi, obj._events || {}, name, callback, {\n      context: context,\n      ctx: obj,\n      listening: listening\n    });\n\n    if (listening) {\n      var listeners = obj._listeners || (obj._listeners = {});\n      listeners[listening.id] = listening;\n    }\n\n    return obj;\n  };\n\n  // Inversion-of-control versions of `on`. Tell *this* object to listen to\n  // an event in another object... keeping track of what it's listening to\n  // for easier unbinding later.\n  Events.listenTo = function(obj, name, callback) {\n    if (!obj) return this;\n    var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n    var listeningTo = this._listeningTo || (this._listeningTo = {});\n    var listening = listeningTo[id];\n\n    // This object is not listening to any other events on `obj` yet.\n    // Setup the necessary references to track the listening callbacks.\n    if (!listening) {\n      var thisId = this._listenId || (this._listenId = _.uniqueId('l'));\n      listening = listeningTo[id] = {obj: obj, objId: id, id: thisId, listeningTo: listeningTo, count: 0};\n    }\n\n    // Bind callbacks on obj, and keep track of them on listening.\n    internalOn(obj, name, callback, this, listening);\n    return this;\n  };\n\n  // The reducing API that adds a callback to the `events` object.\n  var onApi = function(events, name, callback, options) {\n    if (callback) {\n      var handlers = events[name] || (events[name] = []);\n      var context = options.context, ctx = options.ctx, listening = options.listening;\n      if (listening) listening.count++;\n\n      handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n    }\n    return events;\n  };\n\n  // Remove one or many callbacks. If `context` is null, removes all\n  // callbacks with that function. If `callback` is null, removes all\n  // callbacks for the event. If `name` is null, removes all bound\n  // callbacks for all events.\n  Events.off = function(name, callback, context) {\n    if (!this._events) return this;\n    this._events = eventsApi(offApi, this._events, name, callback, {\n      context: context,\n      listeners: this._listeners\n    });\n    return this;\n  };\n\n  // Tell this object to stop listening to either specific events ... or\n  // to every object it's currently listening to.\n  Events.stopListening = function(obj, name, callback) {\n    var listeningTo = this._listeningTo;\n    if (!listeningTo) return this;\n\n    var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n\n    for (var i = 0; i < ids.length; i++) {\n      var listening = listeningTo[ids[i]];\n\n      // If listening doesn't exist, this object is not currently\n      // listening to obj. Break out early.\n      if (!listening) break;\n\n      listening.obj.off(name, callback, this);\n    }\n\n    return this;\n  };\n\n  // The reducing API that removes a callback from the `events` object.\n  var offApi = function(events, name, callback, options) {\n    if (!events) return;\n\n    var i = 0, listening;\n    var context = options.context, listeners = options.listeners;\n\n    // Delete all events listeners and \"drop\" events.\n    if (!name && !callback && !context) {\n      var ids = _.keys(listeners);\n      for (; i < ids.length; i++) {\n        listening = listeners[ids[i]];\n        delete listeners[listening.id];\n        delete listening.listeningTo[listening.objId];\n      }\n      return;\n    }\n\n    var names = name ? [name] : _.keys(events);\n    for (; i < names.length; i++) {\n      name = names[i];\n      var handlers = events[name];\n\n      // Bail out if there are no events stored.\n      if (!handlers) break;\n\n      // Replace events if there are any remaining.  Otherwise, clean up.\n      var remaining = [];\n      for (var j = 0; j < handlers.length; j++) {\n        var handler = handlers[j];\n        if (\n          callback && callback !== handler.callback &&\n            callback !== handler.callback._callback ||\n              context && context !== handler.context\n        ) {\n          remaining.push(handler);\n        } else {\n          listening = handler.listening;\n          if (listening && --listening.count === 0) {\n            delete listeners[listening.id];\n            delete listening.listeningTo[listening.objId];\n          }\n        }\n      }\n\n      // Update tail event if the list has any events.  Otherwise, clean up.\n      if (remaining.length) {\n        events[name] = remaining;\n      } else {\n        delete events[name];\n      }\n    }\n    return events;\n  };\n\n  // Bind an event to only be triggered a single time. After the first time\n  // the callback is invoked, its listener will be removed. If multiple events\n  // are passed in using the space-separated syntax, the handler will fire\n  // once for each event, not once for a combination of all events.\n  Events.once = function(name, callback, context) {\n    // Map the event into a `{event: once}` object.\n    var events = eventsApi(onceMap, {}, name, callback, _.bind(this.off, this));\n    if (typeof name === 'string' && context == null) callback = void 0;\n    return this.on(events, callback, context);\n  };\n\n  // Inversion-of-control versions of `once`.\n  Events.listenToOnce = function(obj, name, callback) {\n    // Map the event into a `{event: once}` object.\n    var events = eventsApi(onceMap, {}, name, callback, _.bind(this.stopListening, this, obj));\n    return this.listenTo(obj, events);\n  };\n\n  // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n  // `offer` unbinds the `onceWrapper` after it has been called.\n  var onceMap = function(map, name, callback, offer) {\n    if (callback) {\n      var once = map[name] = _.once(function() {\n        offer(name, once);\n        callback.apply(this, arguments);\n      });\n      once._callback = callback;\n    }\n    return map;\n  };\n\n  // Trigger one or many events, firing all bound callbacks. Callbacks are\n  // passed the same arguments as `trigger` is, apart from the event name\n  // (unless you're listening on `\"all\"`, which will cause your callback to\n  // receive the true name of the event as the first argument).\n  Events.trigger = function(name) {\n    if (!this._events) return this;\n\n    var length = Math.max(0, arguments.length - 1);\n    var args = Array(length);\n    for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n    eventsApi(triggerApi, this._events, name, void 0, args);\n    return this;\n  };\n\n  // Handles triggering the appropriate event callbacks.\n  var triggerApi = function(objEvents, name, callback, args) {\n    if (objEvents) {\n      var events = objEvents[name];\n      var allEvents = objEvents.all;\n      if (events && allEvents) allEvents = allEvents.slice();\n      if (events) triggerEvents(events, args);\n      if (allEvents) triggerEvents(allEvents, [name].concat(args));\n    }\n    return objEvents;\n  };\n\n  // A difficult-to-believe, but optimized internal dispatch function for\n  // triggering events. Tries to keep the usual cases speedy (most internal\n  // Backbone events have 3 arguments).\n  var triggerEvents = function(events, args) {\n    var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n    switch (args.length) {\n      case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n      case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n      case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n      case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n      default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n    }\n  };\n\n  // Aliases for backwards compatibility.\n  Events.bind   = Events.on;\n  Events.unbind = Events.off;\n\n  // Allow the `Backbone` object to serve as a global event bus, for folks who\n  // want global \"pubsub\" in a convenient place.\n  _.extend(Backbone, Events);\n\n  // Backbone.Model\n  // --------------\n\n  // Backbone **Models** are the basic data object in the framework --\n  // frequently representing a row in a table in a database on your server.\n  // A discrete chunk of data and a bunch of useful, related methods for\n  // performing computations and transformations on that data.\n\n  // Create a new model with the specified attributes. A client id (`cid`)\n  // is automatically generated and assigned for you.\n  var Model = Backbone.Model = function(attributes, options) {\n    var attrs = attributes || {};\n    options || (options = {});\n    this.cid = _.uniqueId(this.cidPrefix);\n    this.attributes = {};\n    if (options.collection) this.collection = options.collection;\n    if (options.parse) attrs = this.parse(attrs, options) || {};\n    var defaults = _.result(this, 'defaults');\n    attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n    this.set(attrs, options);\n    this.changed = {};\n    this.initialize.apply(this, arguments);\n  };\n\n  // Attach all inheritable methods to the Model prototype.\n  _.extend(Model.prototype, Events, {\n\n    // A hash of attributes whose current and previous value differ.\n    changed: null,\n\n    // The value returned during the last failed validation.\n    validationError: null,\n\n    // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n    // CouchDB users may want to set this to `\"_id\"`.\n    idAttribute: 'id',\n\n    // The prefix is used to create the client id which is used to identify models locally.\n    // You may want to override this if you're experiencing name clashes with model ids.\n    cidPrefix: 'c',\n\n    // Initialize is an empty function by default. Override it with your own\n    // initialization logic.\n    initialize: function(){},\n\n    // Return a copy of the model's `attributes` object.\n    toJSON: function(options) {\n      return _.clone(this.attributes);\n    },\n\n    // Proxy `Backbone.sync` by default -- but override this if you need\n    // custom syncing semantics for *this* particular model.\n    sync: function() {\n      return Backbone.sync.apply(this, arguments);\n    },\n\n    // Get the value of an attribute.\n    get: function(attr) {\n      return this.attributes[attr];\n    },\n\n    // Get the HTML-escaped value of an attribute.\n    escape: function(attr) {\n      return _.escape(this.get(attr));\n    },\n\n    // Returns `true` if the attribute contains a value that is not null\n    // or undefined.\n    has: function(attr) {\n      return this.get(attr) != null;\n    },\n\n    // Special-cased proxy to underscore's `_.matches` method.\n    matches: function(attrs) {\n      return !!_.iteratee(attrs, this)(this.attributes);\n    },\n\n    // Set a hash of model attributes on the object, firing `\"change\"`. This is\n    // the core primitive operation of a model, updating the data and notifying\n    // anyone who needs to know about the change in state. The heart of the beast.\n    set: function(key, val, options) {\n      if (key == null) return this;\n\n      // Handle both `\"key\", value` and `{key: value}` -style arguments.\n      var attrs;\n      if (typeof key === 'object') {\n        attrs = key;\n        options = val;\n      } else {\n        (attrs = {})[key] = val;\n      }\n\n      options || (options = {});\n\n      // Run validation.\n      if (!this._validate(attrs, options)) return false;\n\n      // Extract attributes and options.\n      var unset      = options.unset;\n      var silent     = options.silent;\n      var changes    = [];\n      var changing   = this._changing;\n      this._changing = true;\n\n      if (!changing) {\n        this._previousAttributes = _.clone(this.attributes);\n        this.changed = {};\n      }\n\n      var current = this.attributes;\n      var changed = this.changed;\n      var prev    = this._previousAttributes;\n\n      // For each `set` attribute, update or delete the current value.\n      for (var attr in attrs) {\n        val = attrs[attr];\n        if (!_.isEqual(current[attr], val)) changes.push(attr);\n        if (!_.isEqual(prev[attr], val)) {\n          changed[attr] = val;\n        } else {\n          delete changed[attr];\n        }\n        unset ? delete current[attr] : current[attr] = val;\n      }\n\n      // Update the `id`.\n      if (this.idAttribute in attrs) this.id = this.get(this.idAttribute);\n\n      // Trigger all relevant attribute changes.\n      if (!silent) {\n        if (changes.length) this._pending = options;\n        for (var i = 0; i < changes.length; i++) {\n          this.trigger('change:' + changes[i], this, current[changes[i]], options);\n        }\n      }\n\n      // You might be wondering why there's a `while` loop here. Changes can\n      // be recursively nested within `\"change\"` events.\n      if (changing) return this;\n      if (!silent) {\n        while (this._pending) {\n          options = this._pending;\n          this._pending = false;\n          this.trigger('change', this, options);\n        }\n      }\n      this._pending = false;\n      this._changing = false;\n      return this;\n    },\n\n    // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n    // if the attribute doesn't exist.\n    unset: function(attr, options) {\n      return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n    },\n\n    // Clear all attributes on the model, firing `\"change\"`.\n    clear: function(options) {\n      var attrs = {};\n      for (var key in this.attributes) attrs[key] = void 0;\n      return this.set(attrs, _.extend({}, options, {unset: true}));\n    },\n\n    // Determine if the model has changed since the last `\"change\"` event.\n    // If you specify an attribute name, determine if that attribute has changed.\n    hasChanged: function(attr) {\n      if (attr == null) return !_.isEmpty(this.changed);\n      return _.has(this.changed, attr);\n    },\n\n    // Return an object containing all the attributes that have changed, or\n    // false if there are no changed attributes. Useful for determining what\n    // parts of a view need to be updated and/or what attributes need to be\n    // persisted to the server. Unset attributes will be set to undefined.\n    // You can also pass an attributes object to diff against the model,\n    // determining if there *would be* a change.\n    changedAttributes: function(diff) {\n      if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n      var old = this._changing ? this._previousAttributes : this.attributes;\n      var changed = {};\n      for (var attr in diff) {\n        var val = diff[attr];\n        if (_.isEqual(old[attr], val)) continue;\n        changed[attr] = val;\n      }\n      return _.size(changed) ? changed : false;\n    },\n\n    // Get the previous value of an attribute, recorded at the time the last\n    // `\"change\"` event was fired.\n    previous: function(attr) {\n      if (attr == null || !this._previousAttributes) return null;\n      return this._previousAttributes[attr];\n    },\n\n    // Get all of the attributes of the model at the time of the previous\n    // `\"change\"` event.\n    previousAttributes: function() {\n      return _.clone(this._previousAttributes);\n    },\n\n    // Fetch the model from the server, merging the response with the model's\n    // local attributes. Any changed attributes will trigger a \"change\" event.\n    fetch: function(options) {\n      options = _.extend({parse: true}, options);\n      var model = this;\n      var success = options.success;\n      options.success = function(resp) {\n        var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n        if (!model.set(serverAttrs, options)) return false;\n        if (success) success.call(options.context, model, resp, options);\n        model.trigger('sync', model, resp, options);\n      };\n      wrapError(this, options);\n      return this.sync('read', this, options);\n    },\n\n    // Set a hash of model attributes, and sync the model to the server.\n    // If the server returns an attributes hash that differs, the model's\n    // state will be `set` again.\n    save: function(key, val, options) {\n      // Handle both `\"key\", value` and `{key: value}` -style arguments.\n      var attrs;\n      if (key == null || typeof key === 'object') {\n        attrs = key;\n        options = val;\n      } else {\n        (attrs = {})[key] = val;\n      }\n\n      options = _.extend({validate: true, parse: true}, options);\n      var wait = options.wait;\n\n      // If we're not waiting and attributes exist, save acts as\n      // `set(attr).save(null, opts)` with validation. Otherwise, check if\n      // the model will be valid when the attributes, if any, are set.\n      if (attrs && !wait) {\n        if (!this.set(attrs, options)) return false;\n      } else if (!this._validate(attrs, options)) {\n        return false;\n      }\n\n      // After a successful server-side save, the client is (optionally)\n      // updated with the server-side state.\n      var model = this;\n      var success = options.success;\n      var attributes = this.attributes;\n      options.success = function(resp) {\n        // Ensure attributes are restored during synchronous saves.\n        model.attributes = attributes;\n        var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n        if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n        if (serverAttrs && !model.set(serverAttrs, options)) return false;\n        if (success) success.call(options.context, model, resp, options);\n        model.trigger('sync', model, resp, options);\n      };\n      wrapError(this, options);\n\n      // Set temporary attributes if `{wait: true}` to properly find new ids.\n      if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n      var method = this.isNew() ? 'create' : (options.patch ? 'patch' : 'update');\n      if (method === 'patch' && !options.attrs) options.attrs = attrs;\n      var xhr = this.sync(method, this, options);\n\n      // Restore attributes.\n      this.attributes = attributes;\n\n      return xhr;\n    },\n\n    // Destroy this model on the server if it was already persisted.\n    // Optimistically removes the model from its collection, if it has one.\n    // If `wait: true` is passed, waits for the server to respond before removal.\n    destroy: function(options) {\n      options = options ? _.clone(options) : {};\n      var model = this;\n      var success = options.success;\n      var wait = options.wait;\n\n      var destroy = function() {\n        model.stopListening();\n        model.trigger('destroy', model, model.collection, options);\n      };\n\n      options.success = function(resp) {\n        if (wait) destroy();\n        if (success) success.call(options.context, model, resp, options);\n        if (!model.isNew()) model.trigger('sync', model, resp, options);\n      };\n\n      var xhr = false;\n      if (this.isNew()) {\n        _.defer(options.success);\n      } else {\n        wrapError(this, options);\n        xhr = this.sync('delete', this, options);\n      }\n      if (!wait) destroy();\n      return xhr;\n    },\n\n    // Default URL for the model's representation on the server -- if you're\n    // using Backbone's restful methods, override this to change the endpoint\n    // that will be called.\n    url: function() {\n      var base =\n        _.result(this, 'urlRoot') ||\n        _.result(this.collection, 'url') ||\n        urlError();\n      if (this.isNew()) return base;\n      var id = this.get(this.idAttribute);\n      return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n    },\n\n    // **parse** converts a response into the hash of attributes to be `set` on\n    // the model. The default implementation is just to pass the response along.\n    parse: function(resp, options) {\n      return resp;\n    },\n\n    // Create a new model with identical attributes to this one.\n    clone: function() {\n      return new this.constructor(this.attributes);\n    },\n\n    // A model is new if it has never been saved to the server, and lacks an id.\n    isNew: function() {\n      return !this.has(this.idAttribute);\n    },\n\n    // Check if the model is currently in a valid state.\n    isValid: function(options) {\n      return this._validate({}, _.extend({}, options, {validate: true}));\n    },\n\n    // Run validation against the next complete set of model attributes,\n    // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n    _validate: function(attrs, options) {\n      if (!options.validate || !this.validate) return true;\n      attrs = _.extend({}, this.attributes, attrs);\n      var error = this.validationError = this.validate(attrs, options) || null;\n      if (!error) return true;\n      this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n      return false;\n    }\n\n  });\n\n  // Underscore methods that we want to implement on the Model, mapped to the\n  // number of arguments they take.\n  var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n      omit: 0, chain: 1, isEmpty: 1};\n\n  // Mix in each Underscore method as a proxy to `Model#attributes`.\n  addUnderscoreMethods(Model, modelMethods, 'attributes');\n\n  // Backbone.Collection\n  // -------------------\n\n  // If models tend to represent a single row of data, a Backbone Collection is\n  // more analogous to a table full of data ... or a small slice or page of that\n  // table, or a collection of rows that belong together for a particular reason\n  // -- all of the messages in this particular folder, all of the documents\n  // belonging to this particular author, and so on. Collections maintain\n  // indexes of their models, both in order, and for lookup by `id`.\n\n  // Create a new **Collection**, perhaps to contain a specific type of `model`.\n  // If a `comparator` is specified, the Collection will maintain\n  // its models in sort order, as they're added and removed.\n  var Collection = Backbone.Collection = function(models, options) {\n    options || (options = {});\n    if (options.model) this.model = options.model;\n    if (options.comparator !== void 0) this.comparator = options.comparator;\n    this._reset();\n    this.initialize.apply(this, arguments);\n    if (models) this.reset(models, _.extend({silent: true}, options));\n  };\n\n  // Default options for `Collection#set`.\n  var setOptions = {add: true, remove: true, merge: true};\n  var addOptions = {add: true, remove: false};\n\n  // Splices `insert` into `array` at index `at`.\n  var splice = function(array, insert, at) {\n    at = Math.min(Math.max(at, 0), array.length);\n    var tail = Array(array.length - at);\n    var length = insert.length;\n    var i;\n    for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n    for (i = 0; i < length; i++) array[i + at] = insert[i];\n    for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n  };\n\n  // Define the Collection's inheritable methods.\n  _.extend(Collection.prototype, Events, {\n\n    // The default model for a collection is just a **Backbone.Model**.\n    // This should be overridden in most cases.\n    model: Model,\n\n    // Initialize is an empty function by default. Override it with your own\n    // initialization logic.\n    initialize: function(){},\n\n    // The JSON representation of a Collection is an array of the\n    // models' attributes.\n    toJSON: function(options) {\n      return this.map(function(model) { return model.toJSON(options); });\n    },\n\n    // Proxy `Backbone.sync` by default.\n    sync: function() {\n      return Backbone.sync.apply(this, arguments);\n    },\n\n    // Add a model, or list of models to the set. `models` may be Backbone\n    // Models or raw JavaScript objects to be converted to Models, or any\n    // combination of the two.\n    add: function(models, options) {\n      return this.set(models, _.extend({merge: false}, options, addOptions));\n    },\n\n    // Remove a model, or a list of models from the set.\n    remove: function(models, options) {\n      options = _.extend({}, options);\n      var singular = !_.isArray(models);\n      models = singular ? [models] : models.slice();\n      var removed = this._removeModels(models, options);\n      if (!options.silent && removed.length) {\n        options.changes = {added: [], merged: [], removed: removed};\n        this.trigger('update', this, options);\n      }\n      return singular ? removed[0] : removed;\n    },\n\n    // Update a collection by `set`-ing a new list of models, adding new ones,\n    // removing models that are no longer present, and merging models that\n    // already exist in the collection, as necessary. Similar to **Model#set**,\n    // the core operation for updating the data contained by the collection.\n    set: function(models, options) {\n      if (models == null) return;\n\n      options = _.extend({}, setOptions, options);\n      if (options.parse && !this._isModel(models)) {\n        models = this.parse(models, options) || [];\n      }\n\n      var singular = !_.isArray(models);\n      models = singular ? [models] : models.slice();\n\n      var at = options.at;\n      if (at != null) at = +at;\n      if (at > this.length) at = this.length;\n      if (at < 0) at += this.length + 1;\n\n      var set = [];\n      var toAdd = [];\n      var toMerge = [];\n      var toRemove = [];\n      var modelMap = {};\n\n      var add = options.add;\n      var merge = options.merge;\n      var remove = options.remove;\n\n      var sort = false;\n      var sortable = this.comparator && at == null && options.sort !== false;\n      var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n      // Turn bare objects into model references, and prevent invalid models\n      // from being added.\n      var model, i;\n      for (i = 0; i < models.length; i++) {\n        model = models[i];\n\n        // If a duplicate is found, prevent it from being added and\n        // optionally merge it into the existing model.\n        var existing = this.get(model);\n        if (existing) {\n          if (merge && model !== existing) {\n            var attrs = this._isModel(model) ? model.attributes : model;\n            if (options.parse) attrs = existing.parse(attrs, options);\n            existing.set(attrs, options);\n            toMerge.push(existing);\n            if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n          }\n          if (!modelMap[existing.cid]) {\n            modelMap[existing.cid] = true;\n            set.push(existing);\n          }\n          models[i] = existing;\n\n        // If this is a new, valid model, push it to the `toAdd` list.\n        } else if (add) {\n          model = models[i] = this._prepareModel(model, options);\n          if (model) {\n            toAdd.push(model);\n            this._addReference(model, options);\n            modelMap[model.cid] = true;\n            set.push(model);\n          }\n        }\n      }\n\n      // Remove stale models.\n      if (remove) {\n        for (i = 0; i < this.length; i++) {\n          model = this.models[i];\n          if (!modelMap[model.cid]) toRemove.push(model);\n        }\n        if (toRemove.length) this._removeModels(toRemove, options);\n      }\n\n      // See if sorting is needed, update `length` and splice in new models.\n      var orderChanged = false;\n      var replace = !sortable && add && remove;\n      if (set.length && replace) {\n        orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n          return m !== set[index];\n        });\n        this.models.length = 0;\n        splice(this.models, set, 0);\n        this.length = this.models.length;\n      } else if (toAdd.length) {\n        if (sortable) sort = true;\n        splice(this.models, toAdd, at == null ? this.length : at);\n        this.length = this.models.length;\n      }\n\n      // Silently sort the collection if appropriate.\n      if (sort) this.sort({silent: true});\n\n      // Unless silenced, it's time to fire all appropriate add/sort/update events.\n      if (!options.silent) {\n        for (i = 0; i < toAdd.length; i++) {\n          if (at != null) options.index = at + i;\n          model = toAdd[i];\n          model.trigger('add', model, this, options);\n        }\n        if (sort || orderChanged) this.trigger('sort', this, options);\n        if (toAdd.length || toRemove.length || toMerge.length) {\n          options.changes = {\n            added: toAdd,\n            removed: toRemove,\n            merged: toMerge\n          };\n          this.trigger('update', this, options);\n        }\n      }\n\n      // Return the added (or merged) model (or models).\n      return singular ? models[0] : models;\n    },\n\n    // When you have more items than you want to add or remove individually,\n    // you can reset the entire set with a new list of models, without firing\n    // any granular `add` or `remove` events. Fires `reset` when finished.\n    // Useful for bulk operations and optimizations.\n    reset: function(models, options) {\n      options = options ? _.clone(options) : {};\n      for (var i = 0; i < this.models.length; i++) {\n        this._removeReference(this.models[i], options);\n      }\n      options.previousModels = this.models;\n      this._reset();\n      models = this.add(models, _.extend({silent: true}, options));\n      if (!options.silent) this.trigger('reset', this, options);\n      return models;\n    },\n\n    // Add a model to the end of the collection.\n    push: function(model, options) {\n      return this.add(model, _.extend({at: this.length}, options));\n    },\n\n    // Remove a model from the end of the collection.\n    pop: function(options) {\n      var model = this.at(this.length - 1);\n      return this.remove(model, options);\n    },\n\n    // Add a model to the beginning of the collection.\n    unshift: function(model, options) {\n      return this.add(model, _.extend({at: 0}, options));\n    },\n\n    // Remove a model from the beginning of the collection.\n    shift: function(options) {\n      var model = this.at(0);\n      return this.remove(model, options);\n    },\n\n    // Slice out a sub-array of models from the collection.\n    slice: function() {\n      return slice.apply(this.models, arguments);\n    },\n\n    // Get a model from the set by id, cid, model object with id or cid\n    // properties, or an attributes object that is transformed through modelId.\n    get: function(obj) {\n      if (obj == null) return void 0;\n      return this._byId[obj] ||\n        this._byId[this.modelId(obj.attributes || obj)] ||\n        obj.cid && this._byId[obj.cid];\n    },\n\n    // Returns `true` if the model is in the collection.\n    has: function(obj) {\n      return this.get(obj) != null;\n    },\n\n    // Get the model at the given index.\n    at: function(index) {\n      if (index < 0) index += this.length;\n      return this.models[index];\n    },\n\n    // Return models with matching attributes. Useful for simple cases of\n    // `filter`.\n    where: function(attrs, first) {\n      return this[first ? 'find' : 'filter'](attrs);\n    },\n\n    // Return the first model with matching attributes. Useful for simple cases\n    // of `find`.\n    findWhere: function(attrs) {\n      return this.where(attrs, true);\n    },\n\n    // Force the collection to re-sort itself. You don't need to call this under\n    // normal circumstances, as the set will maintain sort order as each item\n    // is added.\n    sort: function(options) {\n      var comparator = this.comparator;\n      if (!comparator) throw new Error('Cannot sort a set without a comparator');\n      options || (options = {});\n\n      var length = comparator.length;\n      if (_.isFunction(comparator)) comparator = _.bind(comparator, this);\n\n      // Run sort based on type of `comparator`.\n      if (length === 1 || _.isString(comparator)) {\n        this.models = this.sortBy(comparator);\n      } else {\n        this.models.sort(comparator);\n      }\n      if (!options.silent) this.trigger('sort', this, options);\n      return this;\n    },\n\n    // Pluck an attribute from each model in the collection.\n    pluck: function(attr) {\n      return this.map(attr + '');\n    },\n\n    // Fetch the default set of models for this collection, resetting the\n    // collection when they arrive. If `reset: true` is passed, the response\n    // data will be passed through the `reset` method instead of `set`.\n    fetch: function(options) {\n      options = _.extend({parse: true}, options);\n      var success = options.success;\n      var collection = this;\n      options.success = function(resp) {\n        var method = options.reset ? 'reset' : 'set';\n        collection[method](resp, options);\n        if (success) success.call(options.context, collection, resp, options);\n        collection.trigger('sync', collection, resp, options);\n      };\n      wrapError(this, options);\n      return this.sync('read', this, options);\n    },\n\n    // Create a new instance of a model in this collection. Add the model to the\n    // collection immediately, unless `wait: true` is passed, in which case we\n    // wait for the server to agree.\n    create: function(model, options) {\n      options = options ? _.clone(options) : {};\n      var wait = options.wait;\n      model = this._prepareModel(model, options);\n      if (!model) return false;\n      if (!wait) this.add(model, options);\n      var collection = this;\n      var success = options.success;\n      options.success = function(m, resp, callbackOpts) {\n        if (wait) collection.add(m, callbackOpts);\n        if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n      };\n      model.save(null, options);\n      return model;\n    },\n\n    // **parse** converts a response into a list of models to be added to the\n    // collection. The default implementation is just to pass it through.\n    parse: function(resp, options) {\n      return resp;\n    },\n\n    // Create a new collection with an identical list of models as this one.\n    clone: function() {\n      return new this.constructor(this.models, {\n        model: this.model,\n        comparator: this.comparator\n      });\n    },\n\n    // Define how to uniquely identify models in the collection.\n    modelId: function(attrs) {\n      return attrs[this.model.prototype.idAttribute || 'id'];\n    },\n\n    // Private method to reset all internal state. Called when the collection\n    // is first initialized or reset.\n    _reset: function() {\n      this.length = 0;\n      this.models = [];\n      this._byId  = {};\n    },\n\n    // Prepare a hash of attributes (or other model) to be added to this\n    // collection.\n    _prepareModel: function(attrs, options) {\n      if (this._isModel(attrs)) {\n        if (!attrs.collection) attrs.collection = this;\n        return attrs;\n      }\n      options = options ? _.clone(options) : {};\n      options.collection = this;\n      var model = new this.model(attrs, options);\n      if (!model.validationError) return model;\n      this.trigger('invalid', this, model.validationError, options);\n      return false;\n    },\n\n    // Internal method called by both remove and set.\n    _removeModels: function(models, options) {\n      var removed = [];\n      for (var i = 0; i < models.length; i++) {\n        var model = this.get(models[i]);\n        if (!model) continue;\n\n        var index = this.indexOf(model);\n        this.models.splice(index, 1);\n        this.length--;\n\n        // Remove references before triggering 'remove' event to prevent an\n        // infinite loop. #3693\n        delete this._byId[model.cid];\n        var id = this.modelId(model.attributes);\n        if (id != null) delete this._byId[id];\n\n        if (!options.silent) {\n          options.index = index;\n          model.trigger('remove', model, this, options);\n        }\n\n        removed.push(model);\n        this._removeReference(model, options);\n      }\n      return removed;\n    },\n\n    // Method for checking whether an object should be considered a model for\n    // the purposes of adding to the collection.\n    _isModel: function(model) {\n      return model instanceof Model;\n    },\n\n    // Internal method to create a model's ties to a collection.\n    _addReference: function(model, options) {\n      this._byId[model.cid] = model;\n      var id = this.modelId(model.attributes);\n      if (id != null) this._byId[id] = model;\n      model.on('all', this._onModelEvent, this);\n    },\n\n    // Internal method to sever a model's ties to a collection.\n    _removeReference: function(model, options) {\n      delete this._byId[model.cid];\n      var id = this.modelId(model.attributes);\n      if (id != null) delete this._byId[id];\n      if (this === model.collection) delete model.collection;\n      model.off('all', this._onModelEvent, this);\n    },\n\n    // Internal method called every time a model in the set fires an event.\n    // Sets need to update their indexes when models change ids. All other\n    // events simply proxy through. \"add\" and \"remove\" events that originate\n    // in other collections are ignored.\n    _onModelEvent: function(event, model, collection, options) {\n      if (model) {\n        if ((event === 'add' || event === 'remove') && collection !== this) return;\n        if (event === 'destroy') this.remove(model, options);\n        if (event === 'change') {\n          var prevId = this.modelId(model.previousAttributes());\n          var id = this.modelId(model.attributes);\n          if (prevId !== id) {\n            if (prevId != null) delete this._byId[prevId];\n            if (id != null) this._byId[id] = model;\n          }\n        }\n      }\n      this.trigger.apply(this, arguments);\n    }\n\n  });\n\n  // Underscore methods that we want to implement on the Collection.\n  // 90% of the core usefulness of Backbone Collections is actually implemented\n  // right here:\n  var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n      foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n      select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n      contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n      head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n      without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n      isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n      sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n  // Mix in each Underscore method as a proxy to `Collection#models`.\n  addUnderscoreMethods(Collection, collectionMethods, 'models');\n\n  // Backbone.View\n  // -------------\n\n  // Backbone Views are almost more convention than they are actual code. A View\n  // is simply a JavaScript object that represents a logical chunk of UI in the\n  // DOM. This might be a single item, an entire list, a sidebar or panel, or\n  // even the surrounding frame which wraps your whole app. Defining a chunk of\n  // UI as a **View** allows you to define your DOM events declaratively, without\n  // having to worry about render order ... and makes it easy for the view to\n  // react to specific changes in the state of your models.\n\n  // Creating a Backbone.View creates its initial element outside of the DOM,\n  // if an existing element is not provided...\n  var View = Backbone.View = function(options) {\n    this.cid = _.uniqueId('view');\n    _.extend(this, _.pick(options, viewOptions));\n    this._ensureElement();\n    this.initialize.apply(this, arguments);\n  };\n\n  // Cached regex to split keys for `delegate`.\n  var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n  // List of view options to be set as properties.\n  var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n  // Set up all inheritable **Backbone.View** properties and methods.\n  _.extend(View.prototype, Events, {\n\n    // The default `tagName` of a View's element is `\"div\"`.\n    tagName: 'div',\n\n    // jQuery delegate for element lookup, scoped to DOM elements within the\n    // current view. This should be preferred to global lookups where possible.\n    $: function(selector) {\n      return this.$el.find(selector);\n    },\n\n    // Initialize is an empty function by default. Override it with your own\n    // initialization logic.\n    initialize: function(){},\n\n    // **render** is the core function that your view should override, in order\n    // to populate its element (`this.el`), with the appropriate HTML. The\n    // convention is for **render** to always return `this`.\n    render: function() {\n      return this;\n    },\n\n    // Remove this view by taking the element out of the DOM, and removing any\n    // applicable Backbone.Events listeners.\n    remove: function() {\n      this._removeElement();\n      this.stopListening();\n      return this;\n    },\n\n    // Remove this view's element from the document and all event listeners\n    // attached to it. Exposed for subclasses using an alternative DOM\n    // manipulation API.\n    _removeElement: function() {\n      this.$el.remove();\n    },\n\n    // Change the view's element (`this.el` property) and re-delegate the\n    // view's events on the new element.\n    setElement: function(element) {\n      this.undelegateEvents();\n      this._setElement(element);\n      this.delegateEvents();\n      return this;\n    },\n\n    // Creates the `this.el` and `this.$el` references for this view using the\n    // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n    // context or an element. Subclasses can override this to utilize an\n    // alternative DOM manipulation API and are only required to set the\n    // `this.el` property.\n    _setElement: function(el) {\n      this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n      this.el = this.$el[0];\n    },\n\n    // Set callbacks, where `this.events` is a hash of\n    //\n    // *{\"event selector\": \"callback\"}*\n    //\n    //     {\n    //       'mousedown .title':  'edit',\n    //       'click .button':     'save',\n    //       'click .open':       function(e) { ... }\n    //     }\n    //\n    // pairs. Callbacks will be bound to the view, with `this` set properly.\n    // Uses event delegation for efficiency.\n    // Omitting the selector binds the event to `this.el`.\n    delegateEvents: function(events) {\n      events || (events = _.result(this, 'events'));\n      if (!events) return this;\n      this.undelegateEvents();\n      for (var key in events) {\n        var method = events[key];\n        if (!_.isFunction(method)) method = this[method];\n        if (!method) continue;\n        var match = key.match(delegateEventSplitter);\n        this.delegate(match[1], match[2], _.bind(method, this));\n      }\n      return this;\n    },\n\n    // Add a single event listener to the view's element (or a child element\n    // using `selector`). This only works for delegate-able events: not `focus`,\n    // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n    delegate: function(eventName, selector, listener) {\n      this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n      return this;\n    },\n\n    // Clears all callbacks previously bound to the view by `delegateEvents`.\n    // You usually don't need to use this, but may wish to if you have multiple\n    // Backbone views attached to the same DOM element.\n    undelegateEvents: function() {\n      if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n      return this;\n    },\n\n    // A finer-grained `undelegateEvents` for removing a single delegated event.\n    // `selector` and `listener` are both optional.\n    undelegate: function(eventName, selector, listener) {\n      this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n      return this;\n    },\n\n    // Produces a DOM element to be assigned to your view. Exposed for\n    // subclasses using an alternative DOM manipulation API.\n    _createElement: function(tagName) {\n      return document.createElement(tagName);\n    },\n\n    // Ensure that the View has a DOM element to render into.\n    // If `this.el` is a string, pass it through `$()`, take the first\n    // matching element, and re-assign it to `el`. Otherwise, create\n    // an element from the `id`, `className` and `tagName` properties.\n    _ensureElement: function() {\n      if (!this.el) {\n        var attrs = _.extend({}, _.result(this, 'attributes'));\n        if (this.id) attrs.id = _.result(this, 'id');\n        if (this.className) attrs['class'] = _.result(this, 'className');\n        this.setElement(this._createElement(_.result(this, 'tagName')));\n        this._setAttributes(attrs);\n      } else {\n        this.setElement(_.result(this, 'el'));\n      }\n    },\n\n    // Set attributes from a hash on this view's element.  Exposed for\n    // subclasses using an alternative DOM manipulation API.\n    _setAttributes: function(attributes) {\n      this.$el.attr(attributes);\n    }\n\n  });\n\n  // Backbone.sync\n  // -------------\n\n  // Override this function to change the manner in which Backbone persists\n  // models to the server. You will be passed the type of request, and the\n  // model in question. By default, makes a RESTful Ajax request\n  // to the model's `url()`. Some possible customizations could be:\n  //\n  // * Use `setTimeout` to batch rapid-fire updates into a single request.\n  // * Send up the models as XML instead of JSON.\n  // * Persist models via WebSockets instead of Ajax.\n  //\n  // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n  // as `POST`, with a `_method` parameter containing the true HTTP method,\n  // as well as all requests with the body as `application/x-www-form-urlencoded`\n  // instead of `application/json` with the model in a param named `model`.\n  // Useful when interfacing with server-side languages like **PHP** that make\n  // it difficult to read the body of `PUT` requests.\n  Backbone.sync = function(method, model, options) {\n    var type = methodMap[method];\n\n    // Default options, unless specified.\n    _.defaults(options || (options = {}), {\n      emulateHTTP: Backbone.emulateHTTP,\n      emulateJSON: Backbone.emulateJSON\n    });\n\n    // Default JSON-request options.\n    var params = {type: type, dataType: 'json'};\n\n    // Ensure that we have a URL.\n    if (!options.url) {\n      params.url = _.result(model, 'url') || urlError();\n    }\n\n    // Ensure that we have the appropriate request data.\n    if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n      params.contentType = 'application/json';\n      params.data = JSON.stringify(options.attrs || model.toJSON(options));\n    }\n\n    // For older servers, emulate JSON by encoding the request into an HTML-form.\n    if (options.emulateJSON) {\n      params.contentType = 'application/x-www-form-urlencoded';\n      params.data = params.data ? {model: params.data} : {};\n    }\n\n    // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n    // And an `X-HTTP-Method-Override` header.\n    if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n      params.type = 'POST';\n      if (options.emulateJSON) params.data._method = type;\n      var beforeSend = options.beforeSend;\n      options.beforeSend = function(xhr) {\n        xhr.setRequestHeader('X-HTTP-Method-Override', type);\n        if (beforeSend) return beforeSend.apply(this, arguments);\n      };\n    }\n\n    // Don't process data on a non-GET request.\n    if (params.type !== 'GET' && !options.emulateJSON) {\n      params.processData = false;\n    }\n\n    // Pass along `textStatus` and `errorThrown` from jQuery.\n    var error = options.error;\n    options.error = function(xhr, textStatus, errorThrown) {\n      options.textStatus = textStatus;\n      options.errorThrown = errorThrown;\n      if (error) error.call(options.context, xhr, textStatus, errorThrown);\n    };\n\n    // Make the request, allowing the user to override any Ajax options.\n    var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n    model.trigger('request', model, xhr, options);\n    return xhr;\n  };\n\n  // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n  var methodMap = {\n    'create': 'POST',\n    'update': 'PUT',\n    'patch': 'PATCH',\n    'delete': 'DELETE',\n    'read': 'GET'\n  };\n\n  // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n  // Override this if you'd like to use a different library.\n  Backbone.ajax = function() {\n    return Backbone.$.ajax.apply(Backbone.$, arguments);\n  };\n\n  // Backbone.Router\n  // ---------------\n\n  // Routers map faux-URLs to actions, and fire events when routes are\n  // matched. Creating a new one sets its `routes` hash, if not set statically.\n  var Router = Backbone.Router = function(options) {\n    options || (options = {});\n    if (options.routes) this.routes = options.routes;\n    this._bindRoutes();\n    this.initialize.apply(this, arguments);\n  };\n\n  // Cached regular expressions for matching named param parts and splatted\n  // parts of route strings.\n  var optionalParam = /\\((.*?)\\)/g;\n  var namedParam    = /(\\(\\?)?:\\w+/g;\n  var splatParam    = /\\*\\w+/g;\n  var escapeRegExp  = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n  // Set up all inheritable **Backbone.Router** properties and methods.\n  _.extend(Router.prototype, Events, {\n\n    // Initialize is an empty function by default. Override it with your own\n    // initialization logic.\n    initialize: function(){},\n\n    // Manually bind a single named route to a callback. For example:\n    //\n    //     this.route('search/:query/p:num', 'search', function(query, num) {\n    //       ...\n    //     });\n    //\n    route: function(route, name, callback) {\n      if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n      if (_.isFunction(name)) {\n        callback = name;\n        name = '';\n      }\n      if (!callback) callback = this[name];\n      var router = this;\n      Backbone.history.route(route, function(fragment) {\n        var args = router._extractParameters(route, fragment);\n        if (router.execute(callback, args, name) !== false) {\n          router.trigger.apply(router, ['route:' + name].concat(args));\n          router.trigger('route', name, args);\n          Backbone.history.trigger('route', router, name, args);\n        }\n      });\n      return this;\n    },\n\n    // Execute a route handler with the provided parameters.  This is an\n    // excellent place to do pre-route setup or post-route cleanup.\n    execute: function(callback, args, name) {\n      if (callback) callback.apply(this, args);\n    },\n\n    // Simple proxy to `Backbone.history` to save a fragment into the history.\n    navigate: function(fragment, options) {\n      Backbone.history.navigate(fragment, options);\n      return this;\n    },\n\n    // Bind all defined routes to `Backbone.history`. We have to reverse the\n    // order of the routes here to support behavior where the most general\n    // routes can be defined at the bottom of the route map.\n    _bindRoutes: function() {\n      if (!this.routes) return;\n      this.routes = _.result(this, 'routes');\n      var route, routes = _.keys(this.routes);\n      while ((route = routes.pop()) != null) {\n        this.route(route, this.routes[route]);\n      }\n    },\n\n    // Convert a route string into a regular expression, suitable for matching\n    // against the current location hash.\n    _routeToRegExp: function(route) {\n      route = route.replace(escapeRegExp, '\\\\$&')\n                   .replace(optionalParam, '(?:$1)?')\n                   .replace(namedParam, function(match, optional) {\n                     return optional ? match : '([^/?]+)';\n                   })\n                   .replace(splatParam, '([^?]*?)');\n      return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n    },\n\n    // Given a route, and a URL fragment that it matches, return the array of\n    // extracted decoded parameters. Empty or unmatched parameters will be\n    // treated as `null` to normalize cross-browser behavior.\n    _extractParameters: function(route, fragment) {\n      var params = route.exec(fragment).slice(1);\n      return _.map(params, function(param, i) {\n        // Don't decode the search params.\n        if (i === params.length - 1) return param || null;\n        return param ? decodeURIComponent(param) : null;\n      });\n    }\n\n  });\n\n  // Backbone.History\n  // ----------------\n\n  // Handles cross-browser history management, based on either\n  // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n  // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n  // and URL fragments. If the browser supports neither (old IE, natch),\n  // falls back to polling.\n  var History = Backbone.History = function() {\n    this.handlers = [];\n    this.checkUrl = _.bind(this.checkUrl, this);\n\n    // Ensure that `History` can be used outside of the browser.\n    if (typeof window !== 'undefined') {\n      this.location = window.location;\n      this.history = window.history;\n    }\n  };\n\n  // Cached regex for stripping a leading hash/slash and trailing space.\n  var routeStripper = /^[#\\/]|\\s+$/g;\n\n  // Cached regex for stripping leading and trailing slashes.\n  var rootStripper = /^\\/+|\\/+$/g;\n\n  // Cached regex for stripping urls of hash.\n  var pathStripper = /#.*$/;\n\n  // Has the history handling already been started?\n  History.started = false;\n\n  // Set up all inheritable **Backbone.History** properties and methods.\n  _.extend(History.prototype, Events, {\n\n    // The default interval to poll for hash changes, if necessary, is\n    // twenty times a second.\n    interval: 50,\n\n    // Are we at the app root?\n    atRoot: function() {\n      var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n      return path === this.root && !this.getSearch();\n    },\n\n    // Does the pathname match the root?\n    matchRoot: function() {\n      var path = this.decodeFragment(this.location.pathname);\n      var rootPath = path.slice(0, this.root.length - 1) + '/';\n      return rootPath === this.root;\n    },\n\n    // Unicode characters in `location.pathname` are percent encoded so they're\n    // decoded for comparison. `%25` should not be decoded since it may be part\n    // of an encoded parameter.\n    decodeFragment: function(fragment) {\n      return decodeURI(fragment.replace(/%25/g, '%2525'));\n    },\n\n    // In IE6, the hash fragment and search params are incorrect if the\n    // fragment contains `?`.\n    getSearch: function() {\n      var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n      return match ? match[0] : '';\n    },\n\n    // Gets the true hash value. Cannot use location.hash directly due to bug\n    // in Firefox where location.hash will always be decoded.\n    getHash: function(window) {\n      var match = (window || this).location.href.match(/#(.*)$/);\n      return match ? match[1] : '';\n    },\n\n    // Get the pathname and search params, without the root.\n    getPath: function() {\n      var path = this.decodeFragment(\n        this.location.pathname + this.getSearch()\n      ).slice(this.root.length - 1);\n      return path.charAt(0) === '/' ? path.slice(1) : path;\n    },\n\n    // Get the cross-browser normalized URL fragment from the path or hash.\n    getFragment: function(fragment) {\n      if (fragment == null) {\n        if (this._usePushState || !this._wantsHashChange) {\n          fragment = this.getPath();\n        } else {\n          fragment = this.getHash();\n        }\n      }\n      return fragment.replace(routeStripper, '');\n    },\n\n    // Start the hash change handling, returning `true` if the current URL matches\n    // an existing route, and `false` otherwise.\n    start: function(options) {\n      if (History.started) throw new Error('Backbone.history has already been started');\n      History.started = true;\n\n      // Figure out the initial configuration. Do we need an iframe?\n      // Is pushState desired ... is it available?\n      this.options          = _.extend({root: '/'}, this.options, options);\n      this.root             = this.options.root;\n      this._wantsHashChange = this.options.hashChange !== false;\n      this._hasHashChange   = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n      this._useHashChange   = this._wantsHashChange && this._hasHashChange;\n      this._wantsPushState  = !!this.options.pushState;\n      this._hasPushState    = !!(this.history && this.history.pushState);\n      this._usePushState    = this._wantsPushState && this._hasPushState;\n      this.fragment         = this.getFragment();\n\n      // Normalize root to always include a leading and trailing slash.\n      this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n      // Transition from hashChange to pushState or vice versa if both are\n      // requested.\n      if (this._wantsHashChange && this._wantsPushState) {\n\n        // If we've started off with a route from a `pushState`-enabled\n        // browser, but we're currently in a browser that doesn't support it...\n        if (!this._hasPushState && !this.atRoot()) {\n          var rootPath = this.root.slice(0, -1) || '/';\n          this.location.replace(rootPath + '#' + this.getPath());\n          // Return immediately as browser will do redirect to new url\n          return true;\n\n        // Or if we've started out with a hash-based route, but we're currently\n        // in a browser where it could be `pushState`-based instead...\n        } else if (this._hasPushState && this.atRoot()) {\n          this.navigate(this.getHash(), {replace: true});\n        }\n\n      }\n\n      // Proxy an iframe to handle location events if the browser doesn't\n      // support the `hashchange` event, HTML5 history, or the user wants\n      // `hashChange` but not `pushState`.\n      if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n        this.iframe = document.createElement('iframe');\n        this.iframe.src = 'javascript:0';\n        this.iframe.style.display = 'none';\n        this.iframe.tabIndex = -1;\n        var body = document.body;\n        // Using `appendChild` will throw on IE < 9 if the document is not ready.\n        var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n        iWindow.document.open();\n        iWindow.document.close();\n        iWindow.location.hash = '#' + this.fragment;\n      }\n\n      // Add a cross-platform `addEventListener` shim for older browsers.\n      var addEventListener = window.addEventListener || function(eventName, listener) {\n        return attachEvent('on' + eventName, listener);\n      };\n\n      // Depending on whether we're using pushState or hashes, and whether\n      // 'onhashchange' is supported, determine how we check the URL state.\n      if (this._usePushState) {\n        addEventListener('popstate', this.checkUrl, false);\n      } else if (this._useHashChange && !this.iframe) {\n        addEventListener('hashchange', this.checkUrl, false);\n      } else if (this._wantsHashChange) {\n        this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n      }\n\n      if (!this.options.silent) return this.loadUrl();\n    },\n\n    // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n    // but possibly useful for unit testing Routers.\n    stop: function() {\n      // Add a cross-platform `removeEventListener` shim for older browsers.\n      var removeEventListener = window.removeEventListener || function(eventName, listener) {\n        return detachEvent('on' + eventName, listener);\n      };\n\n      // Remove window listeners.\n      if (this._usePushState) {\n        removeEventListener('popstate', this.checkUrl, false);\n      } else if (this._useHashChange && !this.iframe) {\n        removeEventListener('hashchange', this.checkUrl, false);\n      }\n\n      // Clean up the iframe if necessary.\n      if (this.iframe) {\n        document.body.removeChild(this.iframe);\n        this.iframe = null;\n      }\n\n      // Some environments will throw when clearing an undefined interval.\n      if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n      History.started = false;\n    },\n\n    // Add a route to be tested when the fragment changes. Routes added later\n    // may override previous routes.\n    route: function(route, callback) {\n      this.handlers.unshift({route: route, callback: callback});\n    },\n\n    // Checks the current URL to see if it has changed, and if it has,\n    // calls `loadUrl`, normalizing across the hidden iframe.\n    checkUrl: function(e) {\n      var current = this.getFragment();\n\n      // If the user pressed the back button, the iframe's hash will have\n      // changed and we should use that for comparison.\n      if (current === this.fragment && this.iframe) {\n        current = this.getHash(this.iframe.contentWindow);\n      }\n\n      if (current === this.fragment) return false;\n      if (this.iframe) this.navigate(current);\n      this.loadUrl();\n    },\n\n    // Attempt to load the current URL fragment. If a route succeeds with a\n    // match, returns `true`. If no defined routes matches the fragment,\n    // returns `false`.\n    loadUrl: function(fragment) {\n      // If the root doesn't match, no routes can match either.\n      if (!this.matchRoot()) return false;\n      fragment = this.fragment = this.getFragment(fragment);\n      return _.some(this.handlers, function(handler) {\n        if (handler.route.test(fragment)) {\n          handler.callback(fragment);\n          return true;\n        }\n      });\n    },\n\n    // Save a fragment into the hash history, or replace the URL state if the\n    // 'replace' option is passed. You are responsible for properly URL-encoding\n    // the fragment in advance.\n    //\n    // The options object can contain `trigger: true` if you wish to have the\n    // route callback be fired (not usually desirable), or `replace: true`, if\n    // you wish to modify the current URL without adding an entry to the history.\n    navigate: function(fragment, options) {\n      if (!History.started) return false;\n      if (!options || options === true) options = {trigger: !!options};\n\n      // Normalize the fragment.\n      fragment = this.getFragment(fragment || '');\n\n      // Don't include a trailing slash on the root.\n      var rootPath = this.root;\n      if (fragment === '' || fragment.charAt(0) === '?') {\n        rootPath = rootPath.slice(0, -1) || '/';\n      }\n      var url = rootPath + fragment;\n\n      // Strip the hash and decode for matching.\n      fragment = this.decodeFragment(fragment.replace(pathStripper, ''));\n\n      if (this.fragment === fragment) return;\n      this.fragment = fragment;\n\n      // If pushState is available, we use it to set the fragment as a real URL.\n      if (this._usePushState) {\n        this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n      // If hash changes haven't been explicitly disabled, update the hash\n      // fragment to store history.\n      } else if (this._wantsHashChange) {\n        this._updateHash(this.location, fragment, options.replace);\n        if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n          var iWindow = this.iframe.contentWindow;\n\n          // Opening and closing the iframe tricks IE7 and earlier to push a\n          // history entry on hash-tag change.  When replace is true, we don't\n          // want this.\n          if (!options.replace) {\n            iWindow.document.open();\n            iWindow.document.close();\n          }\n\n          this._updateHash(iWindow.location, fragment, options.replace);\n        }\n\n      // If you've told us that you explicitly don't want fallback hashchange-\n      // based history, then `navigate` becomes a page refresh.\n      } else {\n        return this.location.assign(url);\n      }\n      if (options.trigger) return this.loadUrl(fragment);\n    },\n\n    // Update the hash location, either replacing the current entry, or adding\n    // a new one to the browser history.\n    _updateHash: function(location, fragment, replace) {\n      if (replace) {\n        var href = location.href.replace(/(javascript:|#).*$/, '');\n        location.replace(href + '#' + fragment);\n      } else {\n        // Some browsers require that `hash` contains a leading #.\n        location.hash = '#' + fragment;\n      }\n    }\n\n  });\n\n  // Create the default Backbone.history.\n  Backbone.history = new History;\n\n  // Helpers\n  // -------\n\n  // Helper function to correctly set up the prototype chain for subclasses.\n  // Similar to `goog.inherits`, but uses a hash of prototype properties and\n  // class properties to be extended.\n  var extend = function(protoProps, staticProps) {\n    var parent = this;\n    var child;\n\n    // The constructor function for the new subclass is either defined by you\n    // (the \"constructor\" property in your `extend` definition), or defaulted\n    // by us to simply call the parent constructor.\n    if (protoProps && _.has(protoProps, 'constructor')) {\n      child = protoProps.constructor;\n    } else {\n      child = function(){ return parent.apply(this, arguments); };\n    }\n\n    // Add static properties to the constructor function, if supplied.\n    _.extend(child, parent, staticProps);\n\n    // Set the prototype chain to inherit from `parent`, without calling\n    // `parent`'s constructor function and add the prototype properties.\n    child.prototype = _.create(parent.prototype, protoProps);\n    child.prototype.constructor = child;\n\n    // Set a convenience property in case the parent's prototype is needed\n    // later.\n    child.__super__ = parent.prototype;\n\n    return child;\n  };\n\n  // Set up inheritance for the model, collection, router, view and history.\n  Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n  // Throw an error when a URL is needed, and none is supplied.\n  var urlError = function() {\n    throw new Error('A \"url\" property or function must be specified');\n  };\n\n  // Wrap an optional error callback with a fallback error event.\n  var wrapError = function(model, options) {\n    var error = options.error;\n    options.error = function(resp) {\n      if (error) error.call(options.context, model, resp, options);\n      model.trigger('error', model, resp, options);\n    };\n  };\n\n  return Backbone;\n});\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];","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","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 };","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 { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","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 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 { 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}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\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 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 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 default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\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 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 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};","export default function getVariation(placement) {\n  return placement.split('-')[1];\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};","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};","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 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}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> 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 <html>\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 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 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}","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 `<html>` and `<body>` 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 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 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 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, 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 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 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 { 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 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 { 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}","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 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}","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 { 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 { 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\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","/*!\n  * Bootstrap v5.3.3 (https://getbootstrap.com/)\n  * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\nimport * as Popper from '@popperjs/core';\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map();\nconst Data = {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map());\n    }\n    const instanceMap = elementMap.get(element);\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n      return;\n    }\n    instanceMap.set(key, instance);\n  },\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null;\n    }\n    return null;\n  },\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return;\n    }\n    const instanceMap = elementMap.get(element);\n    instanceMap.delete(key);\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element);\n    }\n  }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend';\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`);\n  }\n  return selector;\n};\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`;\n  }\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID);\n  } while (document.getElementById(prefix));\n  return prefix;\n};\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0;\n  }\n\n  // Get transition-duration of the element\n  let {\n    transitionDuration,\n    transitionDelay\n  } = window.getComputedStyle(element);\n  const floatTransitionDuration = Number.parseFloat(transitionDuration);\n  const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0;\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0];\n  transitionDelay = transitionDelay.split(',')[0];\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END));\n};\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false;\n  }\n  if (typeof object.jquery !== 'undefined') {\n    object = object[0];\n  }\n  return typeof object.nodeType !== 'undefined';\n};\nconst getElement = object => {\n  // it's a jQuery object or a node element\n  if (isElement(object)) {\n    return object.jquery ? object[0] : object;\n  }\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object));\n  }\n  return null;\n};\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false;\n  }\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n  // Handle `details` element as its content may falsie appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])');\n  if (!closedDetails) {\n    return elementIsVisible;\n  }\n  if (closedDetails !== element) {\n    const summary = element.closest('summary');\n    if (summary && summary.parentNode !== closedDetails) {\n      return false;\n    }\n    if (summary === null) {\n      return false;\n    }\n  }\n  return elementIsVisible;\n};\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true;\n  }\n  if (element.classList.contains('disabled')) {\n    return true;\n  }\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled;\n  }\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null;\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode();\n    return root instanceof ShadowRoot ? root : null;\n  }\n  if (element instanceof ShadowRoot) {\n    return element;\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null;\n  }\n  return findShadowRoot(element.parentNode);\n};\nconst noop = () => {};\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\nconst getjQuery = () => {\n  if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return window.jQuery;\n  }\n  return null;\n};\nconst DOMContentLoadedCallbacks = [];\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback();\n        }\n      });\n    }\n    DOMContentLoadedCallbacks.push(callback);\n  } else {\n    callback();\n  }\n};\nconst isRTL = () => document.documentElement.dir === 'rtl';\nconst defineJQueryPlugin = plugin => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery();\n    /* istanbul ignore if */\n    if ($) {\n      const name = plugin.NAME;\n      const JQUERY_NO_CONFLICT = $.fn[name];\n      $.fn[name] = plugin.jQueryInterface;\n      $.fn[name].Constructor = plugin;\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT;\n        return plugin.jQueryInterface;\n      };\n    }\n  });\n};\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;\n};\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback);\n    return;\n  }\n  const durationPadding = 5;\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n  let called = false;\n  const handler = ({\n    target\n  }) => {\n    if (target !== transitionElement) {\n      return;\n    }\n    called = true;\n    transitionElement.removeEventListener(TRANSITION_END, handler);\n    execute(callback);\n  };\n  transitionElement.addEventListener(TRANSITION_END, handler);\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement);\n    }\n  }, emulatedDuration);\n};\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length;\n  let index = list.indexOf(activeElement);\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n  }\n  index += shouldGetNext ? 1 : -1;\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength;\n  }\n  return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\nlet uidEvent = 1;\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n};\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element);\n  element.uidEvent = uid;\n  eventRegistry[uid] = eventRegistry[uid] || {};\n  return eventRegistry[uid];\n}\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, {\n      delegateTarget: element\n    });\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn);\n    }\n    return fn.apply(element, [event]);\n  };\n}\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector);\n    for (let {\n      target\n    } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue;\n        }\n        hydrateObj(event, {\n          delegateTarget: target\n        });\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn);\n        }\n        return fn.apply(target, [event]);\n      }\n    }\n  };\n}\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n}\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string';\n  // TODO: tooltip passes `false` instead of selector, so we need to check\n  const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n  let typeEvent = getTypeEvent(originalTypeEvent);\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent;\n  }\n  return [isDelegated, callable, typeEvent];\n}\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return;\n  }\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n          return fn.call(this, event);\n        }\n      };\n    };\n    callable = wrapFunction(callable);\n  }\n  const events = getElementEvents(element);\n  const handlers = events[typeEvent] || (events[typeEvent] = {});\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff;\n    return;\n  }\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n  const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n  fn.delegationSelector = isDelegated ? handler : null;\n  fn.callable = callable;\n  fn.oneOff = oneOff;\n  fn.uidEvent = uid;\n  handlers[uid] = fn;\n  element.addEventListener(typeEvent, fn, isDelegated);\n}\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector);\n  if (!fn) {\n    return;\n  }\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n  delete events[typeEvent][fn.uidEvent];\n}\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {};\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n    }\n  }\n}\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '');\n  return customEvents[event] || event;\n}\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false);\n  },\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true);\n  },\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return;\n    }\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n    const inNamespace = typeEvent !== originalTypeEvent;\n    const events = getElementEvents(element);\n    const storeElementEvent = events[typeEvent] || {};\n    const isNamespace = originalTypeEvent.startsWith('.');\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return;\n      }\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n      return;\n    }\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n      }\n    }\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '');\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n      }\n    }\n  },\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null;\n    }\n    const $ = getjQuery();\n    const typeEvent = getTypeEvent(event);\n    const inNamespace = event !== typeEvent;\n    let jQueryEvent = null;\n    let bubbles = true;\n    let nativeDispatch = true;\n    let defaultPrevented = false;\n    if (inNamespace && $) {\n      jQueryEvent = $.Event(event, args);\n      $(element).trigger(jQueryEvent);\n      bubbles = !jQueryEvent.isPropagationStopped();\n      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n      defaultPrevented = jQueryEvent.isDefaultPrevented();\n    }\n    const evt = hydrateObj(new Event(event, {\n      bubbles,\n      cancelable: true\n    }), args);\n    if (defaultPrevented) {\n      evt.preventDefault();\n    }\n    if (nativeDispatch) {\n      element.dispatchEvent(evt);\n    }\n    if (evt.defaultPrevented && jQueryEvent) {\n      jQueryEvent.preventDefault();\n    }\n    return evt;\n  }\n};\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value;\n    } catch (_unused) {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value;\n        }\n      });\n    }\n  }\n  return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true;\n  }\n  if (value === 'false') {\n    return false;\n  }\n  if (value === Number(value).toString()) {\n    return Number(value);\n  }\n  if (value === '' || value === 'null') {\n    return null;\n  }\n  if (typeof value !== 'string') {\n    return value;\n  }\n  try {\n    return JSON.parse(decodeURIComponent(value));\n  } catch (_unused) {\n    return value;\n  }\n}\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n  },\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n  },\n  getDataAttributes(element) {\n    if (!element) {\n      return {};\n    }\n    const attributes = {};\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '');\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n      attributes[pureKey] = normalizeData(element.dataset[key]);\n    }\n    return attributes;\n  },\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n  }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {};\n  }\n  static get DefaultType() {\n    return {};\n  }\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!');\n  }\n  _getConfig(config) {\n    config = this._mergeConfigObj(config);\n    config = this._configAfterMerge(config);\n    this._typeCheckConfig(config);\n    return config;\n  }\n  _configAfterMerge(config) {\n    return config;\n  }\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    };\n  }\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property];\n      const valueType = isElement(value) ? 'element' : toType(value);\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n      }\n    }\n  }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.3';\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super();\n    element = getElement(element);\n    if (!element) {\n      return;\n    }\n    this._element = element;\n    this._config = this._getConfig(config);\n    Data.set(this._element, this.constructor.DATA_KEY, this);\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY);\n    EventHandler.off(this._element, this.constructor.EVENT_KEY);\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null;\n    }\n  }\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated);\n  }\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element);\n    config = this._configAfterMerge(config);\n    this._typeCheckConfig(config);\n    return config;\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY);\n  }\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n  }\n  static get VERSION() {\n    return VERSION;\n  }\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`;\n  }\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`;\n  }\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`;\n  }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target');\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href');\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n      return null;\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n    }\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\n  }\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null;\n};\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n  },\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector);\n  },\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector));\n  },\n  parents(element, selector) {\n    const parents = [];\n    let ancestor = element.parentNode.closest(selector);\n    while (ancestor) {\n      parents.push(ancestor);\n      ancestor = ancestor.parentNode.closest(selector);\n    }\n    return parents;\n  },\n  prev(element, selector) {\n    let previous = element.previousElementSibling;\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous];\n      }\n      previous = previous.previousElementSibling;\n    }\n    return [];\n  },\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling;\n    while (next) {\n      if (next.matches(selector)) {\n        return [next];\n      }\n      next = next.nextElementSibling;\n    }\n    return [];\n  },\n  focusableChildren(element) {\n    const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n  },\n  getSelectorFromElement(element) {\n    const selector = getSelector(element);\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null;\n    }\n    return null;\n  },\n  getElementFromSelector(element) {\n    const selector = getSelector(element);\n    return selector ? SelectorEngine.findOne(selector) : null;\n  },\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element);\n    return selector ? SelectorEngine.find(selector) : [];\n  }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n  const name = component.NAME;\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault();\n    }\n    if (isDisabled(this)) {\n      return;\n    }\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);\n    const instance = component.getOrCreateInstance(target);\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]();\n  });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$f = 'alert';\nconst DATA_KEY$a = 'bs.alert';\nconst EVENT_KEY$b = `.${DATA_KEY$a}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$b}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$b}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME$f;\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n    if (closeEvent.defaultPrevented) {\n      return;\n    }\n    this._element.classList.remove(CLASS_NAME_SHOW$8);\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove();\n    EventHandler.trigger(this._element, EVENT_CLOSED);\n    this.dispose();\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Alert.getOrCreateInstance(this);\n      if (typeof config !== 'string') {\n        return;\n      }\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`);\n      }\n      data[config](this);\n    });\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close');\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$e = 'button';\nconst DATA_KEY$9 = 'bs.button';\nconst EVENT_KEY$a = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME$e;\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Button.getOrCreateInstance(this);\n      if (config === 'toggle') {\n        data[config]();\n      }\n    });\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n  event.preventDefault();\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n  const data = Button.getOrCreateInstance(button);\n  data.toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$d = 'swipe';\nconst EVENT_KEY$9 = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\nconst Default$c = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null\n};\nconst DefaultType$c = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)'\n};\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super();\n    this._element = element;\n    if (!element || !Swipe.isSupported()) {\n      return;\n    }\n    this._config = this._getConfig(config);\n    this._deltaX = 0;\n    this._supportPointerEvents = Boolean(window.PointerEvent);\n    this._initEvents();\n  }\n\n  // Getters\n  static get Default() {\n    return Default$c;\n  }\n  static get DefaultType() {\n    return DefaultType$c;\n  }\n  static get NAME() {\n    return NAME$d;\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY$9);\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX;\n      return;\n    }\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX;\n    }\n  }\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX;\n    }\n    this._handleSwipe();\n    execute(this._config.endCallback);\n  }\n  _move(event) {\n    this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n  }\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX);\n    if (absDeltaX <= SWIPE_THRESHOLD) {\n      return;\n    }\n    const direction = absDeltaX / this._deltaX;\n    this._deltaX = 0;\n    if (!direction) {\n      return;\n    }\n    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n  }\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n    }\n  }\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n  }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$c = 'carousel';\nconst DATA_KEY$8 = 'bs.carousel';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst ARROW_LEFT_KEY$1 = 'ArrowLeft';\nconst ARROW_RIGHT_KEY$1 = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst EVENT_SLIDE = `slide${EVENT_KEY$8}`;\nconst EVENT_SLID = `slid${EVENT_KEY$8}`;\nconst EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\nconst EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\nconst EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\nconst EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n};\nconst Default$b = {\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover',\n  ride: false,\n  touch: true,\n  wrap: true\n};\nconst DefaultType$b = {\n  interval: '(number|boolean)',\n  // TODO:v6 remove boolean support\n  keyboard: 'boolean',\n  pause: '(string|boolean)',\n  ride: '(boolean|string)',\n  touch: 'boolean',\n  wrap: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config);\n    this._interval = null;\n    this._activeElement = null;\n    this._isSliding = false;\n    this.touchTimeout = null;\n    this._swipeHelper = null;\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n    this._addEventListeners();\n    if (this._config.ride === CLASS_NAME_CAROUSEL) {\n      this.cycle();\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default$b;\n  }\n  static get DefaultType() {\n    return DefaultType$b;\n  }\n  static get NAME() {\n    return NAME$c;\n  }\n\n  // Public\n  next() {\n    this._slide(ORDER_NEXT);\n  }\n  nextWhenVisible() {\n    // FIXME TODO use `document.visibilityState`\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden && isVisible(this._element)) {\n      this.next();\n    }\n  }\n  prev() {\n    this._slide(ORDER_PREV);\n  }\n  pause() {\n    if (this._isSliding) {\n      triggerTransitionEnd(this._element);\n    }\n    this._clearInterval();\n  }\n  cycle() {\n    this._clearInterval();\n    this._updateInterval();\n    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n  }\n  _maybeEnableCycle() {\n    if (!this._config.ride) {\n      return;\n    }\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n      return;\n    }\n    this.cycle();\n  }\n  to(index) {\n    const items = this._getItems();\n    if (index > items.length - 1 || index < 0) {\n      return;\n    }\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n      return;\n    }\n    const activeIndex = this._getItemIndex(this._getActive());\n    if (activeIndex === index) {\n      return;\n    }\n    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n    this._slide(order, items[index]);\n  }\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose();\n    }\n    super.dispose();\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.defaultInterval = config.interval;\n    return config;\n  }\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));\n    }\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n      EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n    }\n    if (this._config.touch && Swipe.isSupported()) {\n      this._addTouchEventListeners();\n    }\n  }\n  _addTouchEventListeners() {\n    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n    }\n    const endCallBack = () => {\n      if (this._config.pause !== 'hover') {\n        return;\n      }\n\n      // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause();\n      if (this.touchTimeout) {\n        clearTimeout(this.touchTimeout);\n      }\n      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n    };\n    const swipeConfig = {\n      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n      endCallback: endCallBack\n    };\n    this._swipeHelper = new Swipe(this._element, swipeConfig);\n  }\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return;\n    }\n    const direction = KEY_TO_DIRECTION[event.key];\n    if (direction) {\n      event.preventDefault();\n      this._slide(this._directionToOrder(direction));\n    }\n  }\n  _getItemIndex(element) {\n    return this._getItems().indexOf(element);\n  }\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return;\n    }\n    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n    activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n    activeIndicator.removeAttribute('aria-current');\n    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n    if (newActiveIndicator) {\n      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n      newActiveIndicator.setAttribute('aria-current', 'true');\n    }\n  }\n  _updateInterval() {\n    const element = this._activeElement || this._getActive();\n    if (!element) {\n      return;\n    }\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n    this._config.interval = elementInterval || this._config.defaultInterval;\n  }\n  _slide(order, element = null) {\n    if (this._isSliding) {\n      return;\n    }\n    const activeElement = this._getActive();\n    const isNext = order === ORDER_NEXT;\n    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n    if (nextElement === activeElement) {\n      return;\n    }\n    const nextElementIndex = this._getItemIndex(nextElement);\n    const triggerEvent = eventName => {\n      return EventHandler.trigger(this._element, eventName, {\n        relatedTarget: nextElement,\n        direction: this._orderToDirection(order),\n        from: this._getItemIndex(activeElement),\n        to: nextElementIndex\n      });\n    };\n    const slideEvent = triggerEvent(EVENT_SLIDE);\n    if (slideEvent.defaultPrevented) {\n      return;\n    }\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      // TODO: change tests that use empty divs to avoid this check\n      return;\n    }\n    const isCycling = Boolean(this._interval);\n    this.pause();\n    this._isSliding = true;\n    this._setActiveIndicatorElement(nextElementIndex);\n    this._activeElement = nextElement;\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n    nextElement.classList.add(orderClassName);\n    reflow(nextElement);\n    activeElement.classList.add(directionalClassName);\n    nextElement.classList.add(directionalClassName);\n    const completeCallBack = () => {\n      nextElement.classList.remove(directionalClassName, orderClassName);\n      nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n      activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n      this._isSliding = false;\n      triggerEvent(EVENT_SLID);\n    };\n    this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n    if (isCycling) {\n      this.cycle();\n    }\n  }\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_SLIDE);\n  }\n  _getActive() {\n    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n  }\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element);\n  }\n  _clearInterval() {\n    if (this._interval) {\n      clearInterval(this._interval);\n      this._interval = null;\n    }\n  }\n  _directionToOrder(direction) {\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n    }\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n  }\n  _orderToDirection(order) {\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n    }\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Carousel.getOrCreateInstance(this, config);\n      if (typeof config === 'number') {\n        data.to(config);\n        return;\n      }\n      if (typeof config === 'string') {\n        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n        data[config]();\n      }\n    });\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this);\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return;\n  }\n  event.preventDefault();\n  const carousel = Carousel.getOrCreateInstance(target);\n  const slideIndex = this.getAttribute('data-bs-slide-to');\n  if (slideIndex) {\n    carousel.to(slideIndex);\n    carousel._maybeEnableCycle();\n    return;\n  }\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next();\n    carousel._maybeEnableCycle();\n    return;\n  }\n  carousel.prev();\n  carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel);\n  }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$b = 'collapse';\nconst DATA_KEY$7 = 'bs.collapse';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\nconst EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\nconst EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\nconst EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst Default$a = {\n  parent: null,\n  toggle: true\n};\nconst DefaultType$a = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config);\n    this._isTransitioning = false;\n    this._triggerArray = [];\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem);\n      const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem);\n      }\n    }\n    this._initializeChildren();\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n    }\n    if (this._config.toggle) {\n      this.toggle();\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default$a;\n  }\n  static get DefaultType() {\n    return DefaultType$a;\n  }\n  static get NAME() {\n    return NAME$b;\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide();\n    } else {\n      this.show();\n    }\n  }\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return;\n    }\n    let activeChildren = [];\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n        toggle: false\n      }));\n    }\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return;\n    }\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n    if (startEvent.defaultPrevented) {\n      return;\n    }\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide();\n    }\n    const dimension = this._getDimension();\n    this._element.classList.remove(CLASS_NAME_COLLAPSE);\n    this._element.classList.add(CLASS_NAME_COLLAPSING);\n    this._element.style[dimension] = 0;\n    this._addAriaAndCollapsedClass(this._triggerArray, true);\n    this._isTransitioning = true;\n    const complete = () => {\n      this._isTransitioning = false;\n      this._element.classList.remove(CLASS_NAME_COLLAPSING);\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n      this._element.style[dimension] = '';\n      EventHandler.trigger(this._element, EVENT_SHOWN$6);\n    };\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n    const scrollSize = `scroll${capitalizedDimension}`;\n    this._queueCallback(complete, this._element, true);\n    this._element.style[dimension] = `${this._element[scrollSize]}px`;\n  }\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return;\n    }\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n    if (startEvent.defaultPrevented) {\n      return;\n    }\n    const dimension = this._getDimension();\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n    reflow(this._element);\n    this._element.classList.add(CLASS_NAME_COLLAPSING);\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger);\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false);\n      }\n    }\n    this._isTransitioning = true;\n    const complete = () => {\n      this._isTransitioning = false;\n      this._element.classList.remove(CLASS_NAME_COLLAPSING);\n      this._element.classList.add(CLASS_NAME_COLLAPSE);\n      EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n    };\n    this._element.style[dimension] = '';\n    this._queueCallback(complete, this._element, true);\n  }\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW$7);\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle); // Coerce string values\n    config.parent = getElement(config.parent);\n    return config;\n  }\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n  }\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return;\n    }\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element);\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected));\n      }\n    }\n  }\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n  }\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return;\n    }\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n      element.setAttribute('aria-expanded', isOpen);\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    const _config = {};\n    if (typeof config === 'string' && /show|hide/.test(config)) {\n      _config.toggle = false;\n    }\n    return this.each(function () {\n      const data = Collapse.getOrCreateInstance(this, _config);\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n        data[config]();\n      }\n    });\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n    event.preventDefault();\n  }\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, {\n      toggle: false\n    }).toggle();\n  }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\nconst Default$9 = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  display: 'dynamic',\n  offset: [0, 2],\n  popperConfig: null,\n  reference: 'toggle'\n};\nconst DefaultType$9 = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  display: 'string',\n  offset: '(array|string|function)',\n  popperConfig: '(null|object|function)',\n  reference: '(string|element|object)'\n};\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element, config);\n    this._popper = null;\n    this._parent = this._element.parentNode; // dropdown wrapper\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n    this._inNavbar = this._detectNavbar();\n  }\n\n  // Getters\n  static get Default() {\n    return Default$9;\n  }\n  static get DefaultType() {\n    return DefaultType$9;\n  }\n  static get NAME() {\n    return NAME$a;\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show();\n  }\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return;\n    }\n    const relatedTarget = {\n      relatedTarget: this._element\n    };\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n    if (showEvent.defaultPrevented) {\n      return;\n    }\n    this._createPopper();\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop);\n      }\n    }\n    this._element.focus();\n    this._element.setAttribute('aria-expanded', true);\n    this._menu.classList.add(CLASS_NAME_SHOW$6);\n    this._element.classList.add(CLASS_NAME_SHOW$6);\n    EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n  }\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return;\n    }\n    const relatedTarget = {\n      relatedTarget: this._element\n    };\n    this._completeHide(relatedTarget);\n  }\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy();\n    }\n    super.dispose();\n  }\n  update() {\n    this._inNavbar = this._detectNavbar();\n    if (this._popper) {\n      this._popper.update();\n    }\n  }\n\n  // Private\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n    if (hideEvent.defaultPrevented) {\n      return;\n    }\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop);\n      }\n    }\n    if (this._popper) {\n      this._popper.destroy();\n    }\n    this._menu.classList.remove(CLASS_NAME_SHOW$6);\n    this._element.classList.remove(CLASS_NAME_SHOW$6);\n    this._element.setAttribute('aria-expanded', 'false');\n    Manipulator.removeDataAttribute(this._menu, 'popper');\n    EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n  }\n  _getConfig(config) {\n    config = super._getConfig(config);\n    if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n    }\n    return config;\n  }\n  _createPopper() {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n    }\n    let referenceElement = this._element;\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent;\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference);\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference;\n    }\n    const popperConfig = this._getPopperConfig();\n    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n  }\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n  }\n  _getPlacement() {\n    const parentDropdown = this._parent;\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT;\n    }\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT;\n    }\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n      return PLACEMENT_TOPCENTER;\n    }\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n      return PLACEMENT_BOTTOMCENTER;\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n    }\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n  }\n  _detectNavbar() {\n    return this._element.closest(SELECTOR_NAVBAR) !== null;\n  }\n  _getOffset() {\n    const {\n      offset\n    } = this._config;\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10));\n    }\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element);\n    }\n    return offset;\n  }\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      }, {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    };\n\n    // Disable Popper if we have a static display or Dropdown is in Navbar\n    if (this._inNavbar || this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }];\n    }\n    return {\n      ...defaultBsPopperConfig,\n      ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n    };\n  }\n  _selectMenuItem({\n    key,\n    target\n  }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\n    if (!items.length) {\n      return;\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Dropdown.getOrCreateInstance(this, config);\n      if (typeof config !== 'string') {\n        return;\n      }\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`);\n      }\n      data[config]();\n    });\n  }\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n      return;\n    }\n    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n    for (const toggle of openToggles) {\n      const context = Dropdown.getInstance(toggle);\n      if (!context || context._config.autoClose === false) {\n        continue;\n      }\n      const composedPath = event.composedPath();\n      const isMenuTarget = composedPath.includes(context._menu);\n      if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n        continue;\n      }\n\n      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n      if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue;\n      }\n      const relatedTarget = {\n        relatedTarget: context._element\n      };\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event;\n      }\n      context._completeHide(relatedTarget);\n    }\n  }\n  static dataApiKeydownHandler(event) {\n    // If not an UP | DOWN | ESCAPE key => not a dropdown command\n    // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n    const isInput = /input|textarea/i.test(event.target.tagName);\n    const isEscapeEvent = event.key === ESCAPE_KEY$2;\n    const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n    if (!isUpOrDownEvent && !isEscapeEvent) {\n      return;\n    }\n    if (isInput && !isEscapeEvent) {\n      return;\n    }\n    event.preventDefault();\n\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n    const instance = Dropdown.getOrCreateInstance(getToggleButton);\n    if (isUpOrDownEvent) {\n      event.stopPropagation();\n      instance.show();\n      instance._selectMenuItem(event);\n      return;\n    }\n    if (instance._isShown()) {\n      // else is escape and we check if it is shown\n      event.stopPropagation();\n      instance.hide();\n      getToggleButton.focus();\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n  event.preventDefault();\n  Dropdown.getOrCreateInstance(this).toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n  className: 'modal-backdrop',\n  clickCallback: null,\n  isAnimated: false,\n  isVisible: true,\n  // if false, we use the backdrop helper without adding any element to the dom\n  rootElement: 'body' // give the choice to place backdrop under different elements\n};\nconst DefaultType$8 = {\n  className: 'string',\n  clickCallback: '(function|null)',\n  isAnimated: 'boolean',\n  isVisible: 'boolean',\n  rootElement: '(element|string)'\n};\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n  constructor(config) {\n    super();\n    this._config = this._getConfig(config);\n    this._isAppended = false;\n    this._element = null;\n  }\n\n  // Getters\n  static get Default() {\n    return Default$8;\n  }\n  static get DefaultType() {\n    return DefaultType$8;\n  }\n  static get NAME() {\n    return NAME$9;\n  }\n\n  // Public\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback);\n      return;\n    }\n    this._append();\n    const element = this._getElement();\n    if (this._config.isAnimated) {\n      reflow(element);\n    }\n    element.classList.add(CLASS_NAME_SHOW$5);\n    this._emulateAnimation(() => {\n      execute(callback);\n    });\n  }\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback);\n      return;\n    }\n    this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n    this._emulateAnimation(() => {\n      this.dispose();\n      execute(callback);\n    });\n  }\n  dispose() {\n    if (!this._isAppended) {\n      return;\n    }\n    EventHandler.off(this._element, EVENT_MOUSEDOWN);\n    this._element.remove();\n    this._isAppended = false;\n  }\n\n  // Private\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div');\n      backdrop.className = this._config.className;\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE$4);\n      }\n      this._element = backdrop;\n    }\n    return this._element;\n  }\n  _configAfterMerge(config) {\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement);\n    return config;\n  }\n  _append() {\n    if (this._isAppended) {\n      return;\n    }\n    const element = this._getElement();\n    this._config.rootElement.append(element);\n    EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback);\n    });\n    this._isAppended = true;\n  }\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n  }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n  autofocus: true,\n  trapElement: null // The element to trap focus inside of\n};\nconst DefaultType$7 = {\n  autofocus: 'boolean',\n  trapElement: 'element'\n};\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n  constructor(config) {\n    super();\n    this._config = this._getConfig(config);\n    this._isActive = false;\n    this._lastTabNavDirection = null;\n  }\n\n  // Getters\n  static get Default() {\n    return Default$7;\n  }\n  static get DefaultType() {\n    return DefaultType$7;\n  }\n  static get NAME() {\n    return NAME$8;\n  }\n\n  // Public\n  activate() {\n    if (this._isActive) {\n      return;\n    }\n    if (this._config.autofocus) {\n      this._config.trapElement.focus();\n    }\n    EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n    this._isActive = true;\n  }\n  deactivate() {\n    if (!this._isActive) {\n      return;\n    }\n    this._isActive = false;\n    EventHandler.off(document, EVENT_KEY$5);\n  }\n\n  // Private\n  _handleFocusin(event) {\n    const {\n      trapElement\n    } = this._config;\n    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n      return;\n    }\n    const elements = SelectorEngine.focusableChildren(trapElement);\n    if (elements.length === 0) {\n      trapElement.focus();\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus();\n    } else {\n      elements[0].focus();\n    }\n  }\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return;\n    }\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n  }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body;\n  }\n\n  // Public\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth;\n    return Math.abs(window.innerWidth - documentWidth);\n  }\n  hide() {\n    const width = this.getWidth();\n    this._disableOverFlow();\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n  }\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow');\n    this._resetElementAttributes(this._element, PROPERTY_PADDING);\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n  }\n  isOverflowing() {\n    return this.getWidth() > 0;\n  }\n\n  // Private\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow');\n    this._element.style.overflow = 'hidden';\n  }\n  _setElementAttributes(selector, styleProperty, callback) {\n    const scrollbarWidth = this.getWidth();\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return;\n      }\n      this._saveInitialAttribute(element, styleProperty);\n      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n    };\n    this._applyManipulationCallback(selector, manipulationCallBack);\n  }\n  _saveInitialAttribute(element, styleProperty) {\n    const actualValue = element.style.getPropertyValue(styleProperty);\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProperty, actualValue);\n    }\n  }\n  _resetElementAttributes(selector, styleProperty) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProperty);\n      // We only want to remove the property if the value is `null`; the value can also be zero\n      if (value === null) {\n        element.style.removeProperty(styleProperty);\n        return;\n      }\n      Manipulator.removeDataAttribute(element, styleProperty);\n      element.style.setProperty(styleProperty, value);\n    };\n    this._applyManipulationCallback(selector, manipulationCallBack);\n  }\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector);\n      return;\n    }\n    for (const sel of SelectorEngine.find(selector, this._element)) {\n      callBack(sel);\n    }\n  }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n  backdrop: true,\n  focus: true,\n  keyboard: true\n};\nconst DefaultType$6 = {\n  backdrop: '(boolean|string)',\n  focus: 'boolean',\n  keyboard: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n  constructor(element, config) {\n    super(element, config);\n    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n    this._backdrop = this._initializeBackDrop();\n    this._focustrap = this._initializeFocusTrap();\n    this._isShown = false;\n    this._isTransitioning = false;\n    this._scrollBar = new ScrollBarHelper();\n    this._addEventListeners();\n  }\n\n  // Getters\n  static get Default() {\n    return Default$6;\n  }\n  static get DefaultType() {\n    return DefaultType$6;\n  }\n  static get NAME() {\n    return NAME$7;\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget);\n  }\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return;\n    }\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n      relatedTarget\n    });\n    if (showEvent.defaultPrevented) {\n      return;\n    }\n    this._isShown = true;\n    this._isTransitioning = true;\n    this._scrollBar.hide();\n    document.body.classList.add(CLASS_NAME_OPEN);\n    this._adjustDialog();\n    this._backdrop.show(() => this._showElement(relatedTarget));\n  }\n  hide() {\n    if (!this._isShown || this._isTransitioning) {\n      return;\n    }\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n    if (hideEvent.defaultPrevented) {\n      return;\n    }\n    this._isShown = false;\n    this._isTransitioning = true;\n    this._focustrap.deactivate();\n    this._element.classList.remove(CLASS_NAME_SHOW$4);\n    this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n  }\n  dispose() {\n    EventHandler.off(window, EVENT_KEY$4);\n    EventHandler.off(this._dialog, EVENT_KEY$4);\n    this._backdrop.dispose();\n    this._focustrap.deactivate();\n    super.dispose();\n  }\n  handleUpdate() {\n    this._adjustDialog();\n  }\n\n  // Private\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: Boolean(this._config.backdrop),\n      // 'static' option will be translated to true, and booleans will keep their value,\n      isAnimated: this._isAnimated()\n    });\n  }\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    });\n  }\n  _showElement(relatedTarget) {\n    // try to append dynamic modal\n    if (!document.body.contains(this._element)) {\n      document.body.append(this._element);\n    }\n    this._element.style.display = 'block';\n    this._element.removeAttribute('aria-hidden');\n    this._element.setAttribute('aria-modal', true);\n    this._element.setAttribute('role', 'dialog');\n    this._element.scrollTop = 0;\n    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n    if (modalBody) {\n      modalBody.scrollTop = 0;\n    }\n    reflow(this._element);\n    this._element.classList.add(CLASS_NAME_SHOW$4);\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._focustrap.activate();\n      }\n      this._isTransitioning = false;\n      EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n        relatedTarget\n      });\n    };\n    this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n  }\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n      if (event.key !== ESCAPE_KEY$1) {\n        return;\n      }\n      if (this._config.keyboard) {\n        this.hide();\n        return;\n      }\n      this._triggerBackdropTransition();\n    });\n    EventHandler.on(window, EVENT_RESIZE$1, () => {\n      if (this._isShown && !this._isTransitioning) {\n        this._adjustDialog();\n      }\n    });\n    EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n      // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n      EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n        if (this._element !== event.target || this._element !== event2.target) {\n          return;\n        }\n        if (this._config.backdrop === 'static') {\n          this._triggerBackdropTransition();\n          return;\n        }\n        if (this._config.backdrop) {\n          this.hide();\n        }\n      });\n    });\n  }\n  _hideModal() {\n    this._element.style.display = 'none';\n    this._element.setAttribute('aria-hidden', true);\n    this._element.removeAttribute('aria-modal');\n    this._element.removeAttribute('role');\n    this._isTransitioning = false;\n    this._backdrop.hide(() => {\n      document.body.classList.remove(CLASS_NAME_OPEN);\n      this._resetAdjustments();\n      this._scrollBar.reset();\n      EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n    });\n  }\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_FADE$3);\n  }\n  _triggerBackdropTransition() {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n    if (hideEvent.defaultPrevented) {\n      return;\n    }\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n    const initialOverflowY = this._element.style.overflowY;\n    // return if the following background transition hasn't yet completed\n    if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n      return;\n    }\n    if (!isModalOverflowing) {\n      this._element.style.overflowY = 'hidden';\n    }\n    this._element.classList.add(CLASS_NAME_STATIC);\n    this._queueCallback(() => {\n      this._element.classList.remove(CLASS_NAME_STATIC);\n      this._queueCallback(() => {\n        this._element.style.overflowY = initialOverflowY;\n      }, this._dialog);\n    }, this._dialog);\n    this._element.focus();\n  }\n\n  /**\n   * The following methods are used to handle overflowing modals\n   */\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n    const scrollbarWidth = this._scrollBar.getWidth();\n    const isBodyOverflowing = scrollbarWidth > 0;\n    if (isBodyOverflowing && !isModalOverflowing) {\n      const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n      this._element.style[property] = `${scrollbarWidth}px`;\n    }\n    if (!isBodyOverflowing && isModalOverflowing) {\n      const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n      this._element.style[property] = `${scrollbarWidth}px`;\n    }\n  }\n  _resetAdjustments() {\n    this._element.style.paddingLeft = '';\n    this._element.style.paddingRight = '';\n  }\n\n  // Static\n  static jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      const data = Modal.getOrCreateInstance(this, config);\n      if (typeof config !== 'string') {\n        return;\n      }\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`);\n      }\n      data[config](relatedTarget);\n    });\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this);\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault();\n  }\n  EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n    if (showEvent.defaultPrevented) {\n      // only register focus restorer if modal will actually get shown\n      return;\n    }\n    EventHandler.one(target, EVENT_HIDDEN$4, () => {\n      if (isVisible(this)) {\n        this.focus();\n      }\n    });\n  });\n\n  // avoid conflict when clicking modal toggler while another one is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n  if (alreadyOpen) {\n    Modal.getInstance(alreadyOpen).hide();\n  }\n  const data = Modal.getOrCreateInstance(target);\n  data.toggle(this);\n});\nenableDismissTrigger(Modal);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n};\nconst DefaultType$5 = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element, config);\n    this._isShown = false;\n    this._backdrop = this._initializeBackDrop();\n    this._focustrap = this._initializeFocusTrap();\n    this._addEventListeners();\n  }\n\n  // Getters\n  static get Default() {\n    return Default$5;\n  }\n  static get DefaultType() {\n    return DefaultType$5;\n  }\n  static get NAME() {\n    return NAME$6;\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget);\n  }\n  show(relatedTarget) {\n    if (this._isShown) {\n      return;\n    }\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n      relatedTarget\n    });\n    if (showEvent.defaultPrevented) {\n      return;\n    }\n    this._isShown = true;\n    this._backdrop.show();\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide();\n    }\n    this._element.setAttribute('aria-modal', true);\n    this._element.setAttribute('role', 'dialog');\n    this._element.classList.add(CLASS_NAME_SHOWING$1);\n    const completeCallBack = () => {\n      if (!this._config.scroll || this._config.backdrop) {\n        this._focustrap.activate();\n      }\n      this._element.classList.add(CLASS_NAME_SHOW$3);\n      this._element.classList.remove(CLASS_NAME_SHOWING$1);\n      EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n        relatedTarget\n      });\n    };\n    this._queueCallback(completeCallBack, this._element, true);\n  }\n  hide() {\n    if (!this._isShown) {\n      return;\n    }\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n    if (hideEvent.defaultPrevented) {\n      return;\n    }\n    this._focustrap.deactivate();\n    this._element.blur();\n    this._isShown = false;\n    this._element.classList.add(CLASS_NAME_HIDING);\n    this._backdrop.hide();\n    const completeCallback = () => {\n      this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n      this._element.removeAttribute('aria-modal');\n      this._element.removeAttribute('role');\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset();\n      }\n      EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n    };\n    this._queueCallback(completeCallback, this._element, true);\n  }\n  dispose() {\n    this._backdrop.dispose();\n    this._focustrap.deactivate();\n    super.dispose();\n  }\n\n  // Private\n  _initializeBackDrop() {\n    const clickCallback = () => {\n      if (this._config.backdrop === 'static') {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n        return;\n      }\n      this.hide();\n    };\n\n    // 'static' option will be translated to true, and booleans will keep their value\n    const isVisible = Boolean(this._config.backdrop);\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: isVisible ? clickCallback : null\n    });\n  }\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    });\n  }\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return;\n      }\n      if (this._config.keyboard) {\n        this.hide();\n        return;\n      }\n      EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n    });\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Offcanvas.getOrCreateInstance(this, config);\n      if (typeof config !== 'string') {\n        return;\n      }\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`);\n      }\n      data[config](this);\n    });\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this);\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault();\n  }\n  if (isDisabled(this)) {\n    return;\n  }\n  EventHandler.one(target, EVENT_HIDDEN$3, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus();\n    }\n  });\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n  if (alreadyOpen && alreadyOpen !== target) {\n    Offcanvas.getInstance(alreadyOpen).hide();\n  }\n  const data = Offcanvas.getOrCreateInstance(target);\n  data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n    Offcanvas.getOrCreateInstance(selector).show();\n  }\n});\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Offcanvas.getOrCreateInstance(element).hide();\n    }\n  }\n});\nenableDismissTrigger(Offcanvas);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\nconst DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n};\n// js-docs-end allow-list\n\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase();\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));\n    }\n    return true;\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml;\n  }\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml);\n  }\n  const domParser = new window.DOMParser();\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase();\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove();\n      continue;\n    }\n    const attributeList = [].concat(...element.attributes);\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName);\n      }\n    }\n  }\n  return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n  allowList: DefaultAllowlist,\n  content: {},\n  // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n};\nconst DefaultType$4 = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n};\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n};\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super();\n    this._config = this._getConfig(config);\n  }\n\n  // Getters\n  static get Default() {\n    return Default$4;\n  }\n  static get DefaultType() {\n    return DefaultType$4;\n  }\n  static get NAME() {\n    return NAME$5;\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n  }\n  hasContent() {\n    return this.getContent().length > 0;\n  }\n  changeContent(content) {\n    this._checkContent(content);\n    this._config.content = {\n      ...this._config.content,\n      ...content\n    };\n    return this;\n  }\n  toHtml() {\n    const templateWrapper = document.createElement('div');\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector);\n    }\n    const template = templateWrapper.children[0];\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '));\n    }\n    return template;\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config);\n    this._checkContent(config.content);\n  }\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({\n        selector,\n        entry: content\n      }, DefaultContentType);\n    }\n  }\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template);\n    if (!templateElement) {\n      return;\n    }\n    content = this._resolvePossibleFunction(content);\n    if (!content) {\n      templateElement.remove();\n      return;\n    }\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement);\n      return;\n    }\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content);\n      return;\n    }\n    templateElement.textContent = content;\n  }\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n  }\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this]);\n  }\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = '';\n      templateElement.append(element);\n      return;\n    }\n    templateElement.textContent = element.textContent;\n  }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  popperConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"tooltip-arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n  title: '',\n  trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  popperConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n};\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n    }\n    super(element, config);\n\n    // Private\n    this._isEnabled = true;\n    this._timeout = 0;\n    this._isHovered = null;\n    this._activeTrigger = {};\n    this._popper = null;\n    this._templateFactory = null;\n    this._newContent = null;\n\n    // Protected\n    this.tip = null;\n    this._setListeners();\n    if (!this._config.selector) {\n      this._fixTitle();\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default$3;\n  }\n  static get DefaultType() {\n    return DefaultType$3;\n  }\n  static get NAME() {\n    return NAME$4;\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true;\n  }\n  disable() {\n    this._isEnabled = false;\n  }\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled;\n  }\n  toggle() {\n    if (!this._isEnabled) {\n      return;\n    }\n    this._activeTrigger.click = !this._activeTrigger.click;\n    if (this._isShown()) {\n      this._leave();\n      return;\n    }\n    this._enter();\n  }\n  dispose() {\n    clearTimeout(this._timeout);\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n    }\n    this._disposePopper();\n    super.dispose();\n  }\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements');\n    }\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return;\n    }\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n    const shadowRoot = findShadowRoot(this._element);\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return;\n    }\n\n    // TODO: v6 remove this or make it optional\n    this._disposePopper();\n    const tip = this._getTipElement();\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n    const {\n      container\n    } = this._config;\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip);\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n    }\n    this._popper = this._createPopper(tip);\n    tip.classList.add(CLASS_NAME_SHOW$2);\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop);\n      }\n    }\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n      if (this._isHovered === false) {\n        this._leave();\n      }\n      this._isHovered = false;\n    };\n    this._queueCallback(complete, this.tip, this._isAnimated());\n  }\n  hide() {\n    if (!this._isShown()) {\n      return;\n    }\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n    if (hideEvent.defaultPrevented) {\n      return;\n    }\n    const tip = this._getTipElement();\n    tip.classList.remove(CLASS_NAME_SHOW$2);\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop);\n      }\n    }\n    this._activeTrigger[TRIGGER_CLICK] = false;\n    this._activeTrigger[TRIGGER_FOCUS] = false;\n    this._activeTrigger[TRIGGER_HOVER] = false;\n    this._isHovered = null; // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return;\n      }\n      if (!this._isHovered) {\n        this._disposePopper();\n      }\n      this._element.removeAttribute('aria-describedby');\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n    };\n    this._queueCallback(complete, this.tip, this._isAnimated());\n  }\n  update() {\n    if (this._popper) {\n      this._popper.update();\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle());\n  }\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n    }\n    return this.tip;\n  }\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml();\n\n    // TODO: remove this check in v6\n    if (!tip) {\n      return null;\n    }\n    tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);\n    // TODO: v6 the following can be achieved with CSS only\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n    const tipId = getUID(this.constructor.NAME).toString();\n    tip.setAttribute('id', tipId);\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE$2);\n    }\n    return tip;\n  }\n  setContent(content) {\n    this._newContent = content;\n    if (this._isShown()) {\n      this._disposePopper();\n      this.show();\n    }\n  }\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content);\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      });\n    }\n    return this._templateFactory;\n  }\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    };\n  }\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n  }\n  _isAnimated() {\n    return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n  }\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n  }\n  _createPopper(tip) {\n    const placement = execute(this._config.placement, [this, tip, this._element]);\n    const attachment = AttachmentMap[placement.toUpperCase()];\n    return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n  }\n  _getOffset() {\n    const {\n      offset\n    } = this._config;\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10));\n    }\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element);\n    }\n    return offset;\n  }\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element]);\n  }\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [{\n        name: 'flip',\n        options: {\n          fallbackPlacements: this._config.fallbackPlacements\n        }\n      }, {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }, {\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      }, {\n        name: 'arrow',\n        options: {\n          element: `.${this.constructor.NAME}-arrow`\n        }\n      }, {\n        name: 'preSetPlacement',\n        enabled: true,\n        phase: 'beforeMain',\n        fn: data => {\n          // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n          // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n          this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n        }\n      }]\n    };\n    return {\n      ...defaultBsPopperConfig,\n      ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n    };\n  }\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ');\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event);\n          context.toggle();\n        });\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n        const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event);\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n          context._enter();\n        });\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event);\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n          context._leave();\n        });\n      }\n    }\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide();\n      }\n    };\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n  }\n  _fixTitle() {\n    const title = this._element.getAttribute('title');\n    if (!title) {\n      return;\n    }\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title);\n    }\n    this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title');\n  }\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true;\n      return;\n    }\n    this._isHovered = true;\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show();\n      }\n    }, this._config.delay.show);\n  }\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return;\n    }\n    this._isHovered = false;\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide();\n      }\n    }, this._config.delay.hide);\n  }\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout);\n    this._timeout = setTimeout(handler, timeout);\n  }\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true);\n  }\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element);\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute];\n      }\n    }\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    };\n    config = this._mergeConfigObj(config);\n    config = this._configAfterMerge(config);\n    this._typeCheckConfig(config);\n    return config;\n  }\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container);\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      };\n    }\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString();\n    }\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString();\n    }\n    return config;\n  }\n  _getDelegateConfig() {\n    const config = {};\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value;\n      }\n    }\n    config.selector = false;\n    config.trigger = 'manual';\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config;\n  }\n  _disposePopper() {\n    if (this._popper) {\n      this._popper.destroy();\n      this._popper = null;\n    }\n    if (this.tip) {\n      this.tip.remove();\n      this.tip = null;\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config);\n      if (typeof config !== 'string') {\n        return;\n      }\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`);\n      }\n      data[config]();\n    });\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"popover-arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div>' + '</div>',\n  trigger: 'click'\n};\nconst DefaultType$2 = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n};\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default$2;\n  }\n  static get DefaultType() {\n    return DefaultType$2;\n  }\n  static get NAME() {\n    return NAME$3;\n  }\n\n  // Overrides\n  _isWithContent() {\n    return this._getTitle() || this._getContent();\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    };\n  }\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content);\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Popover.getOrCreateInstance(this, config);\n      if (typeof config !== 'string') {\n        return;\n      }\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`);\n      }\n      data[config]();\n    });\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst Default$1 = {\n  offset: null,\n  // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n  offset: '(number|null)',\n  // TODO v6 @deprecated, keep it for backwards compatibility reasons\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n};\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config);\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map();\n    this._observableSections = new Map();\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n    this._activeTarget = null;\n    this._observer = null;\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    };\n    this.refresh(); // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default$1;\n  }\n  static get DefaultType() {\n    return DefaultType$1;\n  }\n  static get NAME() {\n    return NAME$2;\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables();\n    this._maybeEnableSmoothScroll();\n    if (this._observer) {\n      this._observer.disconnect();\n    } else {\n      this._observer = this._getNewObserver();\n    }\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section);\n    }\n  }\n  dispose() {\n    this._observer.disconnect();\n    super.dispose();\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n    config.target = getElement(config.target) || document.body;\n\n    // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n    config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n    }\n    return config;\n  }\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return;\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK);\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash);\n      if (observableSection) {\n        event.preventDefault();\n        const root = this._rootElement || window;\n        const height = observableSection.offsetTop - this._element.offsetTop;\n        if (root.scrollTo) {\n          root.scrollTo({\n            top: height,\n            behavior: 'smooth'\n          });\n          return;\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height;\n      }\n    });\n  }\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    };\n    return new IntersectionObserver(entries => this._observerCallback(entries), options);\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n      this._process(targetElement(entry));\n    };\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n    this._previousScrollData.parentScrollTop = parentScrollTop;\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null;\n        this._clearActiveClass(targetElement(entry));\n        continue;\n      }\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry);\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return;\n        }\n        continue;\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry);\n      }\n    }\n  }\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map();\n    this._observableSections = new Map();\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue;\n      }\n      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(decodeURI(anchor.hash), anchor);\n        this._observableSections.set(anchor.hash, observableSection);\n      }\n    }\n  }\n  _process(target) {\n    if (this._activeTarget === target) {\n      return;\n    }\n    this._clearActiveClass(this._config.target);\n    this._activeTarget = target;\n    target.classList.add(CLASS_NAME_ACTIVE$1);\n    this._activateParents(target);\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n      relatedTarget: target\n    });\n  }\n  _activateParents(target) {\n    // Activate dropdown parents\n    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n      return;\n    }\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE$1);\n      }\n    }\n  }\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE$1);\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE$1);\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = ScrollSpy.getOrCreateInstance(this, config);\n      if (typeof config !== 'string') {\n        return;\n      }\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`);\n      }\n      data[config]();\n    });\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy);\n  }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$1 = 'tab';\nconst DATA_KEY$1 = 'bs.tab';\nconst EVENT_KEY$1 = `.${DATA_KEY$1}`;\nconst EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;\nconst EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;\nconst EVENT_SHOW$1 = `show${EVENT_KEY$1}`;\nconst EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;\nconst ARROW_LEFT_KEY = 'ArrowLeft';\nconst ARROW_RIGHT_KEY = 'ArrowRight';\nconst ARROW_UP_KEY = 'ArrowUp';\nconst ARROW_DOWN_KEY = 'ArrowDown';\nconst HOME_KEY = 'Home';\nconst END_KEY = 'End';\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_FADE$1 = 'fade';\nconst CLASS_NAME_SHOW$1 = 'show';\nconst CLASS_DROPDOWN = 'dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu';\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]';\nconst SELECTOR_OUTER = '.nav-item, .list-group-item';\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'; // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`;\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element);\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL);\n    if (!this._parent) {\n      return;\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren());\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME$1;\n  }\n\n  // Public\n  show() {\n    // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element;\n    if (this._elemIsActive(innerElem)) {\n      return;\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem();\n    const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {\n      relatedTarget: innerElem\n    }) : null;\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {\n      relatedTarget: active\n    });\n    if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {\n      return;\n    }\n    this._deactivate(active, innerElem);\n    this._activate(innerElem, active);\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return;\n    }\n    element.classList.add(CLASS_NAME_ACTIVE);\n    this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW$1);\n        return;\n      }\n      element.removeAttribute('tabindex');\n      element.setAttribute('aria-selected', true);\n      this._toggleDropDown(element, true);\n      EventHandler.trigger(element, EVENT_SHOWN$1, {\n        relatedTarget: relatedElem\n      });\n    };\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n  }\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return;\n    }\n    element.classList.remove(CLASS_NAME_ACTIVE);\n    element.blur();\n    this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW$1);\n        return;\n      }\n      element.setAttribute('aria-selected', false);\n      element.setAttribute('tabindex', '-1');\n      this._toggleDropDown(element, false);\n      EventHandler.trigger(element, EVENT_HIDDEN$1, {\n        relatedTarget: relatedElem\n      });\n    };\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n  }\n  _keydown(event) {\n    if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) {\n      return;\n    }\n    event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault();\n    const children = this._getChildren().filter(element => !isDisabled(element));\n    let nextActiveElement;\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true);\n    }\n    if (nextActiveElement) {\n      nextActiveElement.focus({\n        preventScroll: true\n      });\n      Tab.getOrCreateInstance(nextActiveElement).show();\n    }\n  }\n  _getChildren() {\n    // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);\n  }\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null;\n  }\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist');\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child);\n    }\n  }\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child);\n    const isActive = this._elemIsActive(child);\n    const outerElem = this._getOuterElement(child);\n    child.setAttribute('aria-selected', isActive);\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation');\n    }\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1');\n    }\n    this._setAttributeIfNotExists(child, 'role', 'tab');\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child);\n  }\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child);\n    if (!target) {\n      return;\n    }\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel');\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);\n    }\n  }\n  _toggleDropDown(element, open) {\n    const outerElem = this._getOuterElement(element);\n    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n      return;\n    }\n    const toggle = (selector, className) => {\n      const element = SelectorEngine.findOne(selector, outerElem);\n      if (element) {\n        element.classList.toggle(className, open);\n      }\n    };\n    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);\n    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);\n    outerElem.setAttribute('aria-expanded', open);\n  }\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value);\n    }\n  }\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE);\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem;\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tab.getOrCreateInstance(this);\n      if (typeof config !== 'string') {\n        return;\n      }\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`);\n      }\n      data[config]();\n    });\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault();\n  }\n  if (isDisabled(this)) {\n    return;\n  }\n  Tab.getOrCreateInstance(this).show();\n});\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element);\n  }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME = 'toast';\nconst DATA_KEY = 'bs.toast';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_SHOWING = 'showing';\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n};\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n};\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config);\n    this._timeout = null;\n    this._hasMouseInteraction = false;\n    this._hasKeyboardInteraction = false;\n    this._setListeners();\n  }\n\n  // Getters\n  static get Default() {\n    return Default;\n  }\n  static get DefaultType() {\n    return DefaultType;\n  }\n  static get NAME() {\n    return NAME;\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n    if (showEvent.defaultPrevented) {\n      return;\n    }\n    this._clearTimeout();\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE);\n    }\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING);\n      EventHandler.trigger(this._element, EVENT_SHOWN);\n      this._maybeScheduleHide();\n    };\n    this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated\n    reflow(this._element);\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);\n    this._queueCallback(complete, this._element, this._config.animation);\n  }\n  hide() {\n    if (!this.isShown()) {\n      return;\n    }\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n    if (hideEvent.defaultPrevented) {\n      return;\n    }\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE); // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);\n      EventHandler.trigger(this._element, EVENT_HIDDEN);\n    };\n    this._element.classList.add(CLASS_NAME_SHOWING);\n    this._queueCallback(complete, this._element, this._config.animation);\n  }\n  dispose() {\n    this._clearTimeout();\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW);\n    }\n    super.dispose();\n  }\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW);\n  }\n\n  // Private\n\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return;\n    }\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return;\n    }\n    this._timeout = setTimeout(() => {\n      this.hide();\n    }, this._config.delay);\n  }\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout':\n        {\n          this._hasMouseInteraction = isInteracting;\n          break;\n        }\n      case 'focusin':\n      case 'focusout':\n        {\n          this._hasKeyboardInteraction = isInteracting;\n          break;\n        }\n    }\n    if (isInteracting) {\n      this._clearTimeout();\n      return;\n    }\n    const nextElement = event.relatedTarget;\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return;\n    }\n    this._maybeScheduleHide();\n  }\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));\n  }\n  _clearTimeout() {\n    clearTimeout(this._timeout);\n    this._timeout = null;\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Toast.getOrCreateInstance(this, config);\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n        data[config](this);\n      }\n    });\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast);\n\nexport { Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip };\n//# sourceMappingURL=bootstrap.esm.js.map\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 R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\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.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\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 setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _handlebarsBase = require('./handlebars/base');\n\nvar base = _interopRequireWildcard(_handlebarsBase);\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = require('./handlebars/exception');\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n  var hb = new base.HandlebarsEnvironment();\n\n  Utils.extend(hb, base);\n  hb.SafeString = _handlebarsSafeString2['default'];\n  hb.Exception = _handlebarsException2['default'];\n  hb.Utils = Utils;\n  hb.escapeExpression = Utils.escapeExpression;\n\n  hb.VM = runtime;\n  hb.template = function (spec) {\n    return runtime.template(spec, hb);\n  };\n\n  return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7SUFBN0IsSUFBSTs7Ozs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7O0FBR2pELFNBQVMsTUFBTSxHQUFHO0FBQ2hCLE1BQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLE9BQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUUsQ0FBQyxVQUFVLG9DQUFhLENBQUM7QUFDM0IsSUFBRSxDQUFDLFNBQVMsbUNBQVksQ0FBQztBQUN6QixJQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqQixJQUFFLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxJQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoQixJQUFFLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFdBQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDbkMsQ0FBQzs7QUFFRixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELElBQUksSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztBQUVyQixrQ0FBVyxJQUFJLENBQUMsQ0FBQzs7QUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzs7cUJBRVIsSUFBSSIsImZpbGUiOiJoYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vaGFuZGxlYmFycy9iYXNlJztcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcbmltcG9ydCBTYWZlU3RyaW5nIGZyb20gJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vaGFuZGxlYmFycy9leGNlcHRpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSAnLi9oYW5kbGViYXJzL3J1bnRpbWUnO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgbGV0IGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7XG4gIGhiLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjtcbiAgaGIuVXRpbHMgPSBVdGlscztcbiAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247XG5cbiAgaGIuVk0gPSBydW50aW1lO1xuICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHNwZWMpIHtcbiAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7XG4gIH07XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nvar VERSION = '4.7.8';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n  1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n  2: '== 1.0.0-rc.3',\n  3: '== 1.0.0-rc.4',\n  4: '== 1.x.x',\n  5: '== 2.0.0-alpha.x',\n  6: '>= 2.0.0-beta.1',\n  7: '>= 4.0.0 <4.3.0',\n  8: '>= 4.3.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n  this.helpers = helpers || {};\n  this.partials = partials || {};\n  this.decorators = decorators || {};\n\n  _helpers.registerDefaultHelpers(this);\n  _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n  constructor: HandlebarsEnvironment,\n\n  logger: _logger2['default'],\n  log: _logger2['default'].log,\n\n  registerHelper: function registerHelper(name, fn) {\n    if (_utils.toString.call(name) === objectType) {\n      if (fn) {\n        throw new _exception2['default']('Arg not supported with multiple helpers');\n      }\n      _utils.extend(this.helpers, name);\n    } else {\n      this.helpers[name] = fn;\n    }\n  },\n  unregisterHelper: function unregisterHelper(name) {\n    delete this.helpers[name];\n  },\n\n  registerPartial: function registerPartial(name, partial) {\n    if (_utils.toString.call(name) === objectType) {\n      _utils.extend(this.partials, name);\n    } else {\n      if (typeof partial === 'undefined') {\n        throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n      }\n      this.partials[name] = partial;\n    }\n  },\n  unregisterPartial: function unregisterPartial(name) {\n    delete this.partials[name];\n  },\n\n  registerDecorator: function registerDecorator(name, fn) {\n    if (_utils.toString.call(name) === objectType) {\n      if (fn) {\n        throw new _exception2['default']('Arg not supported with multiple decorators');\n      }\n      _utils.extend(this.decorators, name);\n    } else {\n      this.decorators[name] = fn;\n    }\n  },\n  unregisterDecorator: function unregisterDecorator(name) {\n    delete this.decorators[name];\n  },\n  /**\n   * Reset the memory of illegal property accesses that have already been logged.\n   * @deprecated should only be used in handlebars test-cases\n   */\n  resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n    _internalProtoAccess.resetLoggedProperties();\n  }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQThDLFNBQVM7O3lCQUNqQyxhQUFhOzs7O3VCQUNJLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNyQyxVQUFVOzs7O21DQUNTLHlCQUF5Qjs7QUFFeEQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUN4QixJQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs7QUFDNUIsSUFBTSxpQ0FBaUMsR0FBRyxDQUFDLENBQUM7OztBQUU1QyxJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxpQkFBaUI7QUFDcEIsR0FBQyxFQUFFLFVBQVU7Q0FDZCxDQUFDOzs7QUFFRixJQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQzs7QUFFOUIsU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUNuRSxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9CLE1BQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQzs7QUFFbkMsa0NBQXVCLElBQUksQ0FBQyxDQUFDO0FBQzdCLHdDQUEwQixJQUFJLENBQUMsQ0FBQztDQUNqQzs7QUFFRCxxQkFBcUIsQ0FBQyxTQUFTLEdBQUc7QUFDaEMsYUFBVyxFQUFFLHFCQUFxQjs7QUFFbEMsUUFBTSxxQkFBUTtBQUNkLEtBQUcsRUFBRSxvQkFBTyxHQUFHOztBQUVmLGdCQUFjLEVBQUUsd0JBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNqQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFDTixjQUFNLDJCQUFjLHlDQUF5QyxDQUFDLENBQUM7T0FDaEU7QUFDRCxvQkFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCLE1BQU07QUFDTCxVQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN6QjtHQUNGO0FBQ0Qsa0JBQWdCLEVBQUUsMEJBQVMsSUFBSSxFQUFFO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUMzQjs7QUFFRCxpQkFBZSxFQUFFLHlCQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDdkMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLG9CQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0IsTUFBTTtBQUNMLFVBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ2xDLGNBQU0seUVBQ3dDLElBQUksb0JBQ2pELENBQUM7T0FDSDtBQUNELFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQy9CO0dBQ0Y7QUFDRCxtQkFBaUIsRUFBRSwyQkFBUyxJQUFJLEVBQUU7QUFDaEMsV0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0dBQzVCOztBQUVELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQ04sY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQ25FO0FBQ0Qsb0JBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQixNQUFNO0FBQ0wsVUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDNUI7R0FDRjtBQUNELHFCQUFtQixFQUFFLDZCQUFTLElBQUksRUFBRTtBQUNsQyxXQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDOUI7Ozs7O0FBS0QsNkJBQTJCLEVBQUEsdUNBQUc7QUFDNUIsZ0RBQXVCLENBQUM7R0FDekI7Q0FDRixDQUFDOztBQUVLLElBQUksR0FBRyxHQUFHLG9CQUFPLEdBQUcsQ0FBQzs7O1FBRW5CLFdBQVc7UUFBRSxNQUFNIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGcmFtZSwgZXh0ZW5kLCB0b1N0cmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyByZWdpc3RlckRlZmF1bHRIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyByZXNldExvZ2dlZFByb3BlcnRpZXMgfSBmcm9tICcuL2ludGVybmFsL3Byb3RvLWFjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuNy44JztcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnQgY29uc3QgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAgPDQuMy4wJyxcbiAgODogJz49IDQuMy4wJ1xufTtcblxuY29uc3Qgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICByZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogbG9nZ2VyLFxuICBsb2c6IGxvZ2dlci5sb2csXG5cbiAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTtcbiAgICAgIH1cbiAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSwgcGFydGlhbCkge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgICBgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkIFwiJHtuYW1lfVwiIGFzIHVuZGVmaW5lZGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpO1xuICAgICAgfVxuICAgICAgZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07XG4gIH0sXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgbWVtb3J5IG9mIGlsbGVnYWwgcHJvcGVydHkgYWNjZXNzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2dnZWQuXG4gICAqIEBkZXByZWNhdGVkIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gaGFuZGxlYmFycyB0ZXN0LWNhc2VzXG4gICAqL1xuICByZXNldExvZ2dlZFByb3BlcnR5QWNjZXNzZXMoKSB7XG4gICAgcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBsZXQgbG9nID0gbG9nZ2VyLmxvZztcblxuZXhwb3J0IHsgY3JlYXRlRnJhbWUsIGxvZ2dlciB9O1xuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _decoratorsInline = require('./decorators/inline');\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n  _decoratorsInline2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n  instance.registerDecorator('inline', function (fn, props, container, options) {\n    var ret = fn;\n    if (!props.partials) {\n      props.partials = {};\n      ret = function (context, options) {\n        // Create a new partials stack frame prior to exec.\n        var original = container.partials;\n        container.partials = _utils.extend({}, original, props.partials);\n        var ret = fn(context, options);\n        container.partials = original;\n        return ret;\n      };\n    }\n\n    props.partials[options.args[0]] = options.fn;\n\n    return ret;\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXVCLFVBQVU7O3FCQUVsQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsY0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlubGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25zKSB7XG4gICAgbGV0IHJldCA9IGZuO1xuICAgIGlmICghcHJvcHMucGFydGlhbHMpIHtcbiAgICAgIHByb3BzLnBhcnRpYWxzID0ge307XG4gICAgICByZXQgPSBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLlxuICAgICAgICBsZXQgb3JpZ2luYWwgPSBjb250YWluZXIucGFydGlhbHM7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTtcbiAgICAgICAgbGV0IHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nvar errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n  var loc = node && node.loc,\n      line = undefined,\n      endLineNumber = undefined,\n      column = undefined,\n      endColumn = undefined;\n\n  if (loc) {\n    line = loc.start.line;\n    endLineNumber = loc.end.line;\n    column = loc.start.column;\n    endColumn = loc.end.column;\n\n    message += ' - ' + line + ':' + column;\n  }\n\n  var tmp = Error.prototype.constructor.call(this, message);\n\n  // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n  for (var idx = 0; idx < errorProps.length; idx++) {\n    this[errorProps[idx]] = tmp[errorProps[idx]];\n  }\n\n  /* istanbul ignore else */\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(this, Exception);\n  }\n\n  try {\n    if (loc) {\n      this.lineNumber = line;\n      this.endLineNumber = endLineNumber;\n\n      // Work around issue under safari where we can't directly set the column value\n      /* istanbul ignore next */\n      if (Object.defineProperty) {\n        Object.defineProperty(this, 'column', {\n          value: column,\n          enumerable: true\n        });\n        Object.defineProperty(this, 'endColumn', {\n          value: endColumn,\n          enumerable: true\n        });\n      } else {\n        this.column = column;\n        this.endColumn = endColumn;\n      }\n    }\n  } catch (nop) {\n    /* Ignore if the browser is very particular */\n  }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFNLFVBQVUsR0FBRyxDQUNqQixhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxDQUNSLENBQUM7O0FBRUYsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDeEIsSUFBSSxZQUFBO01BQ0osYUFBYSxZQUFBO01BQ2IsTUFBTSxZQUFBO01BQ04sU0FBUyxZQUFBLENBQUM7O0FBRVosTUFBSSxHQUFHLEVBQUU7QUFDUCxRQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDdEIsaUJBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztBQUM3QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDMUIsYUFBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDOztBQUUzQixXQUFPLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0dBQ3hDOztBQUVELE1BQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7OztBQUcxRCxPQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNoRCxRQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQzlDOzs7QUFHRCxNQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtBQUMzQixTQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQzFDOztBQUVELE1BQUk7QUFDRixRQUFJLEdBQUcsRUFBRTtBQUNQLFVBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLFVBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDOzs7O0FBSW5DLFVBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtBQUN6QixjQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDcEMsZUFBSyxFQUFFLE1BQU07QUFDYixvQkFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0FBQ0gsY0FBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3ZDLGVBQUssRUFBRSxTQUFTO0FBQ2hCLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsWUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7T0FDNUI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yUHJvcHMgPSBbXG4gICdkZXNjcmlwdGlvbicsXG4gICdmaWxlTmFtZScsXG4gICdsaW5lTnVtYmVyJyxcbiAgJ2VuZExpbmVOdW1iZXInLFxuICAnbWVzc2FnZScsXG4gICduYW1lJyxcbiAgJ251bWJlcicsXG4gICdzdGFjaydcbl07XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgIGxpbmUsXG4gICAgZW5kTGluZU51bWJlcixcbiAgICBjb2x1bW4sXG4gICAgZW5kQ29sdW1uO1xuXG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgZW5kTGluZU51bWJlciA9IGxvYy5lbmQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuICAgIGVuZENvbHVtbiA9IGxvYy5lbmQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcbiAgICAgIHRoaXMuZW5kTGluZU51bWJlciA9IGVuZExpbmVOdW1iZXI7XG5cbiAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbixcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuZENvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogZW5kQ29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy5lbmRDb2x1bW4gPSBlbmRDb2x1bW47XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChub3ApIHtcbiAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovXG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\nexports.moveHelperToHooks = moveHelperToHooks;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n  _helpersBlockHelperMissing2['default'](instance);\n  _helpersEach2['default'](instance);\n  _helpersHelperMissing2['default'](instance);\n  _helpersIf2['default'](instance);\n  _helpersLog2['default'](instance);\n  _helpersLookup2['default'](instance);\n  _helpersWith2['default'](instance);\n}\n\nfunction moveHelperToHooks(instance, helperName, keepHelper) {\n  if (instance.helpers[helperName]) {\n    instance.hooks[helperName] = instance.helpers[helperName];\n    if (!keepHelper) {\n      delete instance.helpers[helperName];\n    }\n  }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O3lDQUF1QyxnQ0FBZ0M7Ozs7MkJBQzlDLGdCQUFnQjs7OztvQ0FDUCwwQkFBMEI7Ozs7eUJBQ3JDLGNBQWM7Ozs7MEJBQ2IsZUFBZTs7Ozs2QkFDWixrQkFBa0I7Ozs7MkJBQ3BCLGdCQUFnQjs7OztBQUVsQyxTQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtBQUMvQyx5Q0FBMkIsUUFBUSxDQUFDLENBQUM7QUFDckMsMkJBQWEsUUFBUSxDQUFDLENBQUM7QUFDdkIsb0NBQXNCLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLHlCQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLDBCQUFZLFFBQVEsQ0FBQyxDQUFDO0FBQ3RCLDZCQUFlLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLDJCQUFhLFFBQVEsQ0FBQyxDQUFDO0NBQ3hCOztBQUVNLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUU7QUFDbEUsTUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxRCxRQUFJLENBQUMsVUFBVSxFQUFFO0FBQ2YsYUFBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JDO0dBQ0Y7Q0FDRiIsImZpbGUiOiJoZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJFYWNoIGZyb20gJy4vaGVscGVycy9lYWNoJztcbmltcG9ydCByZWdpc3RlckhlbHBlck1pc3NpbmcgZnJvbSAnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJztcbmltcG9ydCByZWdpc3RlcklmIGZyb20gJy4vaGVscGVycy9pZic7XG5pbXBvcnQgcmVnaXN0ZXJMb2cgZnJvbSAnLi9oZWxwZXJzL2xvZyc7XG5pbXBvcnQgcmVnaXN0ZXJMb29rdXAgZnJvbSAnLi9oZWxwZXJzL2xvb2t1cCc7XG5pbXBvcnQgcmVnaXN0ZXJXaXRoIGZyb20gJy4vaGVscGVycy93aXRoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHtcbiAgcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlckVhY2goaW5zdGFuY2UpO1xuICByZWdpc3RlckhlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlcklmKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb2coaW5zdGFuY2UpO1xuICByZWdpc3Rlckxvb2t1cChpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyV2l0aChpbnN0YW5jZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSGVscGVyVG9Ib29rcyhpbnN0YW5jZSwgaGVscGVyTmFtZSwga2VlcEhlbHBlcikge1xuICBpZiAoaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXSkge1xuICAgIGluc3RhbmNlLmhvb2tzW2hlbHBlck5hbWVdID0gaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICBpZiAoIWtlZXBIZWxwZXIpIHtcbiAgICAgIGRlbGV0ZSBpbnN0YW5jZS5oZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIH1cbiAgfVxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n  instance.registerHelper('blockHelperMissing', function (context, options) {\n    var inverse = options.inverse,\n        fn = options.fn;\n\n    if (context === true) {\n      return fn(this);\n    } else if (context === false || context == null) {\n      return inverse(this);\n    } else if (_utils.isArray(context)) {\n      if (context.length > 0) {\n        if (options.ids) {\n          options.ids = [options.name];\n        }\n\n        return instance.helpers.each(context, options);\n      } else {\n        return inverse(this);\n      }\n    } else {\n      if (options.data && options.ids) {\n        var data = _utils.createFrame(options.data);\n        data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n        options = { data: data };\n      }\n\n      return fn(context, options);\n    }\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBd0QsVUFBVTs7cUJBRW5ELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQzNCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVsQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQ2IsQ0FBQztBQUNGLGVBQU8sR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztPQUMxQjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwcGVuZENvbnRleHRQYXRoLCBjcmVhdGVGcmFtZSwgaXNBcnJheSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBsZXQgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSxcbiAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLm5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTogZGF0YSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n  instance.registerHelper('each', function (context, options) {\n    if (!options) {\n      throw new _exception2['default']('Must pass iterator to #each');\n    }\n\n    var fn = options.fn,\n        inverse = options.inverse,\n        i = 0,\n        ret = '',\n        data = undefined,\n        contextPath = undefined;\n\n    if (options.data && options.ids) {\n      contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n    }\n\n    if (_utils.isFunction(context)) {\n      context = context.call(this);\n    }\n\n    if (options.data) {\n      data = _utils.createFrame(options.data);\n    }\n\n    function execIteration(field, index, last) {\n      if (data) {\n        data.key = field;\n        data.index = index;\n        data.first = index === 0;\n        data.last = !!last;\n\n        if (contextPath) {\n          data.contextPath = contextPath + field;\n        }\n      }\n\n      ret = ret + fn(context[field], {\n        data: data,\n        blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n      });\n    }\n\n    if (context && typeof context === 'object') {\n      if (_utils.isArray(context)) {\n        for (var j = context.length; i < j; i++) {\n          if (i in context) {\n            execIteration(i, i, i === context.length - 1);\n          }\n        }\n      } else if (typeof Symbol === 'function' && context[Symbol.iterator]) {\n        var newContext = [];\n        var iterator = context[Symbol.iterator]();\n        for (var it = iterator.next(); !it.done; it = iterator.next()) {\n          newContext.push(it.value);\n        }\n        context = newContext;\n        for (var j = context.length; i < j; i++) {\n          execIteration(i, i, i === context.length - 1);\n        }\n      } else {\n        (function () {\n          var priorKey = undefined;\n\n          Object.keys(context).forEach(function (key) {\n            // We're running the iterations one step out of sync so we can detect\n            // the last iteration without have to scan the object twice and create\n            // an itermediate keys array.\n            if (priorKey !== undefined) {\n              execIteration(priorKey, i - 1);\n            }\n            priorKey = key;\n            i++;\n          });\n          if (priorKey !== undefined) {\n            execIteration(priorKey, i - 1, true);\n          }\n        })();\n      }\n    }\n\n    if (i === 0) {\n      ret = inverse(this);\n    }\n\n    return ret;\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1osWUFBTSwyQkFBYyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ3BEOztBQUVELFFBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFO1FBQ2pCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTztRQUN6QixDQUFDLEdBQUcsQ0FBQztRQUNMLEdBQUcsR0FBRyxFQUFFO1FBQ1IsSUFBSSxZQUFBO1FBQ0osV0FBVyxZQUFBLENBQUM7O0FBRWQsUUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDL0IsaUJBQVcsR0FDVCx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNyRTs7QUFFRCxRQUFJLGtCQUFXLE9BQU8sQ0FBQyxFQUFFO0FBQ3ZCLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCOztBQUVELFFBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUNoQixVQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOztBQUVELGFBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLFVBQUksSUFBSSxFQUFFO0FBQ1IsWUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDakIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLFlBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbkIsWUFBSSxXQUFXLEVBQUU7QUFDZixjQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDeEM7T0FDRjs7QUFFRCxTQUFHLEdBQ0QsR0FBRyxHQUNILEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUNYLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUN2QixDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQzVCO09BQ0YsQ0FBQyxDQUFDO0tBQ047O0FBRUQsUUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzFDLFVBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDbkUsWUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLFlBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUM1QyxhQUFLLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRTtBQUM3RCxvQkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7QUFDRCxlQUFPLEdBQUcsVUFBVSxDQUFDO0FBQ3JCLGFBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLHVCQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMvQztPQUNGLE1BQU07O0FBQ0wsY0FBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixnQkFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHLEVBQUk7Ozs7QUFJbEMsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0wsQ0FBQyxDQUFDO0FBQ0gsY0FBSSxRQUFRLEtBQUssU0FBUyxFQUFFO0FBQzFCLHlCQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7V0FDdEM7O09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwcGVuZENvbnRleHRQYXRoLFxuICBibG9ja1BhcmFtcyxcbiAgY3JlYXRlRnJhbWUsXG4gIGlzQXJyYXksXG4gIGlzRnVuY3Rpb25cbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLFxuICAgICAgaSA9IDAsXG4gICAgICByZXQgPSAnJyxcbiAgICAgIGRhdGEsXG4gICAgICBjb250ZXh0UGF0aDtcblxuICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHtcbiAgICAgIGNvbnRleHRQYXRoID1cbiAgICAgICAgYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7XG4gICAgfVxuXG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGF0YSkge1xuICAgICAgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhlY0l0ZXJhdGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGRhdGEua2V5ID0gZmllbGQ7XG4gICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDtcbiAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBkYXRhLmxhc3QgPSAhIWxhc3Q7XG5cbiAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7XG4gICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0ID1cbiAgICAgICAgcmV0ICtcbiAgICAgICAgZm4oY29udGV4dFtmaWVsZF0sIHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhcbiAgICAgICAgICAgIFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLFxuICAgICAgICAgICAgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdXG4gICAgICAgICAgKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBjb250ZXh0W1N5bWJvbC5pdGVyYXRvcl0pIHtcbiAgICAgICAgY29uc3QgbmV3Q29udGV4dCA9IFtdO1xuICAgICAgICBjb25zdCBpdGVyYXRvciA9IGNvbnRleHRbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgICAgICBmb3IgKGxldCBpdCA9IGl0ZXJhdG9yLm5leHQoKTsgIWl0LmRvbmU7IGl0ID0gaXRlcmF0b3IubmV4dCgpKSB7XG4gICAgICAgICAgbmV3Q29udGV4dC5wdXNoKGl0LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0ID0gbmV3Q29udGV4dDtcbiAgICAgICAgZm9yIChsZXQgaiA9IGNvbnRleHQubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICAgICAgZXhlY0l0ZXJhdGlvbihpLCBpLCBpID09PSBjb250ZXh0Lmxlbmd0aCAtIDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcHJpb3JLZXk7XG5cbiAgICAgICAgT2JqZWN0LmtleXMoY29udGV4dCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIC8vIFdlJ3JlIHJ1bm5pbmcgdGhlIGl0ZXJhdGlvbnMgb25lIHN0ZXAgb3V0IG9mIHN5bmMgc28gd2UgY2FuIGRldGVjdFxuICAgICAgICAgIC8vIHRoZSBsYXN0IGl0ZXJhdGlvbiB3aXRob3V0IGhhdmUgdG8gc2NhbiB0aGUgb2JqZWN0IHR3aWNlIGFuZCBjcmVhdGVcbiAgICAgICAgICAvLyBhbiBpdGVybWVkaWF0ZSBrZXlzIGFycmF5LlxuICAgICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHByaW9yS2V5ID0ga2V5O1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZXhlY0l0ZXJhdGlvbihwcmlvcktleSwgaSAtIDEsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIHJldCA9IGludmVyc2UodGhpcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n  instance.registerHelper('helperMissing', function () /* [args, ]options */{\n    if (arguments.length === 1) {\n      // A missing field in a {{foo}} construct.\n      return undefined;\n    } else {\n      // Someone is actually trying to call something, blow up.\n      throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n    }\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFDSixtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUNqRSxDQUFDO0tBQ0g7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJoZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC5cbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAgICdNaXNzaW5nIGhlbHBlcjogXCInICsgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXS5uYW1lICsgJ1wiJ1xuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n  instance.registerHelper('if', function (conditional, options) {\n    if (arguments.length != 2) {\n      throw new _exception2['default']('#if requires exactly one argument');\n    }\n    if (_utils.isFunction(conditional)) {\n      conditional = conditional.call(this);\n    }\n\n    // Default behavior is to render the positive path if the value is truthy and not empty.\n    // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n    // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n    if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n      return options.inverse(this);\n    } else {\n      return options.fn(this);\n    }\n  });\n\n  instance.registerHelper('unless', function (conditional, options) {\n    if (arguments.length != 2) {\n      throw new _exception2['default']('#unless requires exactly one argument');\n    }\n    return instance.helpers['if'].call(this, conditional, {\n      fn: options.inverse,\n      inverse: options.fn,\n      hash: options.hash\n    });\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztxQkFBb0MsVUFBVTs7eUJBQ3hCLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztLQUMxRDtBQUNELFFBQUksa0JBQVcsV0FBVyxDQUFDLEVBQUU7QUFDM0IsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RDOzs7OztBQUtELFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFFBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDekIsWUFBTSwyQkFBYyx1Q0FBdUMsQ0FBQyxDQUFDO0tBQzlEO0FBQ0QsV0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3BELFFBQUUsRUFBRSxPQUFPLENBQUMsT0FBTztBQUNuQixhQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDbkIsVUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ25CLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eSwgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjaWYgcmVxdWlyZXMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKGlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7XG4gICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQgbm90IGVtcHR5LlxuICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUgc2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24gdGhlXG4gICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS5cbiAgICBpZiAoKCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlvbmFsKSB8fCBpc0VtcHR5KGNvbmRpdGlvbmFsKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XG4gICAgfVxuICB9KTtcblxuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjdW5sZXNzIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHtcbiAgICAgIGZuOiBvcHRpb25zLmludmVyc2UsXG4gICAgICBpbnZlcnNlOiBvcHRpb25zLmZuLFxuICAgICAgaGFzaDogb3B0aW9ucy5oYXNoXG4gICAgfSk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n  instance.registerHelper('log', function () /* message, options */{\n    var args = [undefined],\n        options = arguments[arguments.length - 1];\n    for (var i = 0; i < arguments.length - 1; i++) {\n      args.push(arguments[i]);\n    }\n\n    var level = 1;\n    if (options.hash.level != null) {\n      level = options.hash.level;\n    } else if (options.data && options.data.level != null) {\n      level = options.data.level;\n    }\n    args[0] = level;\n\n    instance.log.apply(instance, args);\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVEsSUFBSSxDQUFDLENBQUM7R0FDdkIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbGV2ZWwgPSAxO1xuICAgIGlmIChvcHRpb25zLmhhc2gubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVsICE9IG51bGwpIHtcbiAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsO1xuICAgIH1cbiAgICBhcmdzWzBdID0gbGV2ZWw7XG5cbiAgICBpbnN0YW5jZS5sb2coLi4uYXJncyk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n  instance.registerHelper('lookup', function (obj, field, options) {\n    if (!obj) {\n      // Note for 5.0: Change to \"obj == null\" in 5.0\n      return obj;\n    }\n    return options.lookupProperty(obj, field);\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUM5RCxRQUFJLENBQUMsR0FBRyxFQUFFOztBQUVSLGFBQU8sR0FBRyxDQUFDO0tBQ1o7QUFDRCxXQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzNDLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6Imxvb2t1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlvbihvYmosIGZpZWxkLCBvcHRpb25zKSB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIC8vIE5vdGUgZm9yIDUuMDogQ2hhbmdlIHRvIFwib2JqID09IG51bGxcIiBpbiA1LjBcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zLmxvb2t1cFByb3BlcnR5KG9iaiwgZmllbGQpO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n  instance.registerHelper('with', function (context, options) {\n    if (arguments.length != 2) {\n      throw new _exception2['default']('#with requires exactly one argument');\n    }\n    if (_utils.isFunction(context)) {\n      context = context.call(this);\n    }\n\n    var fn = options.fn;\n\n    if (!_utils.isEmpty(context)) {\n      var data = options.data;\n      if (options.data && options.ids) {\n        data = _utils.createFrame(options.data);\n        data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n      }\n\n      return fn(context, {\n        data: data,\n        blockParams: _utils.blockParams([context], [data && data.contextPath])\n      });\n    } else {\n      return options.inverse(this);\n    }\n  });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMscUNBQXFDLENBQUMsQ0FBQztLQUM1RDtBQUNELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFDdkIsYUFBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs7QUFFcEIsUUFBSSxDQUFDLGVBQVEsT0FBTyxDQUFDLEVBQUU7QUFDckIsVUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN4QixVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFlBQUksQ0FBQyxXQUFXLEdBQUcseUJBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7T0FDSDs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO09BQ2hFLENBQUMsQ0FBQztLQUNKLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJ3aXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXBwZW5kQ29udGV4dFBhdGgsXG4gIGJsb2NrUGFyYW1zLFxuICBjcmVhdGVGcmFtZSxcbiAgaXNFbXB0eSxcbiAgaXNGdW5jdGlvblxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd3aXRoJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJyN3aXRoIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7XG4gICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG5cbiAgICBpZiAoIWlzRW1wdHkoY29udGV4dCkpIHtcbiAgICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLmlkc1swXVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBibG9ja1BhcmFtczogYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRoXSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.createNewLookupObject = createNewLookupObject;\n\nvar _utils = require('../utils');\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\n\nfunction createNewLookupObject() {\n  for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n    sources[_key] = arguments[_key];\n  }\n\n  return _utils.extend.apply(undefined, [Object.create(null)].concat(sources));\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztxQkFBdUIsVUFBVTs7Ozs7Ozs7O0FBUTFCLFNBQVMscUJBQXFCLEdBQWE7b0NBQVQsT0FBTztBQUFQLFdBQU87OztBQUM5QyxTQUFPLGdDQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQUssT0FBTyxFQUFDLENBQUM7Q0FDaEQiLCJmaWxlIjoiY3JlYXRlLW5ldy1sb29rdXAtb2JqZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBvYmplY3Qgd2l0aCBcIm51bGxcIi1wcm90b3R5cGUgdG8gYXZvaWQgdHJ1dGh5IHJlc3VsdHMgb24gcHJvdG90eXBlIHByb3BlcnRpZXMuXG4gKiBUaGUgcmVzdWx0aW5nIG9iamVjdCBjYW4gYmUgdXNlZCB3aXRoIFwib2JqZWN0W3Byb3BlcnR5XVwiIHRvIGNoZWNrIGlmIGEgcHJvcGVydHkgZXhpc3RzXG4gKiBAcGFyYW0gey4uLm9iamVjdH0gc291cmNlcyBhIHZhcmFyZ3MgcGFyYW1ldGVyIG9mIHNvdXJjZSBvYmplY3RzIHRoYXQgd2lsbCBiZSBtZXJnZWRcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXdMb29rdXBPYmplY3QoLi4uc291cmNlcykge1xuICByZXR1cm4gZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIC4uLnNvdXJjZXMpO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.createProtoAccessControl = createProtoAccessControl;\nexports.resultIsAllowed = resultIsAllowed;\nexports.resetLoggedProperties = resetLoggedProperties;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _createNewLookupObject = require('./create-new-lookup-object');\n\nvar _logger = require('../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar loggedProperties = Object.create(null);\n\nfunction createProtoAccessControl(runtimeOptions) {\n  var defaultMethodWhiteList = Object.create(null);\n  defaultMethodWhiteList['constructor'] = false;\n  defaultMethodWhiteList['__defineGetter__'] = false;\n  defaultMethodWhiteList['__defineSetter__'] = false;\n  defaultMethodWhiteList['__lookupGetter__'] = false;\n\n  var defaultPropertyWhiteList = Object.create(null);\n  // eslint-disable-next-line no-proto\n  defaultPropertyWhiteList['__proto__'] = false;\n\n  return {\n    properties: {\n      whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),\n      defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n    },\n    methods: {\n      whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),\n      defaultValue: runtimeOptions.allowProtoMethodsByDefault\n    }\n  };\n}\n\nfunction resultIsAllowed(result, protoAccessControl, propertyName) {\n  if (typeof result === 'function') {\n    return checkWhiteList(protoAccessControl.methods, propertyName);\n  } else {\n    return checkWhiteList(protoAccessControl.properties, propertyName);\n  }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n  if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n    return protoAccessControlForType.whitelist[propertyName] === true;\n  }\n  if (protoAccessControlForType.defaultValue !== undefined) {\n    return protoAccessControlForType.defaultValue;\n  }\n  logUnexpecedPropertyAccessOnce(propertyName);\n  return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n  if (loggedProperties[propertyName] !== true) {\n    loggedProperties[propertyName] = true;\n    _logger2['default'].log('error', 'Handlebars: Access has been denied to resolve the property \"' + propertyName + '\" because it is not an \"own property\" of its parent.\\n' + 'You can add a runtime option to disable the check or this warning:\\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');\n  }\n}\n\nfunction resetLoggedProperties() {\n  Object.keys(loggedProperties).forEach(function (propertyName) {\n    delete loggedProperties[propertyName];\n  });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3Byb3RvLWFjY2Vzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3FDQUFzQyw0QkFBNEI7O3NCQUMvQyxXQUFXOzs7O0FBRTlCLElBQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFdEMsU0FBUyx3QkFBd0IsQ0FBQyxjQUFjLEVBQUU7QUFDdkQsTUFBSSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pELHdCQUFzQixDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUM5Qyx3QkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNuRCx3QkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNuRCx3QkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQzs7QUFFbkQsTUFBSSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDOztBQUVuRCwwQkFBd0IsQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRTlDLFNBQU87QUFDTCxjQUFVLEVBQUU7QUFDVixlQUFTLEVBQUUsNkNBQ1Qsd0JBQXdCLEVBQ3hCLGNBQWMsQ0FBQyxzQkFBc0IsQ0FDdEM7QUFDRCxrQkFBWSxFQUFFLGNBQWMsQ0FBQyw2QkFBNkI7S0FDM0Q7QUFDRCxXQUFPLEVBQUU7QUFDUCxlQUFTLEVBQUUsNkNBQ1Qsc0JBQXNCLEVBQ3RCLGNBQWMsQ0FBQyxtQkFBbUIsQ0FDbkM7QUFDRCxrQkFBWSxFQUFFLGNBQWMsQ0FBQywwQkFBMEI7S0FDeEQ7R0FDRixDQUFDO0NBQ0g7O0FBRU0sU0FBUyxlQUFlLENBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRTtBQUN4RSxNQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRTtBQUNoQyxXQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7R0FDakUsTUFBTTtBQUNMLFdBQU8sY0FBYyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztHQUNwRTtDQUNGOztBQUVELFNBQVMsY0FBYyxDQUFDLHlCQUF5QixFQUFFLFlBQVksRUFBRTtBQUMvRCxNQUFJLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsS0FBSyxTQUFTLEVBQUU7QUFDbkUsV0FBTyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDO0dBQ25FO0FBQ0QsTUFBSSx5QkFBeUIsQ0FBQyxZQUFZLEtBQUssU0FBUyxFQUFFO0FBQ3hELFdBQU8seUJBQXlCLENBQUMsWUFBWSxDQUFDO0dBQy9DO0FBQ0QsZ0NBQThCLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDN0MsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFRCxTQUFTLDhCQUE4QixDQUFDLFlBQVksRUFBRTtBQUNwRCxNQUFJLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksRUFBRTtBQUMzQyxvQkFBZ0IsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDdEMsd0JBQU8sR0FBRyxDQUNSLE9BQU8sRUFDUCxpRUFBK0QsWUFBWSxvSUFDSCxvSEFDMkMsQ0FDcEgsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxxQkFBcUIsR0FBRztBQUN0QyxRQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUEsWUFBWSxFQUFJO0FBQ3BELFdBQU8sZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7R0FDdkMsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoicHJvdG8tYWNjZXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlTmV3TG9va3VwT2JqZWN0IH0gZnJvbSAnLi9jcmVhdGUtbmV3LWxvb2t1cC1vYmplY3QnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi9sb2dnZXInO1xuXG5jb25zdCBsb2dnZWRQcm9wZXJ0aWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbChydW50aW1lT3B0aW9ucykge1xuICBsZXQgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ2NvbnN0cnVjdG9yJ10gPSBmYWxzZTtcbiAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdFsnX19kZWZpbmVHZXR0ZXJfXyddID0gZmFsc2U7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ19fZGVmaW5lU2V0dGVyX18nXSA9IGZhbHNlO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0WydfX2xvb2t1cEdldHRlcl9fJ10gPSBmYWxzZTtcblxuICBsZXQgZGVmYXVsdFByb3BlcnR5V2hpdGVMaXN0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvXG4gIGRlZmF1bHRQcm9wZXJ0eVdoaXRlTGlzdFsnX19wcm90b19fJ10gPSBmYWxzZTtcblxuICByZXR1cm4ge1xuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIHdoaXRlbGlzdDogY3JlYXRlTmV3TG9va3VwT2JqZWN0KFxuICAgICAgICBkZWZhdWx0UHJvcGVydHlXaGl0ZUxpc3QsXG4gICAgICAgIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b1Byb3BlcnRpZXNcbiAgICAgICksXG4gICAgICBkZWZhdWx0VmFsdWU6IHJ1bnRpbWVPcHRpb25zLmFsbG93UHJvdG9Qcm9wZXJ0aWVzQnlEZWZhdWx0XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICB3aGl0ZWxpc3Q6IGNyZWF0ZU5ld0xvb2t1cE9iamVjdChcbiAgICAgICAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdCxcbiAgICAgICAgcnVudGltZU9wdGlvbnMuYWxsb3dlZFByb3RvTWV0aG9kc1xuICAgICAgKSxcbiAgICAgIGRlZmF1bHRWYWx1ZTogcnVudGltZU9wdGlvbnMuYWxsb3dQcm90b01ldGhvZHNCeURlZmF1bHRcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXN1bHRJc0FsbG93ZWQocmVzdWx0LCBwcm90b0FjY2Vzc0NvbnRyb2wsIHByb3BlcnR5TmFtZSkge1xuICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBjaGVja1doaXRlTGlzdChwcm90b0FjY2Vzc0NvbnRyb2wubWV0aG9kcywgcHJvcGVydHlOYW1lKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sLnByb3BlcnRpZXMsIHByb3BlcnR5TmFtZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZSwgcHJvcGVydHlOYW1lKSB7XG4gIGlmIChwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLndoaXRlbGlzdFtwcm9wZXJ0eU5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS53aGl0ZWxpc3RbcHJvcGVydHlOYW1lXSA9PT0gdHJ1ZTtcbiAgfVxuICBpZiAocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLmRlZmF1bHRWYWx1ZTtcbiAgfVxuICBsb2dVbmV4cGVjZWRQcm9wZXJ0eUFjY2Vzc09uY2UocHJvcGVydHlOYW1lKTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBsb2dVbmV4cGVjZWRQcm9wZXJ0eUFjY2Vzc09uY2UocHJvcGVydHlOYW1lKSB7XG4gIGlmIChsb2dnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV0gIT09IHRydWUpIHtcbiAgICBsb2dnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV0gPSB0cnVlO1xuICAgIGxvZ2dlci5sb2coXG4gICAgICAnZXJyb3InLFxuICAgICAgYEhhbmRsZWJhcnM6IEFjY2VzcyBoYXMgYmVlbiBkZW5pZWQgdG8gcmVzb2x2ZSB0aGUgcHJvcGVydHkgXCIke3Byb3BlcnR5TmFtZX1cIiBiZWNhdXNlIGl0IGlzIG5vdCBhbiBcIm93biBwcm9wZXJ0eVwiIG9mIGl0cyBwYXJlbnQuXFxuYCArXG4gICAgICAgIGBZb3UgY2FuIGFkZCBhIHJ1bnRpbWUgb3B0aW9uIHRvIGRpc2FibGUgdGhlIGNoZWNrIG9yIHRoaXMgd2FybmluZzpcXG5gICtcbiAgICAgICAgYFNlZSBodHRwczovL2hhbmRsZWJhcnNqcy5jb20vYXBpLXJlZmVyZW5jZS9ydW50aW1lLW9wdGlvbnMuaHRtbCNvcHRpb25zLXRvLWNvbnRyb2wtcHJvdG90eXBlLWFjY2VzcyBmb3IgZGV0YWlsc2BcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNldExvZ2dlZFByb3BlcnRpZXMoKSB7XG4gIE9iamVjdC5rZXlzKGxvZ2dlZFByb3BlcnRpZXMpLmZvckVhY2gocHJvcGVydHlOYW1lID0+IHtcbiAgICBkZWxldGUgbG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.wrapHelper = wrapHelper;\n\nfunction wrapHelper(helper, transformOptionsFn) {\n  if (typeof helper !== 'function') {\n    // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n    // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n    return helper;\n  }\n  var wrapper = function wrapper() /* dynamic arguments */{\n    var options = arguments[arguments.length - 1];\n    arguments[arguments.length - 1] = transformOptionsFn(options);\n    return helper.apply(this, arguments);\n  };\n  return wrapper;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3dyYXBIZWxwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUU7QUFDckQsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7OztBQUdoQyxXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsTUFBSSxPQUFPLEdBQUcsU0FBVixPQUFPLDBCQUFxQztBQUM5QyxRQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRCxhQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5RCxXQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3RDLENBQUM7QUFDRixTQUFPLE9BQU8sQ0FBQztDQUNoQiIsImZpbGUiOiJ3cmFwSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHdyYXBIZWxwZXIoaGVscGVyLCB0cmFuc2Zvcm1PcHRpb25zRm4pIHtcbiAgaWYgKHR5cGVvZiBoZWxwZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgYXBwYXJlbnRseSBpdCBkb2VzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvMTYzOVxuICAgIC8vIFdlIHRyeSB0byBtYWtlIHRoZSB3cmFwcGVyIGxlYXN0LWludmFzaXZlIGJ5IG5vdCB3cmFwcGluZyBpdCwgaWYgdGhlIGhlbHBlciBpcyBub3QgYSBmdW5jdGlvbi5cbiAgICByZXR1cm4gaGVscGVyO1xuICB9XG4gIGxldCB3cmFwcGVyID0gZnVuY3Rpb24oLyogZHluYW1pYyBhcmd1bWVudHMgKi8pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdID0gdHJhbnNmb3JtT3B0aW9uc0ZuKG9wdGlvbnMpO1xuICAgIHJldHVybiBoZWxwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgcmV0dXJuIHdyYXBwZXI7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n  methodMap: ['debug', 'info', 'warn', 'error'],\n  level: 'info',\n\n  // Maps a given level value to the `methodMap` indexes above.\n  lookupLevel: function lookupLevel(level) {\n    if (typeof level === 'string') {\n      var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n      if (levelMap >= 0) {\n        level = levelMap;\n      } else {\n        level = parseInt(level, 10);\n      }\n    }\n\n    return level;\n  },\n\n  // Can be overridden in the host environment\n  log: function log(level) {\n    level = logger.lookupLevel(level);\n\n    if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n      var method = logger.methodMap[level];\n      // eslint-disable-next-line no-console\n      if (!console[method]) {\n        method = 'log';\n      }\n\n      for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        message[_key - 1] = arguments[_key];\n      }\n\n      console[method].apply(console, message); // eslint-disable-line no-console\n    }\n  }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUF3QixTQUFTOztBQUVqQyxJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUNFLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUN6QztBQUNBLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRXJDLFVBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDcEIsY0FBTSxHQUFHLEtBQUssQ0FBQztPQUNoQjs7d0NBWG1CLE9BQU87QUFBUCxlQUFPOzs7QUFZM0IsYUFBTyxDQUFDLE1BQU0sT0FBQyxDQUFmLE9BQU8sRUFBWSxPQUFPLENBQUMsQ0FBQztLQUM3QjtHQUNGO0NBQ0YsQ0FBQzs7cUJBRWEsTUFBTSIsImZpbGUiOiJsb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmRleE9mIH0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWxcbiAgICApIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkge1xuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n","/* global globalThis */\n'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n  /* istanbul ignore next */\n  // https://mathiasbynens.be/notes/globalthis\n  (function () {\n    if (typeof globalThis === 'object') return;\n    Object.prototype.__defineGetter__('__magic__', function () {\n      return this;\n    });\n    __magic__.globalThis = __magic__; // eslint-disable-line no-undef\n    delete Object.prototype.__magic__;\n  })();\n\n  var $Handlebars = globalThis.Handlebars;\n\n  /* istanbul ignore next */\n  Handlebars.noConflict = function () {\n    if (globalThis.Handlebars === Handlebars) {\n      globalThis.Handlebars = $Handlebars;\n    }\n    return Handlebars;\n  };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O3FCQUNlLFVBQVMsVUFBVSxFQUFFOzs7QUFHbEMsR0FBQyxZQUFXO0FBQ1YsUUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsT0FBTztBQUMzQyxVQUFNLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxZQUFXO0FBQ3hELGFBQU8sSUFBSSxDQUFDO0tBQ2IsQ0FBQyxDQUFDO0FBQ0gsYUFBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7QUFDakMsV0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztHQUNuQyxDQUFBLEVBQUcsQ0FBQzs7QUFFTCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDOzs7QUFHMUMsWUFBVSxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ2pDLFFBQUksVUFBVSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7QUFDeEMsZ0JBQVUsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO0tBQ3JDO0FBQ0QsV0FBTyxVQUFVLENBQUM7R0FDbkIsQ0FBQztDQUNIIiwiZmlsZSI6Im5vLWNvbmZsaWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGdsb2JhbFRoaXMgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKEhhbmRsZWJhcnMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2dsb2JhbHRoaXNcbiAgKGZ1bmN0aW9uKCkge1xuICAgIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybjtcbiAgICBPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lR2V0dGVyX18oJ19fbWFnaWNfXycsIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSk7XG4gICAgX19tYWdpY19fLmdsb2JhbFRoaXMgPSBfX21hZ2ljX187IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICBkZWxldGUgT2JqZWN0LnByb3RvdHlwZS5fX21hZ2ljX187XG4gIH0pKCk7XG5cbiAgY29uc3QgJEhhbmRsZWJhcnMgPSBnbG9iYWxUaGlzLkhhbmRsZWJhcnM7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgSGFuZGxlYmFycy5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKGdsb2JhbFRoaXMuSGFuZGxlYmFycyA9PT0gSGFuZGxlYmFycykge1xuICAgICAgZ2xvYmFsVGhpcy5IYW5kbGViYXJzID0gJEhhbmRsZWJhcnM7XG4gICAgfVxuICAgIHJldHVybiBIYW5kbGViYXJzO1xuICB9O1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _utils = require('./utils');\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = require('./base');\n\nvar _helpers = require('./helpers');\n\nvar _internalWrapHelper = require('./internal/wrapHelper');\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nfunction checkRevision(compilerInfo) {\n  var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n      currentRevision = _base.COMPILER_REVISION;\n\n  if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {\n    return;\n  }\n\n  if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {\n    var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n        compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n    throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n  } else {\n    // Use the embedded version info since the runtime doesn't know about this revision yet\n    throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n  }\n}\n\nfunction template(templateSpec, env) {\n  /* istanbul ignore next */\n  if (!env) {\n    throw new _exception2['default']('No environment passed to template');\n  }\n  if (!templateSpec || !templateSpec.main) {\n    throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n  }\n\n  templateSpec.main.decorator = templateSpec.main_d;\n\n  // Note: Using env.VM references rather than local var references throughout this section to allow\n  // for external users to override these as pseudo-supported APIs.\n  env.VM.checkRevision(templateSpec.compiler);\n\n  // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n  var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n  function invokePartialWrapper(partial, context, options) {\n    if (options.hash) {\n      context = Utils.extend({}, context, options.hash);\n      if (options.ids) {\n        options.ids[0] = true;\n      }\n    }\n    partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n    var extendedOptions = Utils.extend({}, options, {\n      hooks: this.hooks,\n      protoAccessControl: this.protoAccessControl\n    });\n\n    var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);\n\n    if (result == null && env.compile) {\n      options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n      result = options.partials[options.name](context, extendedOptions);\n    }\n    if (result != null) {\n      if (options.indent) {\n        var lines = result.split('\\n');\n        for (var i = 0, l = lines.length; i < l; i++) {\n          if (!lines[i] && i + 1 === l) {\n            break;\n          }\n\n          lines[i] = options.indent + lines[i];\n        }\n        result = lines.join('\\n');\n      }\n      return result;\n    } else {\n      throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n    }\n  }\n\n  // Just add water\n  var container = {\n    strict: function strict(obj, name, loc) {\n      if (!obj || !(name in obj)) {\n        throw new _exception2['default']('\"' + name + '\" not defined in ' + obj, {\n          loc: loc\n        });\n      }\n      return container.lookupProperty(obj, name);\n    },\n    lookupProperty: function lookupProperty(parent, propertyName) {\n      var result = parent[propertyName];\n      if (result == null) {\n        return result;\n      }\n      if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n        return result;\n      }\n\n      if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n        return result;\n      }\n      return undefined;\n    },\n    lookup: function lookup(depths, name) {\n      var len = depths.length;\n      for (var i = 0; i < len; i++) {\n        var result = depths[i] && container.lookupProperty(depths[i], name);\n        if (result != null) {\n          return depths[i][name];\n        }\n      }\n    },\n    lambda: function lambda(current, context) {\n      return typeof current === 'function' ? current.call(context) : current;\n    },\n\n    escapeExpression: Utils.escapeExpression,\n    invokePartial: invokePartialWrapper,\n\n    fn: function fn(i) {\n      var ret = templateSpec[i];\n      ret.decorator = templateSpec[i + '_d'];\n      return ret;\n    },\n\n    programs: [],\n    program: function program(i, data, declaredBlockParams, blockParams, depths) {\n      var programWrapper = this.programs[i],\n          fn = this.fn(i);\n      if (data || depths || blockParams || declaredBlockParams) {\n        programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n      } else if (!programWrapper) {\n        programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n      }\n      return programWrapper;\n    },\n\n    data: function data(value, depth) {\n      while (value && depth--) {\n        value = value._parent;\n      }\n      return value;\n    },\n    mergeIfNeeded: function mergeIfNeeded(param, common) {\n      var obj = param || common;\n\n      if (param && common && param !== common) {\n        obj = Utils.extend({}, common, param);\n      }\n\n      return obj;\n    },\n    // An empty object to use as replacement for null-contexts\n    nullContext: Object.seal({}),\n\n    noop: env.VM.noop,\n    compilerInfo: templateSpec.compiler\n  };\n\n  function ret(context) {\n    var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n    var data = options.data;\n\n    ret._setup(options);\n    if (!options.partial && templateSpec.useData) {\n      data = initData(context, data);\n    }\n    var depths = undefined,\n        blockParams = templateSpec.useBlockParams ? [] : undefined;\n    if (templateSpec.useDepths) {\n      if (options.depths) {\n        depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n      } else {\n        depths = [context];\n      }\n    }\n\n    function main(context /*, options*/) {\n      return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n    }\n\n    main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n    return main(context, options);\n  }\n\n  ret.isTop = true;\n\n  ret._setup = function (options) {\n    if (!options.partial) {\n      var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n      wrapHelpersToPassLookupProperty(mergedHelpers, container);\n      container.helpers = mergedHelpers;\n\n      if (templateSpec.usePartial) {\n        // Use mergeIfNeeded here to prevent compiling global partials multiple times\n        container.partials = container.mergeIfNeeded(options.partials, env.partials);\n      }\n      if (templateSpec.usePartial || templateSpec.useDecorators) {\n        container.decorators = Utils.extend({}, env.decorators, options.decorators);\n      }\n\n      container.hooks = {};\n      container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);\n\n      var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;\n      _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n      _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n    } else {\n      container.protoAccessControl = options.protoAccessControl; // internal option\n      container.helpers = options.helpers;\n      container.partials = options.partials;\n      container.decorators = options.decorators;\n      container.hooks = options.hooks;\n    }\n  };\n\n  ret._child = function (i, data, blockParams, depths) {\n    if (templateSpec.useBlockParams && !blockParams) {\n      throw new _exception2['default']('must pass block params');\n    }\n    if (templateSpec.useDepths && !depths) {\n      throw new _exception2['default']('must pass parent depths');\n    }\n\n    return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n  };\n  return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n  function prog(context) {\n    var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n    var currentDepths = depths;\n    if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n      currentDepths = [context].concat(depths);\n    }\n\n    return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n  }\n\n  prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n  prog.program = i;\n  prog.depth = depths ? depths.length : 0;\n  prog.blockParams = declaredBlockParams || 0;\n  return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\n\nfunction resolvePartial(partial, context, options) {\n  if (!partial) {\n    if (options.name === '@partial-block') {\n      partial = options.data['partial-block'];\n    } else {\n      partial = options.partials[options.name];\n    }\n  } else if (!partial.call && !options.name) {\n    // This is a dynamic partial that returned a string\n    options.name = partial;\n    partial = options.partials[partial];\n  }\n  return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n  // Use the current closure context to save the partial-block if this partial\n  var currentPartialBlock = options.data && options.data['partial-block'];\n  options.partial = true;\n  if (options.ids) {\n    options.data.contextPath = options.ids[0] || options.data.contextPath;\n  }\n\n  var partialBlock = undefined;\n  if (options.fn && options.fn !== noop) {\n    (function () {\n      options.data = _base.createFrame(options.data);\n      // Wrapper function to get access to currentPartialBlock from the closure\n      var fn = options.fn;\n      partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n        var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n        // Restore the partial-block from the closure for the execution of the block\n        // i.e. the part inside the block of the partial call.\n        options.data = _base.createFrame(options.data);\n        options.data['partial-block'] = currentPartialBlock;\n        return fn(context, options);\n      };\n      if (fn.partials) {\n        options.partials = Utils.extend({}, options.partials, fn.partials);\n      }\n    })();\n  }\n\n  if (partial === undefined && partialBlock) {\n    partial = partialBlock;\n  }\n\n  if (partial === undefined) {\n    throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n  } else if (partial instanceof Function) {\n    return partial(context, options);\n  }\n}\n\nfunction noop() {\n  return '';\n}\n\nfunction initData(context, data) {\n  if (!data || !('root' in data)) {\n    data = data ? _base.createFrame(data) : {};\n    data.root = context;\n  }\n  return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n  if (fn.decorator) {\n    var props = {};\n    prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n    Utils.extend(prog, props);\n  }\n  return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n  Object.keys(mergedHelpers).forEach(function (helperName) {\n    var helper = mergedHelpers[helperName];\n    mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n  });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n  var lookupProperty = container.lookupProperty;\n  return _internalWrapHelper.wrapHelper(helper, function (options) {\n    return Utils.extend({ lookupProperty: lookupProperty }, options);\n  });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBTTVCLFFBQVE7O3VCQUNtQixXQUFXOztrQ0FDbEIsdUJBQXVCOzttQ0FJM0MseUJBQXlCOztBQUV6QixTQUFTLGFBQWEsQ0FBQyxZQUFZLEVBQUU7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxBQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQztNQUM3RCxlQUFlLDBCQUFvQixDQUFDOztBQUV0QyxNQUNFLGdCQUFnQiwyQ0FBcUMsSUFDckQsZ0JBQWdCLDJCQUFxQixFQUNyQztBQUNBLFdBQU87R0FDUjs7QUFFRCxNQUFJLGdCQUFnQiwwQ0FBb0MsRUFBRTtBQUN4RCxRQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1FBQ3ZELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3hELFVBQU0sMkJBQ0oseUZBQXlGLEdBQ3ZGLHFEQUFxRCxHQUNyRCxlQUFlLEdBQ2YsbURBQW1ELEdBQ25ELGdCQUFnQixHQUNoQixJQUFJLENBQ1AsQ0FBQztHQUNILE1BQU07O0FBRUwsVUFBTSwyQkFDSix3RkFBd0YsR0FDdEYsaURBQWlELEdBQ2pELFlBQVksQ0FBQyxDQUFDLENBQUMsR0FDZixJQUFJLENBQ1AsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztH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QUFDbkMsV0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsY0FBYyxFQUFkLGNBQWMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0dBQ2xELENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6InJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHtcbiAgQ09NUElMRVJfUkVWSVNJT04sXG4gIGNyZWF0ZUZyYW1lLFxuICBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04sXG4gIFJFVklTSU9OX0NIQU5HRVNcbn0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IG1vdmVIZWxwZXJUb0hvb2tzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHdyYXBIZWxwZXIgfSBmcm9tICcuL2ludGVybmFsL3dyYXBIZWxwZXInO1xuaW1wb3J0IHtcbiAgY3JlYXRlUHJvdG9BY2Nlc3NDb250cm9sLFxuICByZXN1bHRJc0FsbG93ZWRcbn0gZnJvbSAnLi9pbnRlcm5hbC9wcm90by1hY2Nlc3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihjb21waWxlckluZm8pIHtcbiAgY29uc3QgY29tcGlsZXJSZXZpc2lvbiA9IChjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdKSB8fCAxLFxuICAgIGN1cnJlbnRSZXZpc2lvbiA9IENPTVBJTEVSX1JFVklTSU9OO1xuXG4gIGlmIChcbiAgICBjb21waWxlclJldmlzaW9uID49IExBU1RfQ09NUEFUSUJMRV9DT01QSUxFUl9SRVZJU0lPTiAmJlxuICAgIGNvbXBpbGVyUmV2aXNpb24gPD0gQ09NUElMRVJfUkVWSVNJT05cbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNvbXBpbGVyUmV2aXNpb24gPCBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04pIHtcbiAgICBjb25zdCBydW50aW1lVmVyc2lvbnMgPSBSRVZJU0lPTl9DSEFOR0VTW2N1cnJlbnRSZXZpc2lvbl0sXG4gICAgICBjb21waWxlclZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjb21waWxlclJldmlzaW9uXTtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIHJ1bnRpbWVWZXJzaW9ucyArXG4gICAgICAgICcpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIGNvbXBpbGVyVmVyc2lvbnMgK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBVc2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXRcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArXG4gICAgICAgICdQbGVhc2UgdXBkYXRlIHlvdXIgcnVudGltZSB0byBhIG5ld2VyIHZlcnNpb24gKCcgK1xuICAgICAgICBjb21waWxlckluZm9bMV0gK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGUodGVtcGxhdGVTcGVjLCBlbnYpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKCFlbnYpIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdObyBlbnZpcm9ubWVudCBwYXNzZWQgdG8gdGVtcGxhdGUnKTtcbiAgfVxuICBpZiAoIXRlbXBsYXRlU3BlYyB8fCAhdGVtcGxhdGVTcGVjLm1haW4pIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmtub3duIHRlbXBsYXRlIG9iamVjdDogJyArIHR5cGVvZiB0ZW1wbGF0ZVNwZWMpO1xuICB9XG5cbiAgdGVtcGxhdGVTcGVjLm1haW4uZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjLm1haW5fZDtcblxuICAvLyBOb3RlOiBVc2luZyBlbnYuVk0gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBsb2NhbCB2YXIgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiB0byBhbGxvd1xuICAvLyBmb3IgZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHNldWRvLXN1cHBvcnRlZCBBUElzLlxuICBlbnYuVk0uY2hlY2tSZXZpc2lvbih0ZW1wbGF0ZVNwZWMuY29tcGlsZXIpO1xuXG4gIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZvciBwcmVjb21waWxlZCB0ZW1wbGF0ZXMgd2l0aCBjb21waWxlci12ZXJzaW9uIDcgKDw0LjMuMClcbiAgY29uc3QgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3ID1cbiAgICB0ZW1wbGF0ZVNwZWMuY29tcGlsZXIgJiYgdGVtcGxhdGVTcGVjLmNvbXBpbGVyWzBdID09PSA3O1xuXG4gIGZ1bmN0aW9uIGludm9rZVBhcnRpYWxXcmFwcGVyKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgICBjb250ZXh0ID0gVXRpbHMuZXh0ZW5kKHt9LCBjb250ZXh0LCBvcHRpb25zLmhhc2gpO1xuICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIG9wdGlvbnMuaWRzWzBdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcGFydGlhbCA9IGVudi5WTS5yZXNvbHZlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpO1xuXG4gICAgbGV0IGV4dGVuZGVkT3B0aW9ucyA9IFV0aWxzLmV4dGVuZCh7fSwgb3B0aW9ucywge1xuICAgICAgaG9va3M6IHRoaXMuaG9va3MsXG4gICAgICBwcm90b0FjY2Vzc0NvbnRyb2w6IHRoaXMucHJvdG9BY2Nlc3NDb250cm9sXG4gICAgfSk7XG5cbiAgICBsZXQgcmVzdWx0ID0gZW52LlZNLmludm9rZVBhcnRpYWwuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICBwYXJ0aWFsLFxuICAgICAgY29udGV4dCxcbiAgICAgIGV4dGVuZGVkT3B0aW9uc1xuICAgICk7XG5cbiAgICBpZiAocmVzdWx0ID09IG51bGwgJiYgZW52LmNvbXBpbGUpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXSA9IGVudi5jb21waWxlKFxuICAgICAgICBwYXJ0aWFsLFxuICAgICAgICB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJPcHRpb25zLFxuICAgICAgICBlbnZcbiAgICAgICk7XG4gICAgICByZXN1bHQgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0oY29udGV4dCwgZXh0ZW5kZWRPcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5pbmRlbnQpIHtcbiAgICAgICAgbGV0IGxpbmVzID0gcmVzdWx0LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBpZiAoIWxpbmVzW2ldICYmIGkgKyAxID09PSBsKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsaW5lc1tpXSA9IG9wdGlvbnMuaW5kZW50ICsgbGluZXNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gbGluZXMuam9pbignXFxuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgICAnVGhlIHBhcnRpYWwgJyArXG4gICAgICAgICAgb3B0aW9ucy5uYW1lICtcbiAgICAgICAgICAnIGNvdWxkIG5vdCBiZSBjb21waWxlZCB3aGVuIHJ1bm5pbmcgaW4gcnVudGltZS1vbmx5IG1vZGUnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEp1c3QgYWRkIHdhdGVyXG4gIGxldCBjb250YWluZXIgPSB7XG4gICAgc3RyaWN0OiBmdW5jdGlvbihvYmosIG5hbWUsIGxvYykge1xuICAgICAgaWYgKCFvYmogfHwgIShuYW1lIGluIG9iaikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignXCInICsgbmFtZSArICdcIiBub3QgZGVmaW5lZCBpbiAnICsgb2JqLCB7XG4gICAgICAgICAgbG9jOiBsb2NcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29udGFpbmVyLmxvb2t1cFByb3BlcnR5KG9iaiwgbmFtZSk7XG4gICAgfSxcbiAgICBsb29rdXBQcm9wZXJ0eTogZnVuY3Rpb24ocGFyZW50LCBwcm9wZXJ0eU5hbWUpIHtcbiAgICAgIGxldCByZXN1bHQgPSBwYXJlbnRbcHJvcGVydHlOYW1lXTtcbiAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJlbnQsIHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdElzQWxsb3dlZChyZXN1bHQsIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wsIHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSxcbiAgICBsb29rdXA6IGZ1bmN0aW9uKGRlcHRocywgbmFtZSkge1xuICAgICAgY29uc3QgbGVuID0gZGVwdGhzLmxlbmd0aDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGRlcHRoc1tpXSAmJiBjb250YWluZXIubG9va3VwUHJvcGVydHkoZGVwdGhzW2ldLCBuYW1lKTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGRlcHRoc1tpXVtuYW1lXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbGFtYmRhOiBmdW5jdGlvbihjdXJyZW50LCBjb250ZXh0KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGN1cnJlbnQgPT09ICdmdW5jdGlvbicgPyBjdXJyZW50LmNhbGwoY29udGV4dCkgOiBjdXJyZW50O1xuICAgIH0sXG5cbiAgICBlc2NhcGVFeHByZXNzaW9uOiBVdGlscy5lc2NhcGVFeHByZXNzaW9uLFxuICAgIGludm9rZVBhcnRpYWw6IGludm9rZVBhcnRpYWxXcmFwcGVyLFxuXG4gICAgZm46IGZ1bmN0aW9uKGkpIHtcbiAgICAgIGxldCByZXQgPSB0ZW1wbGF0ZVNwZWNbaV07XG4gICAgICByZXQuZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjW2kgKyAnX2QnXTtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcblxuICAgIHByb2dyYW1zOiBbXSxcbiAgICBwcm9ncmFtOiBmdW5jdGlvbihpLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgICBsZXQgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldLFxuICAgICAgICBmbiA9IHRoaXMuZm4oaSk7XG4gICAgICBpZiAoZGF0YSB8fCBkZXB0aHMgfHwgYmxvY2tQYXJhbXMgfHwgZGVjbGFyZWRCbG9ja1BhcmFtcykge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHdyYXBQcm9ncmFtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgaSxcbiAgICAgICAgICBmbixcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGRlY2xhcmVkQmxvY2tQYXJhbXMsXG4gICAgICAgICAgYmxvY2tQYXJhbXMsXG4gICAgICAgICAgZGVwdGhzXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKCFwcm9ncmFtV3JhcHBlcikge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvZ3JhbVdyYXBwZXI7XG4gICAgfSxcblxuICAgIGRhdGE6IGZ1bmN0aW9uKHZhbHVlLCBkZXB0aCkge1xuICAgICAgd2hpbGUgKHZhbHVlICYmIGRlcHRoLS0pIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5fcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gICAgbWVyZ2VJZk5lZWRlZDogZnVuY3Rpb24ocGFyYW0sIGNvbW1vbikge1xuICAgICAgbGV0IG9iaiA9IHBhcmFtIHx8IGNvbW1vbjtcblxuICAgICAgaWYgKHBhcmFtICYmIGNvbW1vbiAmJiBwYXJhbSAhPT0gY29tbW9uKSB7XG4gICAgICAgIG9iaiA9IFV0aWxzLmV4dGVuZCh7fSwgY29tbW9uLCBwYXJhbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICAvLyBBbiBlbXB0eSBvYmplY3QgdG8gdXNlIGFzIHJlcGxhY2VtZW50IGZvciBudWxsLWNvbnRleHRzXG4gICAgbnVsbENvbnRleHQ6IE9iamVjdC5zZWFsKHt9KSxcblxuICAgIG5vb3A6IGVudi5WTS5ub29wLFxuICAgIGNvbXBpbGVySW5mbzogdGVtcGxhdGVTcGVjLmNvbXBpbGVyXG4gIH07XG5cbiAgZnVuY3Rpb24gcmV0KGNvbnRleHQsIG9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuXG4gICAgcmV0Ll9zZXR1cChvcHRpb25zKTtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCAmJiB0ZW1wbGF0ZVNwZWMudXNlRGF0YSkge1xuICAgICAgZGF0YSA9IGluaXREYXRhKGNvbnRleHQsIGRhdGEpO1xuICAgIH1cbiAgICBsZXQgZGVwdGhzLFxuICAgICAgYmxvY2tQYXJhbXMgPSB0ZW1wbGF0ZVNwZWMudXNlQmxvY2tQYXJhbXMgPyBbXSA6IHVuZGVmaW5lZDtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocykge1xuICAgICAgaWYgKG9wdGlvbnMuZGVwdGhzKSB7XG4gICAgICAgIGRlcHRocyA9XG4gICAgICAgICAgY29udGV4dCAhPSBvcHRpb25zLmRlcHRoc1swXVxuICAgICAgICAgICAgPyBbY29udGV4dF0uY29uY2F0KG9wdGlvbnMuZGVwdGhzKVxuICAgICAgICAgICAgOiBvcHRpb25zLmRlcHRocztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlcHRocyA9IFtjb250ZXh0XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWluKGNvbnRleHQgLyosIG9wdGlvbnMqLykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgJycgK1xuICAgICAgICB0ZW1wbGF0ZVNwZWMubWFpbihcbiAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBjb250YWluZXIuaGVscGVycyxcbiAgICAgICAgICBjb250YWluZXIucGFydGlhbHMsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBibG9ja1BhcmFtcyxcbiAgICAgICAgICBkZXB0aHNcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBtYWluID0gZXhlY3V0ZURlY29yYXRvcnMoXG4gICAgICB0ZW1wbGF0ZVNwZWMubWFpbixcbiAgICAgIG1haW4sXG4gICAgICBjb250YWluZXIsXG4gICAgICBvcHRpb25zLmRlcHRocyB8fCBbXSxcbiAgICAgIGRhdGEsXG4gICAgICBibG9ja1BhcmFtc1xuICAgICk7XG4gICAgcmV0dXJuIG1haW4oY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cblxuICByZXQuaXNUb3AgPSB0cnVlO1xuXG4gIHJldC5fc2V0dXAgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zLnBhcnRpYWwpIHtcbiAgICAgIGxldCBtZXJnZWRIZWxwZXJzID0gVXRpbHMuZXh0ZW5kKHt9LCBlbnYuaGVscGVycywgb3B0aW9ucy5oZWxwZXJzKTtcbiAgICAgIHdyYXBIZWxwZXJzVG9QYXNzTG9va3VwUHJvcGVydHkobWVyZ2VkSGVscGVycywgY29udGFpbmVyKTtcbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gbWVyZ2VkSGVscGVycztcblxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsKSB7XG4gICAgICAgIC8vIFVzZSBtZXJnZUlmTmVlZGVkIGhlcmUgdG8gcHJldmVudCBjb21waWxpbmcgZ2xvYmFsIHBhcnRpYWxzIG11bHRpcGxlIHRpbWVzXG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZUlmTmVlZGVkKFxuICAgICAgICAgIG9wdGlvbnMucGFydGlhbHMsXG4gICAgICAgICAgZW52LnBhcnRpYWxzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwgfHwgdGVtcGxhdGVTcGVjLnVzZURlY29yYXRvcnMpIHtcbiAgICAgICAgY29udGFpbmVyLmRlY29yYXRvcnMgPSBVdGlscy5leHRlbmQoXG4gICAgICAgICAge30sXG4gICAgICAgICAgZW52LmRlY29yYXRvcnMsXG4gICAgICAgICAgb3B0aW9ucy5kZWNvcmF0b3JzXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IHt9O1xuICAgICAgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCA9IGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbChvcHRpb25zKTtcblxuICAgICAgbGV0IGtlZXBIZWxwZXJJbkhlbHBlcnMgPVxuICAgICAgICBvcHRpb25zLmFsbG93Q2FsbHNUb0hlbHBlck1pc3NpbmcgfHxcbiAgICAgICAgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3O1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnaGVscGVyTWlzc2luZycsIGtlZXBIZWxwZXJJbkhlbHBlcnMpO1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnYmxvY2tIZWxwZXJNaXNzaW5nJywga2VlcEhlbHBlckluSGVscGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wgPSBvcHRpb25zLnByb3RvQWNjZXNzQ29udHJvbDsgLy8gaW50ZXJuYWwgb3B0aW9uXG4gICAgICBjb250YWluZXIuaGVscGVycyA9IG9wdGlvbnMuaGVscGVycztcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9wdGlvbnMucGFydGlhbHM7XG4gICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IG9wdGlvbnMuZGVjb3JhdG9ycztcbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IG9wdGlvbnMuaG9va3M7XG4gICAgfVxuICB9O1xuXG4gIHJldC5fY2hpbGQgPSBmdW5jdGlvbihpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyAmJiAhYmxvY2tQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ211c3QgcGFzcyBibG9jayBwYXJhbXMnKTtcbiAgICB9XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VEZXB0aHMgJiYgIWRlcHRocykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIHBhcmVudCBkZXB0aHMnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gd3JhcFByb2dyYW0oXG4gICAgICBjb250YWluZXIsXG4gICAgICBpLFxuICAgICAgdGVtcGxhdGVTcGVjW2ldLFxuICAgICAgZGF0YSxcbiAgICAgIDAsXG4gICAgICBibG9ja1BhcmFtcyxcbiAgICAgIGRlcHRoc1xuICAgICk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwUHJvZ3JhbShcbiAgY29udGFpbmVyLFxuICBpLFxuICBmbixcbiAgZGF0YSxcbiAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgYmxvY2tQYXJhbXMsXG4gIGRlcHRoc1xuKSB7XG4gIGZ1bmN0aW9uIHByb2coY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGN1cnJlbnREZXB0aHMgPSBkZXB0aHM7XG4gICAgaWYgKFxuICAgICAgZGVwdGhzICYmXG4gICAgICBjb250ZXh0ICE9IGRlcHRoc1swXSAmJlxuICAgICAgIShjb250ZXh0ID09PSBjb250YWluZXIubnVsbENvbnRleHQgJiYgZGVwdGhzWzBdID09PSBudWxsKVxuICAgICkge1xuICAgICAgY3VycmVudERlcHRocyA9IFtjb250ZXh0XS5jb25jYXQoZGVwdGhzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm4oXG4gICAgICBjb250YWluZXIsXG4gICAgICBjb250ZXh0LFxuICAgICAgY29udGFpbmVyLmhlbHBlcnMsXG4gICAgICBjb250YWluZXIucGFydGlhbHMsXG4gICAgICBvcHRpb25zLmRhdGEgfHwgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zICYmIFtvcHRpb25zLmJsb2NrUGFyYW1zXS5jb25jYXQoYmxvY2tQYXJhbXMpLFxuICAgICAgY3VycmVudERlcHRoc1xuICAgICk7XG4gIH1cblxuICBwcm9nID0gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcyk7XG5cbiAgcHJvZy5wcm9ncmFtID0gaTtcbiAgcHJvZy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwO1xuICBwcm9nLmJsb2NrUGFyYW1zID0gZGVjbGFyZWRCbG9ja1BhcmFtcyB8fCAwO1xuICByZXR1cm4gcHJvZztcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGN1cnJlbnRseSBwYXJ0IG9mIHRoZSBvZmZpY2lhbCBBUEksIHRoZXJlZm9yZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHNob3VsZCBub3QgYmUgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgaWYgKCFwYXJ0aWFsKSB7XG4gICAgaWYgKG9wdGlvbnMubmFtZSA9PT0gJ0BwYXJ0aWFsLWJsb2NrJykge1xuICAgICAgcGFydGlhbCA9IG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdO1xuICAgIH1cbiAgfSBlbHNlIGlmICghcGFydGlhbC5jYWxsICYmICFvcHRpb25zLm5hbWUpIHtcbiAgICAvLyBUaGlzIGlzIGEgZHluYW1pYyBwYXJ0aWFsIHRoYXQgcmV0dXJuZWQgYSBzdHJpbmdcbiAgICBvcHRpb25zLm5hbWUgPSBwYXJ0aWFsO1xuICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW3BhcnRpYWxdO1xuICB9XG4gIHJldHVybiBwYXJ0aWFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gIC8vIFVzZSB0aGUgY3VycmVudCBjbG9zdXJlIGNvbnRleHQgdG8gc2F2ZSB0aGUgcGFydGlhbC1ibG9jayBpZiB0aGlzIHBhcnRpYWxcbiAgY29uc3QgY3VycmVudFBhcnRpYWxCbG9jayA9IG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXTtcbiAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoID0gb3B0aW9ucy5pZHNbMF0gfHwgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoO1xuICB9XG5cbiAgbGV0IHBhcnRpYWxCbG9jaztcbiAgaWYgKG9wdGlvbnMuZm4gJiYgb3B0aW9ucy5mbiAhPT0gbm9vcCkge1xuICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0byBnZXQgYWNjZXNzIHRvIGN1cnJlbnRQYXJ0aWFsQmxvY2sgZnJvbSB0aGUgY2xvc3VyZVxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG4gICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBmdW5jdGlvbiBwYXJ0aWFsQmxvY2tXcmFwcGVyKFxuICAgICAgY29udGV4dCxcbiAgICAgIG9wdGlvbnMgPSB7fVxuICAgICkge1xuICAgICAgLy8gUmVzdG9yZSB0aGUgcGFydGlhbC1ibG9jayBmcm9tIHRoZSBjbG9zdXJlIGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9ja1xuICAgICAgLy8gaS5lLiB0aGUgcGFydCBpbnNpZGUgdGhlIGJsb2NrIG9mIHRoZSBwYXJ0aWFsIGNhbGwuXG4gICAgICBvcHRpb25zLmRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBjdXJyZW50UGFydGlhbEJsb2NrO1xuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH07XG4gICAgaWYgKGZuLnBhcnRpYWxzKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzID0gVXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLnBhcnRpYWxzLCBmbi5wYXJ0aWFscyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCAmJiBwYXJ0aWFsQmxvY2spIHtcbiAgICBwYXJ0aWFsID0gcGFydGlhbEJsb2NrO1xuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1RoZSBwYXJ0aWFsICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBmb3VuZCcpO1xuICB9IGVsc2UgaWYgKHBhcnRpYWwgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub29wKCkge1xuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIGluaXREYXRhKGNvbnRleHQsIGRhdGEpIHtcbiAgaWYgKCFkYXRhIHx8ICEoJ3Jvb3QnIGluIGRhdGEpKSB7XG4gICAgZGF0YSA9IGRhdGEgPyBjcmVhdGVGcmFtZShkYXRhKSA6IHt9O1xuICAgIGRhdGEucm9vdCA9IGNvbnRleHQ7XG4gIH1cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpIHtcbiAgaWYgKGZuLmRlY29yYXRvcikge1xuICAgIGxldCBwcm9wcyA9IHt9O1xuICAgIHByb2cgPSBmbi5kZWNvcmF0b3IoXG4gICAgICBwcm9nLFxuICAgICAgcHJvcHMsXG4gICAgICBjb250YWluZXIsXG4gICAgICBkZXB0aHMgJiYgZGVwdGhzWzBdLFxuICAgICAgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgZGVwdGhzXG4gICAgKTtcbiAgICBVdGlscy5leHRlbmQocHJvZywgcHJvcHMpO1xuICB9XG4gIHJldHVybiBwcm9nO1xufVxuXG5mdW5jdGlvbiB3cmFwSGVscGVyc1RvUGFzc0xvb2t1cFByb3BlcnR5KG1lcmdlZEhlbHBlcnMsIGNvbnRhaW5lcikge1xuICBPYmplY3Qua2V5cyhtZXJnZWRIZWxwZXJzKS5mb3JFYWNoKGhlbHBlck5hbWUgPT4ge1xuICAgIGxldCBoZWxwZXIgPSBtZXJnZWRIZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIG1lcmdlZEhlbHBlcnNbaGVscGVyTmFtZV0gPSBwYXNzTG9va3VwUHJvcGVydHlPcHRpb24oaGVscGVyLCBjb250YWluZXIpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFzc0xvb2t1cFByb3BlcnR5T3B0aW9uKGhlbHBlciwgY29udGFpbmVyKSB7XG4gIGNvbnN0IGxvb2t1cFByb3BlcnR5ID0gY29udGFpbmVyLmxvb2t1cFByb3BlcnR5O1xuICByZXR1cm4gd3JhcEhlbHBlcihoZWxwZXIsIG9wdGlvbnMgPT4ge1xuICAgIHJldHVybiBVdGlscy5leHRlbmQoeyBsb29rdXBQcm9wZXJ0eSB9LCBvcHRpb25zKTtcbiAgfSk7XG59XG4iXX0=\n","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n  this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n  return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#x27;',\n  '`': '&#x60;',\n  '=': '&#x3D;'\n};\n\nvar badChars = /[&<>\"'`=]/g,\n    possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n  return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n  for (var i = 1; i < arguments.length; i++) {\n    for (var key in arguments[i]) {\n      if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n        obj[key] = arguments[i][key];\n      }\n    }\n  }\n\n  return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n  return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n  exports.isFunction = isFunction = function (value) {\n    return typeof value === 'function' && toString.call(value) === '[object Function]';\n  };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n  return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n  for (var i = 0, len = array.length; i < len; i++) {\n    if (array[i] === value) {\n      return i;\n    }\n  }\n  return -1;\n}\n\nfunction escapeExpression(string) {\n  if (typeof string !== 'string') {\n    // don't escape SafeStrings, since they're already safe\n    if (string && string.toHTML) {\n      return string.toHTML();\n    } else if (string == null) {\n      return '';\n    } else if (!string) {\n      return string + '';\n    }\n\n    // Force a string conversion as this will be done by the append regardless and\n    // the regex test will do this transparently behind the scenes, causing issues if\n    // an object's to string has escaped characters in it.\n    string = '' + string;\n  }\n\n  if (!possible.test(string)) {\n    return string;\n  }\n  return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n  if (!value && value !== 0) {\n    return true;\n  } else if (isArray(value) && value.length === 0) {\n    return true;\n  } else {\n    return false;\n  }\n}\n\nfunction createFrame(object) {\n  var frame = extend({}, object);\n  frame._parent = object;\n  return frame;\n}\n\nfunction blockParams(params, ids) {\n  params.path = ids;\n  return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n  return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQzNCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRXpCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQjtBQUM1QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQU9PLFVBQVUsR0FQakIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQ0UsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLG1CQUFtQixDQUM1QztHQUNILENBQUM7Q0FDSDtRQUNRLFVBQVUsR0FBVixVQUFVOzs7OztBQUlaLElBQU0sT0FBTyxHQUNsQixLQUFLLENBQUMsT0FBTyxJQUNiLFVBQVMsS0FBSyxFQUFFO0FBQ2QsU0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxHQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUN6QyxLQUFLLENBQUM7Q0FDWCxDQUFDOzs7OztBQUdHLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUVNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxQixXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gIHBvc3NpYmxlID0gL1smPD5cIidgPV0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICApO1xuICB9O1xufVxuZXhwb3J0IHsgaXNGdW5jdGlvbiB9O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9XG4gIEFycmF5LmlzQXJyYXkgfHxcbiAgZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJ1xuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgaW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRseS5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7XG4gIGxldCBmcmFtZSA9IGV4dGVuZCh7fSwgb2JqZWN0KTtcbiAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDtcbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmxvY2tQYXJhbXMocGFyYW1zLCBpZHMpIHtcbiAgcGFyYW1zLnBhdGggPSBpZHM7XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHtcbiAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7XG59XG4iXX0=\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"<a id='\" + expando + \"' href='' disabled='disabled'></a>\" +\n\t\t\t\"<select id='\" + expando + \"-\\r\\\\' disabled='disabled'>\" +\n\t\t\t\"<option selected=''></option></select>\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, trac-12537)\n\t//   .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this\n\t\t\t.on( \"mouseenter\", fnOver )\n\t\t\t.on( \"mouseleave\", fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","/**\n * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9\n * Copyright (C) 2020 Oliver Nightingale\n * @license MIT\n */\n\n;(function(){\n\n/**\n * A convenience function for configuring and constructing\n * a new lunr Index.\n *\n * A lunr.Builder instance is created and the pipeline setup\n * with a trimmer, stop word filter and stemmer.\n *\n * This builder object is yielded to the configuration function\n * that is passed as a parameter, allowing the list of fields\n * and other builder parameters to be customised.\n *\n * All documents _must_ be added within the passed config function.\n *\n * @example\n * var idx = lunr(function () {\n *   this.field('title')\n *   this.field('body')\n *   this.ref('id')\n *\n *   documents.forEach(function (doc) {\n *     this.add(doc)\n *   }, this)\n * })\n *\n * @see {@link lunr.Builder}\n * @see {@link lunr.Pipeline}\n * @see {@link lunr.trimmer}\n * @see {@link lunr.stopWordFilter}\n * @see {@link lunr.stemmer}\n * @namespace {function} lunr\n */\nvar lunr = function (config) {\n  var builder = new lunr.Builder\n\n  builder.pipeline.add(\n    lunr.trimmer,\n    lunr.stopWordFilter,\n    lunr.stemmer\n  )\n\n  builder.searchPipeline.add(\n    lunr.stemmer\n  )\n\n  config.call(builder, builder)\n  return builder.build()\n}\n\nlunr.version = \"2.3.9\"\n/*!\n * lunr.utils\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A namespace containing utils for the rest of the lunr library\n * @namespace lunr.utils\n */\nlunr.utils = {}\n\n/**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf lunr.utils\n * @function\n */\nlunr.utils.warn = (function (global) {\n  /* eslint-disable no-console */\n  return function (message) {\n    if (global.console && console.warn) {\n      console.warn(message)\n    }\n  }\n  /* eslint-enable no-console */\n})(this)\n\n/**\n * Convert an object to a string.\n *\n * In the case of `null` and `undefined` the function returns\n * the empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {Any} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf lunr.utils\n */\nlunr.utils.asString = function (obj) {\n  if (obj === void 0 || obj === null) {\n    return \"\"\n  } else {\n    return obj.toString()\n  }\n}\n\n/**\n * Clones an object.\n *\n * Will create a copy of an existing object such that any mutations\n * on the copy cannot affect the original.\n *\n * Only shallow objects are supported, passing a nested object to this\n * function will cause a TypeError.\n *\n * Objects with primitives, and arrays of primitives are supported.\n *\n * @param {Object} obj The object to clone.\n * @return {Object} a clone of the passed object.\n * @throws {TypeError} when a nested object is passed.\n * @memberOf Utils\n */\nlunr.utils.clone = function (obj) {\n  if (obj === null || obj === undefined) {\n    return obj\n  }\n\n  var clone = Object.create(null),\n      keys = Object.keys(obj)\n\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i],\n        val = obj[key]\n\n    if (Array.isArray(val)) {\n      clone[key] = val.slice()\n      continue\n    }\n\n    if (typeof val === 'string' ||\n        typeof val === 'number' ||\n        typeof val === 'boolean') {\n      clone[key] = val\n      continue\n    }\n\n    throw new TypeError(\"clone is not deep and does not support nested objects\")\n  }\n\n  return clone\n}\nlunr.FieldRef = function (docRef, fieldName, stringValue) {\n  this.docRef = docRef\n  this.fieldName = fieldName\n  this._stringValue = stringValue\n}\n\nlunr.FieldRef.joiner = \"/\"\n\nlunr.FieldRef.fromString = function (s) {\n  var n = s.indexOf(lunr.FieldRef.joiner)\n\n  if (n === -1) {\n    throw \"malformed field ref string\"\n  }\n\n  var fieldRef = s.slice(0, n),\n      docRef = s.slice(n + 1)\n\n  return new lunr.FieldRef (docRef, fieldRef, s)\n}\n\nlunr.FieldRef.prototype.toString = function () {\n  if (this._stringValue == undefined) {\n    this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef\n  }\n\n  return this._stringValue\n}\n/*!\n * lunr.Set\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A lunr set.\n *\n * @constructor\n */\nlunr.Set = function (elements) {\n  this.elements = Object.create(null)\n\n  if (elements) {\n    this.length = elements.length\n\n    for (var i = 0; i < this.length; i++) {\n      this.elements[elements[i]] = true\n    }\n  } else {\n    this.length = 0\n  }\n}\n\n/**\n * A complete set that contains all elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.complete = {\n  intersect: function (other) {\n    return other\n  },\n\n  union: function () {\n    return this\n  },\n\n  contains: function () {\n    return true\n  }\n}\n\n/**\n * An empty set that contains no elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.empty = {\n  intersect: function () {\n    return this\n  },\n\n  union: function (other) {\n    return other\n  },\n\n  contains: function () {\n    return false\n  }\n}\n\n/**\n * Returns true if this set contains the specified object.\n *\n * @param {object} object - Object whose presence in this set is to be tested.\n * @returns {boolean} - True if this set contains the specified object.\n */\nlunr.Set.prototype.contains = function (object) {\n  return !!this.elements[object]\n}\n\n/**\n * Returns a new set containing only the elements that are present in both\n * this set and the specified set.\n *\n * @param {lunr.Set} other - set to intersect with this set.\n * @returns {lunr.Set} a new set that is the intersection of this and the specified set.\n */\n\nlunr.Set.prototype.intersect = function (other) {\n  var a, b, elements, intersection = []\n\n  if (other === lunr.Set.complete) {\n    return this\n  }\n\n  if (other === lunr.Set.empty) {\n    return other\n  }\n\n  if (this.length < other.length) {\n    a = this\n    b = other\n  } else {\n    a = other\n    b = this\n  }\n\n  elements = Object.keys(a.elements)\n\n  for (var i = 0; i < elements.length; i++) {\n    var element = elements[i]\n    if (element in b.elements) {\n      intersection.push(element)\n    }\n  }\n\n  return new lunr.Set (intersection)\n}\n\n/**\n * Returns a new set combining the elements of this and the specified set.\n *\n * @param {lunr.Set} other - set to union with this set.\n * @return {lunr.Set} a new set that is the union of this and the specified set.\n */\n\nlunr.Set.prototype.union = function (other) {\n  if (other === lunr.Set.complete) {\n    return lunr.Set.complete\n  }\n\n  if (other === lunr.Set.empty) {\n    return this\n  }\n\n  return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)))\n}\n/**\n * A function to calculate the inverse document frequency for\n * a posting. This is shared between the builder and the index\n *\n * @private\n * @param {object} posting - The posting for a given term\n * @param {number} documentCount - The total number of documents.\n */\nlunr.idf = function (posting, documentCount) {\n  var documentsWithTerm = 0\n\n  for (var fieldName in posting) {\n    if (fieldName == '_index') continue // Ignore the term index, its not a field\n    documentsWithTerm += Object.keys(posting[fieldName]).length\n  }\n\n  var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5)\n\n  return Math.log(1 + Math.abs(x))\n}\n\n/**\n * A token wraps a string representation of a token\n * as it is passed through the text processing pipeline.\n *\n * @constructor\n * @param {string} [str=''] - The string token being wrapped.\n * @param {object} [metadata={}] - Metadata associated with this token.\n */\nlunr.Token = function (str, metadata) {\n  this.str = str || \"\"\n  this.metadata = metadata || {}\n}\n\n/**\n * Returns the token string that is being wrapped by this object.\n *\n * @returns {string}\n */\nlunr.Token.prototype.toString = function () {\n  return this.str\n}\n\n/**\n * A token update function is used when updating or optionally\n * when cloning a token.\n *\n * @callback lunr.Token~updateFunction\n * @param {string} str - The string representation of the token.\n * @param {Object} metadata - All metadata associated with this token.\n */\n\n/**\n * Applies the given function to the wrapped string token.\n *\n * @example\n * token.update(function (str, metadata) {\n *   return str.toUpperCase()\n * })\n *\n * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.update = function (fn) {\n  this.str = fn(this.str, this.metadata)\n  return this\n}\n\n/**\n * Creates a clone of this token. Optionally a function can be\n * applied to the cloned token.\n *\n * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.clone = function (fn) {\n  fn = fn || function (s) { return s }\n  return new lunr.Token (fn(this.str, this.metadata), this.metadata)\n}\n/*!\n * lunr.tokenizer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A function for splitting a string into tokens ready to be inserted into\n * the search index. Uses `lunr.tokenizer.separator` to split strings, change\n * the value of this property to change how strings are split into tokens.\n *\n * This tokenizer will convert its parameter to a string by calling `toString` and\n * then will split this string on the character in `lunr.tokenizer.separator`.\n * Arrays will have their elements converted to strings and wrapped in a lunr.Token.\n *\n * Optional metadata can be passed to the tokenizer, this metadata will be cloned and\n * added as metadata to every token that is created from the object to be tokenized.\n *\n * @static\n * @param {?(string|object|object[])} obj - The object to convert into tokens\n * @param {?object} metadata - Optional metadata to associate with every token\n * @returns {lunr.Token[]}\n * @see {@link lunr.Pipeline}\n */\nlunr.tokenizer = function (obj, metadata) {\n  if (obj == null || obj == undefined) {\n    return []\n  }\n\n  if (Array.isArray(obj)) {\n    return obj.map(function (t) {\n      return new lunr.Token(\n        lunr.utils.asString(t).toLowerCase(),\n        lunr.utils.clone(metadata)\n      )\n    })\n  }\n\n  var str = obj.toString().toLowerCase(),\n      len = str.length,\n      tokens = []\n\n  for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n    var char = str.charAt(sliceEnd),\n        sliceLength = sliceEnd - sliceStart\n\n    if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) {\n\n      if (sliceLength > 0) {\n        var tokenMetadata = lunr.utils.clone(metadata) || {}\n        tokenMetadata[\"position\"] = [sliceStart, sliceLength]\n        tokenMetadata[\"index\"] = tokens.length\n\n        tokens.push(\n          new lunr.Token (\n            str.slice(sliceStart, sliceEnd),\n            tokenMetadata\n          )\n        )\n      }\n\n      sliceStart = sliceEnd + 1\n    }\n\n  }\n\n  return tokens\n}\n\n/**\n * The separator used to split a string into tokens. Override this property to change the behaviour of\n * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see lunr.tokenizer\n */\nlunr.tokenizer.separator = /[\\s\\-]+/\n/*!\n * lunr.Pipeline\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.Pipelines maintain an ordered list of functions to be applied to all\n * tokens in documents entering the search index and queries being ran against\n * the index.\n *\n * An instance of lunr.Index created with the lunr shortcut will contain a\n * pipeline with a stop word filter and an English language stemmer. Extra\n * functions can be added before or after either of these functions or these\n * default functions can be removed.\n *\n * When run the pipeline will call each function in turn, passing a token, the\n * index of that token in the original list of all tokens and finally a list of\n * all the original tokens.\n *\n * The output of functions in the pipeline will be passed to the next function\n * in the pipeline. To exclude a token from entering the index the function\n * should return undefined, the rest of the pipeline will not be called with\n * this token.\n *\n * For serialisation of pipelines to work, all functions used in an instance of\n * a pipeline should be registered with lunr.Pipeline. Registered functions can\n * then be loaded. If trying to load a serialised pipeline that uses functions\n * that are not registered an error will be thrown.\n *\n * If not planning on serialising the pipeline then registering pipeline functions\n * is not necessary.\n *\n * @constructor\n */\nlunr.Pipeline = function () {\n  this._stack = []\n}\n\nlunr.Pipeline.registeredFunctions = Object.create(null)\n\n/**\n * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token\n * string as well as all known metadata. A pipeline function can mutate the token string\n * or mutate (or add) metadata for a given token.\n *\n * A pipeline function can indicate that the passed token should be discarded by returning\n * null, undefined or an empty string. This token will not be passed to any downstream pipeline\n * functions and will not be added to the index.\n *\n * Multiple tokens can be returned by returning an array of tokens. Each token will be passed\n * to any downstream pipeline functions and all will returned tokens will be added to the index.\n *\n * Any number of pipeline functions may be chained together using a lunr.Pipeline.\n *\n * @interface lunr.PipelineFunction\n * @param {lunr.Token} token - A token from the document being processed.\n * @param {number} i - The index of this token in the complete list of tokens for this document/field.\n * @param {lunr.Token[]} tokens - All tokens for this document/field.\n * @returns {(?lunr.Token|lunr.Token[])}\n */\n\n/**\n * Register a function with the pipeline.\n *\n * Functions that are used in the pipeline should be registered if the pipeline\n * needs to be serialised, or a serialised pipeline needs to be loaded.\n *\n * Registering a function does not add it to a pipeline, functions must still be\n * added to instances of the pipeline for them to be used when running a pipeline.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @param {String} label - The label to register this function with\n */\nlunr.Pipeline.registerFunction = function (fn, label) {\n  if (label in this.registeredFunctions) {\n    lunr.utils.warn('Overwriting existing registered function: ' + label)\n  }\n\n  fn.label = label\n  lunr.Pipeline.registeredFunctions[fn.label] = fn\n}\n\n/**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @private\n */\nlunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n  var isRegistered = fn.label && (fn.label in this.registeredFunctions)\n\n  if (!isRegistered) {\n    lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\\n', fn)\n  }\n}\n\n/**\n * Loads a previously serialised pipeline.\n *\n * All functions to be loaded must already be registered with lunr.Pipeline.\n * If any function from the serialised data has not been registered then an\n * error will be thrown.\n *\n * @param {Object} serialised - The serialised pipeline to load.\n * @returns {lunr.Pipeline}\n */\nlunr.Pipeline.load = function (serialised) {\n  var pipeline = new lunr.Pipeline\n\n  serialised.forEach(function (fnName) {\n    var fn = lunr.Pipeline.registeredFunctions[fnName]\n\n    if (fn) {\n      pipeline.add(fn)\n    } else {\n      throw new Error('Cannot load unregistered function: ' + fnName)\n    }\n  })\n\n  return pipeline\n}\n\n/**\n * Adds new functions to the end of the pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.\n */\nlunr.Pipeline.prototype.add = function () {\n  var fns = Array.prototype.slice.call(arguments)\n\n  fns.forEach(function (fn) {\n    lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n    this._stack.push(fn)\n  }, this)\n}\n\n/**\n * Adds a single function after a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.after = function (existingFn, newFn) {\n  lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n  var pos = this._stack.indexOf(existingFn)\n  if (pos == -1) {\n    throw new Error('Cannot find existingFn')\n  }\n\n  pos = pos + 1\n  this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Adds a single function before a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.before = function (existingFn, newFn) {\n  lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n  var pos = this._stack.indexOf(existingFn)\n  if (pos == -1) {\n    throw new Error('Cannot find existingFn')\n  }\n\n  this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Removes a function from the pipeline.\n *\n * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.\n */\nlunr.Pipeline.prototype.remove = function (fn) {\n  var pos = this._stack.indexOf(fn)\n  if (pos == -1) {\n    return\n  }\n\n  this._stack.splice(pos, 1)\n}\n\n/**\n * Runs the current list of functions that make up the pipeline against the\n * passed tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @returns {Array}\n */\nlunr.Pipeline.prototype.run = function (tokens) {\n  var stackLength = this._stack.length\n\n  for (var i = 0; i < stackLength; i++) {\n    var fn = this._stack[i]\n    var memo = []\n\n    for (var j = 0; j < tokens.length; j++) {\n      var result = fn(tokens[j], j, tokens)\n\n      if (result === null || result === void 0 || result === '') continue\n\n      if (Array.isArray(result)) {\n        for (var k = 0; k < result.length; k++) {\n          memo.push(result[k])\n        }\n      } else {\n        memo.push(result)\n      }\n    }\n\n    tokens = memo\n  }\n\n  return tokens\n}\n\n/**\n * Convenience method for passing a string through a pipeline and getting\n * strings out. This method takes care of wrapping the passed string in a\n * token and mapping the resulting tokens back to strings.\n *\n * @param {string} str - The string to pass through the pipeline.\n * @param {?object} metadata - Optional metadata to associate with the token\n * passed to the pipeline.\n * @returns {string[]}\n */\nlunr.Pipeline.prototype.runString = function (str, metadata) {\n  var token = new lunr.Token (str, metadata)\n\n  return this.run([token]).map(function (t) {\n    return t.toString()\n  })\n}\n\n/**\n * Resets the pipeline by removing any existing processors.\n *\n */\nlunr.Pipeline.prototype.reset = function () {\n  this._stack = []\n}\n\n/**\n * Returns a representation of the pipeline ready for serialisation.\n *\n * Logs a warning if the function has not been registered.\n *\n * @returns {Array}\n */\nlunr.Pipeline.prototype.toJSON = function () {\n  return this._stack.map(function (fn) {\n    lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n\n    return fn.label\n  })\n}\n/*!\n * lunr.Vector\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A vector is used to construct the vector space of documents and queries. These\n * vectors support operations to determine the similarity between two documents or\n * a document and a query.\n *\n * Normally no parameters are required for initializing a vector, but in the case of\n * loading a previously dumped vector the raw elements can be provided to the constructor.\n *\n * For performance reasons vectors are implemented with a flat array, where an elements\n * index is immediately followed by its value. E.g. [index, value, index, value]. This\n * allows the underlying array to be as sparse as possible and still offer decent\n * performance when being used for vector calculations.\n *\n * @constructor\n * @param {Number[]} [elements] - The flat list of element index and element value pairs.\n */\nlunr.Vector = function (elements) {\n  this._magnitude = 0\n  this.elements = elements || []\n}\n\n\n/**\n * Calculates the position within the vector to insert a given index.\n *\n * This is used internally by insert and upsert. If there are duplicate indexes then\n * the position is returned as if the value for that index were to be updated, but it\n * is the callers responsibility to check whether there is a duplicate at that index\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @returns {Number}\n */\nlunr.Vector.prototype.positionForIndex = function (index) {\n  // For an empty vector the tuple can be inserted at the beginning\n  if (this.elements.length == 0) {\n    return 0\n  }\n\n  var start = 0,\n      end = this.elements.length / 2,\n      sliceLength = end - start,\n      pivotPoint = Math.floor(sliceLength / 2),\n      pivotIndex = this.elements[pivotPoint * 2]\n\n  while (sliceLength > 1) {\n    if (pivotIndex < index) {\n      start = pivotPoint\n    }\n\n    if (pivotIndex > index) {\n      end = pivotPoint\n    }\n\n    if (pivotIndex == index) {\n      break\n    }\n\n    sliceLength = end - start\n    pivotPoint = start + Math.floor(sliceLength / 2)\n    pivotIndex = this.elements[pivotPoint * 2]\n  }\n\n  if (pivotIndex == index) {\n    return pivotPoint * 2\n  }\n\n  if (pivotIndex > index) {\n    return pivotPoint * 2\n  }\n\n  if (pivotIndex < index) {\n    return (pivotPoint + 1) * 2\n  }\n}\n\n/**\n * Inserts an element at an index within the vector.\n *\n * Does not allow duplicates, will throw an error if there is already an entry\n * for this index.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n */\nlunr.Vector.prototype.insert = function (insertIdx, val) {\n  this.upsert(insertIdx, val, function () {\n    throw \"duplicate index\"\n  })\n}\n\n/**\n * Inserts or updates an existing index within the vector.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n * @param {function} fn - A function that is called for updates, the existing value and the\n * requested value are passed as arguments\n */\nlunr.Vector.prototype.upsert = function (insertIdx, val, fn) {\n  this._magnitude = 0\n  var position = this.positionForIndex(insertIdx)\n\n  if (this.elements[position] == insertIdx) {\n    this.elements[position + 1] = fn(this.elements[position + 1], val)\n  } else {\n    this.elements.splice(position, 0, insertIdx, val)\n  }\n}\n\n/**\n * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n */\nlunr.Vector.prototype.magnitude = function () {\n  if (this._magnitude) return this._magnitude\n\n  var sumOfSquares = 0,\n      elementsLength = this.elements.length\n\n  for (var i = 1; i < elementsLength; i += 2) {\n    var val = this.elements[i]\n    sumOfSquares += val * val\n  }\n\n  return this._magnitude = Math.sqrt(sumOfSquares)\n}\n\n/**\n * Calculates the dot product of this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The vector to compute the dot product with.\n * @returns {Number}\n */\nlunr.Vector.prototype.dot = function (otherVector) {\n  var dotProduct = 0,\n      a = this.elements, b = otherVector.elements,\n      aLen = a.length, bLen = b.length,\n      aVal = 0, bVal = 0,\n      i = 0, j = 0\n\n  while (i < aLen && j < bLen) {\n    aVal = a[i], bVal = b[j]\n    if (aVal < bVal) {\n      i += 2\n    } else if (aVal > bVal) {\n      j += 2\n    } else if (aVal == bVal) {\n      dotProduct += a[i + 1] * b[j + 1]\n      i += 2\n      j += 2\n    }\n  }\n\n  return dotProduct\n}\n\n/**\n * Calculates the similarity between this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The other vector to calculate the\n * similarity with.\n * @returns {Number}\n */\nlunr.Vector.prototype.similarity = function (otherVector) {\n  return this.dot(otherVector) / this.magnitude() || 0\n}\n\n/**\n * Converts the vector to an array of the elements within the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toArray = function () {\n  var output = new Array (this.elements.length / 2)\n\n  for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {\n    output[j] = this.elements[i]\n  }\n\n  return output\n}\n\n/**\n * A JSON serializable representation of the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toJSON = function () {\n  return this.elements\n}\n/* eslint-disable */\n/*!\n * lunr.stemmer\n * Copyright (C) 2020 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n/**\n * lunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token - The string to stem\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n * @function\n */\nlunr.stemmer = (function(){\n  var step2list = {\n      \"ational\" : \"ate\",\n      \"tional\" : \"tion\",\n      \"enci\" : \"ence\",\n      \"anci\" : \"ance\",\n      \"izer\" : \"ize\",\n      \"bli\" : \"ble\",\n      \"alli\" : \"al\",\n      \"entli\" : \"ent\",\n      \"eli\" : \"e\",\n      \"ousli\" : \"ous\",\n      \"ization\" : \"ize\",\n      \"ation\" : \"ate\",\n      \"ator\" : \"ate\",\n      \"alism\" : \"al\",\n      \"iveness\" : \"ive\",\n      \"fulness\" : \"ful\",\n      \"ousness\" : \"ous\",\n      \"aliti\" : \"al\",\n      \"iviti\" : \"ive\",\n      \"biliti\" : \"ble\",\n      \"logi\" : \"log\"\n    },\n\n    step3list = {\n      \"icate\" : \"ic\",\n      \"ative\" : \"\",\n      \"alize\" : \"al\",\n      \"iciti\" : \"ic\",\n      \"ical\" : \"ic\",\n      \"ful\" : \"\",\n      \"ness\" : \"\"\n    },\n\n    c = \"[^aeiou]\",          // consonant\n    v = \"[aeiouy]\",          // vowel\n    C = c + \"[^aeiouy]*\",    // consonant sequence\n    V = v + \"[aeiou]*\",      // vowel sequence\n\n    mgr0 = \"^(\" + C + \")?\" + V + C,               // [C]VC... is m>0\n    meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\",  // [C]VC[V] is m=1\n    mgr1 = \"^(\" + C + \")?\" + V + C + V + C,       // [C]VCVC... is m>1\n    s_v = \"^(\" + C + \")?\" + v;                   // vowel in stem\n\n  var re_mgr0 = new RegExp(mgr0);\n  var re_mgr1 = new RegExp(mgr1);\n  var re_meq1 = new RegExp(meq1);\n  var re_s_v = new RegExp(s_v);\n\n  var re_1a = /^(.+?)(ss|i)es$/;\n  var re2_1a = /^(.+?)([^s])s$/;\n  var re_1b = /^(.+?)eed$/;\n  var re2_1b = /^(.+?)(ed|ing)$/;\n  var re_1b_2 = /.$/;\n  var re2_1b_2 = /(at|bl|iz)$/;\n  var re3_1b_2 = new RegExp(\"([^aeiouylsz])\\\\1$\");\n  var re4_1b_2 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n  var re_1c = /^(.+?[^aeiou])y$/;\n  var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n\n  var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n\n  var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n  var re2_4 = /^(.+?)(s|t)(ion)$/;\n\n  var re_5 = /^(.+?)e$/;\n  var re_5_1 = /ll$/;\n  var re3_5 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n  var porterStemmer = function porterStemmer(w) {\n    var stem,\n      suffix,\n      firstch,\n      re,\n      re2,\n      re3,\n      re4;\n\n    if (w.length < 3) { return w; }\n\n    firstch = w.substr(0,1);\n    if (firstch == \"y\") {\n      w = firstch.toUpperCase() + w.substr(1);\n    }\n\n    // Step 1a\n    re = re_1a\n    re2 = re2_1a;\n\n    if (re.test(w)) { w = w.replace(re,\"$1$2\"); }\n    else if (re2.test(w)) { w = w.replace(re2,\"$1$2\"); }\n\n    // Step 1b\n    re = re_1b;\n    re2 = re2_1b;\n    if (re.test(w)) {\n      var fp = re.exec(w);\n      re = re_mgr0;\n      if (re.test(fp[1])) {\n        re = re_1b_2;\n        w = w.replace(re,\"\");\n      }\n    } else if (re2.test(w)) {\n      var fp = re2.exec(w);\n      stem = fp[1];\n      re2 = re_s_v;\n      if (re2.test(stem)) {\n        w = stem;\n        re2 = re2_1b_2;\n        re3 = re3_1b_2;\n        re4 = re4_1b_2;\n        if (re2.test(w)) { w = w + \"e\"; }\n        else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,\"\"); }\n        else if (re4.test(w)) { w = w + \"e\"; }\n      }\n    }\n\n    // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)\n    re = re_1c;\n    if (re.test(w)) {\n      var fp = re.exec(w);\n      stem = fp[1];\n      w = stem + \"i\";\n    }\n\n    // Step 2\n    re = re_2;\n    if (re.test(w)) {\n      var fp = re.exec(w);\n      stem = fp[1];\n      suffix = fp[2];\n      re = re_mgr0;\n      if (re.test(stem)) {\n        w = stem + step2list[suffix];\n      }\n    }\n\n    // Step 3\n    re = re_3;\n    if (re.test(w)) {\n      var fp = re.exec(w);\n      stem = fp[1];\n      suffix = fp[2];\n      re = re_mgr0;\n      if (re.test(stem)) {\n        w = stem + step3list[suffix];\n      }\n    }\n\n    // Step 4\n    re = re_4;\n    re2 = re2_4;\n    if (re.test(w)) {\n      var fp = re.exec(w);\n      stem = fp[1];\n      re = re_mgr1;\n      if (re.test(stem)) {\n        w = stem;\n      }\n    } else if (re2.test(w)) {\n      var fp = re2.exec(w);\n      stem = fp[1] + fp[2];\n      re2 = re_mgr1;\n      if (re2.test(stem)) {\n        w = stem;\n      }\n    }\n\n    // Step 5\n    re = re_5;\n    if (re.test(w)) {\n      var fp = re.exec(w);\n      stem = fp[1];\n      re = re_mgr1;\n      re2 = re_meq1;\n      re3 = re3_5;\n      if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {\n        w = stem;\n      }\n    }\n\n    re = re_5_1;\n    re2 = re_mgr1;\n    if (re.test(w) && re2.test(w)) {\n      re = re_1b_2;\n      w = w.replace(re,\"\");\n    }\n\n    // and turn initial Y back to y\n\n    if (firstch == \"y\") {\n      w = firstch.toLowerCase() + w.substr(1);\n    }\n\n    return w;\n  };\n\n  return function (token) {\n    return token.update(porterStemmer);\n  }\n})();\n\nlunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')\n/*!\n * lunr.stopWordFilter\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.generateStopWordFilter builds a stopWordFilter function from the provided\n * list of stop words.\n *\n * The built in lunr.stopWordFilter is built using this generator and can be used\n * to generate custom stopWordFilters for applications or non English languages.\n *\n * @function\n * @param {Array} token The token to pass through the filter\n * @returns {lunr.PipelineFunction}\n * @see lunr.Pipeline\n * @see lunr.stopWordFilter\n */\nlunr.generateStopWordFilter = function (stopWords) {\n  var words = stopWords.reduce(function (memo, stopWord) {\n    memo[stopWord] = stopWord\n    return memo\n  }, {})\n\n  return function (token) {\n    if (token && words[token.toString()] !== token.toString()) return token\n  }\n}\n\n/**\n * lunr.stopWordFilter is an English language stop word list filter, any words\n * contained in the list will not be passed through the filter.\n *\n * This is intended to be used in the Pipeline. If the token does not pass the\n * filter then undefined will be returned.\n *\n * @function\n * @implements {lunr.PipelineFunction}\n * @params {lunr.Token} token - A token to check for being a stop word.\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n */\nlunr.stopWordFilter = lunr.generateStopWordFilter([\n  'a',\n  'able',\n  'about',\n  'across',\n  'after',\n  'all',\n  'almost',\n  'also',\n  'am',\n  'among',\n  'an',\n  'and',\n  'any',\n  'are',\n  'as',\n  'at',\n  'be',\n  'because',\n  'been',\n  'but',\n  'by',\n  'can',\n  'cannot',\n  'could',\n  'dear',\n  'did',\n  'do',\n  'does',\n  'either',\n  'else',\n  'ever',\n  'every',\n  'for',\n  'from',\n  'get',\n  'got',\n  'had',\n  'has',\n  'have',\n  'he',\n  'her',\n  'hers',\n  'him',\n  'his',\n  'how',\n  'however',\n  'i',\n  'if',\n  'in',\n  'into',\n  'is',\n  'it',\n  'its',\n  'just',\n  'least',\n  'let',\n  'like',\n  'likely',\n  'may',\n  'me',\n  'might',\n  'most',\n  'must',\n  'my',\n  'neither',\n  'no',\n  'nor',\n  'not',\n  'of',\n  'off',\n  'often',\n  'on',\n  'only',\n  'or',\n  'other',\n  'our',\n  'own',\n  'rather',\n  'said',\n  'say',\n  'says',\n  'she',\n  'should',\n  'since',\n  'so',\n  'some',\n  'than',\n  'that',\n  'the',\n  'their',\n  'them',\n  'then',\n  'there',\n  'these',\n  'they',\n  'this',\n  'tis',\n  'to',\n  'too',\n  'twas',\n  'us',\n  'wants',\n  'was',\n  'we',\n  'were',\n  'what',\n  'when',\n  'where',\n  'which',\n  'while',\n  'who',\n  'whom',\n  'why',\n  'will',\n  'with',\n  'would',\n  'yet',\n  'you',\n  'your'\n])\n\nlunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')\n/*!\n * lunr.trimmer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.trimmer is a pipeline function for trimming non word\n * characters from the beginning and end of tokens before they\n * enter the index.\n *\n * This implementation may not work correctly for non latin\n * characters and should either be removed or adapted for use\n * with languages with non-latin characters.\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token The token to pass through the filter\n * @returns {lunr.Token}\n * @see lunr.Pipeline\n */\nlunr.trimmer = function (token) {\n  return token.update(function (s) {\n    return s.replace(/^\\W+/, '').replace(/\\W+$/, '')\n  })\n}\n\nlunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')\n/*!\n * lunr.TokenSet\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A token set is used to store the unique list of all tokens\n * within an index. Token sets are also used to represent an\n * incoming query to the index, this query token set and index\n * token set are then intersected to find which tokens to look\n * up in the inverted index.\n *\n * A token set can hold multiple tokens, as in the case of the\n * index token set, or it can hold a single token as in the\n * case of a simple query token set.\n *\n * Additionally token sets are used to perform wildcard matching.\n * Leading, contained and trailing wildcards are supported, and\n * from this edit distance matching can also be provided.\n *\n * Token sets are implemented as a minimal finite state automata,\n * where both common prefixes and suffixes are shared between tokens.\n * This helps to reduce the space used for storing the token set.\n *\n * @constructor\n */\nlunr.TokenSet = function () {\n  this.final = false\n  this.edges = {}\n  this.id = lunr.TokenSet._nextId\n  lunr.TokenSet._nextId += 1\n}\n\n/**\n * Keeps track of the next, auto increment, identifier to assign\n * to a new tokenSet.\n *\n * TokenSets require a unique identifier to be correctly minimised.\n *\n * @private\n */\nlunr.TokenSet._nextId = 1\n\n/**\n * Creates a TokenSet instance from the given sorted array of words.\n *\n * @param {String[]} arr - A sorted array of strings to create the set from.\n * @returns {lunr.TokenSet}\n * @throws Will throw an error if the input array is not sorted.\n */\nlunr.TokenSet.fromArray = function (arr) {\n  var builder = new lunr.TokenSet.Builder\n\n  for (var i = 0, len = arr.length; i < len; i++) {\n    builder.insert(arr[i])\n  }\n\n  builder.finish()\n  return builder.root\n}\n\n/**\n * Creates a token set from a query clause.\n *\n * @private\n * @param {Object} clause - A single clause from lunr.Query.\n * @param {string} clause.term - The query clause term.\n * @param {number} [clause.editDistance] - The optional edit distance for the term.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromClause = function (clause) {\n  if ('editDistance' in clause) {\n    return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance)\n  } else {\n    return lunr.TokenSet.fromString(clause.term)\n  }\n}\n\n/**\n * Creates a token set representing a single string with a specified\n * edit distance.\n *\n * Insertions, deletions, substitutions and transpositions are each\n * treated as an edit distance of 1.\n *\n * Increasing the allowed edit distance will have a dramatic impact\n * on the performance of both creating and intersecting these TokenSets.\n * It is advised to keep the edit distance less than 3.\n *\n * @param {string} str - The string to create the token set from.\n * @param {number} editDistance - The allowed edit distance to match.\n * @returns {lunr.Vector}\n */\nlunr.TokenSet.fromFuzzyString = function (str, editDistance) {\n  var root = new lunr.TokenSet\n\n  var stack = [{\n    node: root,\n    editsRemaining: editDistance,\n    str: str\n  }]\n\n  while (stack.length) {\n    var frame = stack.pop()\n\n    // no edit\n    if (frame.str.length > 0) {\n      var char = frame.str.charAt(0),\n          noEditNode\n\n      if (char in frame.node.edges) {\n        noEditNode = frame.node.edges[char]\n      } else {\n        noEditNode = new lunr.TokenSet\n        frame.node.edges[char] = noEditNode\n      }\n\n      if (frame.str.length == 1) {\n        noEditNode.final = true\n      }\n\n      stack.push({\n        node: noEditNode,\n        editsRemaining: frame.editsRemaining,\n        str: frame.str.slice(1)\n      })\n    }\n\n    if (frame.editsRemaining == 0) {\n      continue\n    }\n\n    // insertion\n    if (\"*\" in frame.node.edges) {\n      var insertionNode = frame.node.edges[\"*\"]\n    } else {\n      var insertionNode = new lunr.TokenSet\n      frame.node.edges[\"*\"] = insertionNode\n    }\n\n    if (frame.str.length == 0) {\n      insertionNode.final = true\n    }\n\n    stack.push({\n      node: insertionNode,\n      editsRemaining: frame.editsRemaining - 1,\n      str: frame.str\n    })\n\n    // deletion\n    // can only do a deletion if we have enough edits remaining\n    // and if there are characters left to delete in the string\n    if (frame.str.length > 1) {\n      stack.push({\n        node: frame.node,\n        editsRemaining: frame.editsRemaining - 1,\n        str: frame.str.slice(1)\n      })\n    }\n\n    // deletion\n    // just removing the last character from the str\n    if (frame.str.length == 1) {\n      frame.node.final = true\n    }\n\n    // substitution\n    // can only do a substitution if we have enough edits remaining\n    // and if there are characters left to substitute\n    if (frame.str.length >= 1) {\n      if (\"*\" in frame.node.edges) {\n        var substitutionNode = frame.node.edges[\"*\"]\n      } else {\n        var substitutionNode = new lunr.TokenSet\n        frame.node.edges[\"*\"] = substitutionNode\n      }\n\n      if (frame.str.length == 1) {\n        substitutionNode.final = true\n      }\n\n      stack.push({\n        node: substitutionNode,\n        editsRemaining: frame.editsRemaining - 1,\n        str: frame.str.slice(1)\n      })\n    }\n\n    // transposition\n    // can only do a transposition if there are edits remaining\n    // and there are enough characters to transpose\n    if (frame.str.length > 1) {\n      var charA = frame.str.charAt(0),\n          charB = frame.str.charAt(1),\n          transposeNode\n\n      if (charB in frame.node.edges) {\n        transposeNode = frame.node.edges[charB]\n      } else {\n        transposeNode = new lunr.TokenSet\n        frame.node.edges[charB] = transposeNode\n      }\n\n      if (frame.str.length == 1) {\n        transposeNode.final = true\n      }\n\n      stack.push({\n        node: transposeNode,\n        editsRemaining: frame.editsRemaining - 1,\n        str: charA + frame.str.slice(2)\n      })\n    }\n  }\n\n  return root\n}\n\n/**\n * Creates a TokenSet from a string.\n *\n * The string may contain one or more wildcard characters (*)\n * that will allow wildcard matching when intersecting with\n * another TokenSet.\n *\n * @param {string} str - The string to create a TokenSet from.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromString = function (str) {\n  var node = new lunr.TokenSet,\n      root = node\n\n  /*\n   * Iterates through all characters within the passed string\n   * appending a node for each character.\n   *\n   * When a wildcard character is found then a self\n   * referencing edge is introduced to continually match\n   * any number of any characters.\n   */\n  for (var i = 0, len = str.length; i < len; i++) {\n    var char = str[i],\n        final = (i == len - 1)\n\n    if (char == \"*\") {\n      node.edges[char] = node\n      node.final = final\n\n    } else {\n      var next = new lunr.TokenSet\n      next.final = final\n\n      node.edges[char] = next\n      node = next\n    }\n  }\n\n  return root\n}\n\n/**\n * Converts this TokenSet into an array of strings\n * contained within the TokenSet.\n *\n * This is not intended to be used on a TokenSet that\n * contains wildcards, in these cases the results are\n * undefined and are likely to cause an infinite loop.\n *\n * @returns {string[]}\n */\nlunr.TokenSet.prototype.toArray = function () {\n  var words = []\n\n  var stack = [{\n    prefix: \"\",\n    node: this\n  }]\n\n  while (stack.length) {\n    var frame = stack.pop(),\n        edges = Object.keys(frame.node.edges),\n        len = edges.length\n\n    if (frame.node.final) {\n      /* In Safari, at this point the prefix is sometimes corrupted, see:\n       * https://github.com/olivernn/lunr.js/issues/279 Calling any\n       * String.prototype method forces Safari to \"cast\" this string to what\n       * it's supposed to be, fixing the bug. */\n      frame.prefix.charAt(0)\n      words.push(frame.prefix)\n    }\n\n    for (var i = 0; i < len; i++) {\n      var edge = edges[i]\n\n      stack.push({\n        prefix: frame.prefix.concat(edge),\n        node: frame.node.edges[edge]\n      })\n    }\n  }\n\n  return words\n}\n\n/**\n * Generates a string representation of a TokenSet.\n *\n * This is intended to allow TokenSets to be used as keys\n * in objects, largely to aid the construction and minimisation\n * of a TokenSet. As such it is not designed to be a human\n * friendly representation of the TokenSet.\n *\n * @returns {string}\n */\nlunr.TokenSet.prototype.toString = function () {\n  // NOTE: Using Object.keys here as this.edges is very likely\n  // to enter 'hash-mode' with many keys being added\n  //\n  // avoiding a for-in loop here as it leads to the function\n  // being de-optimised (at least in V8). From some simple\n  // benchmarks the performance is comparable, but allowing\n  // V8 to optimize may mean easy performance wins in the future.\n\n  if (this._str) {\n    return this._str\n  }\n\n  var str = this.final ? '1' : '0',\n      labels = Object.keys(this.edges).sort(),\n      len = labels.length\n\n  for (var i = 0; i < len; i++) {\n    var label = labels[i],\n        node = this.edges[label]\n\n    str = str + label + node.id\n  }\n\n  return str\n}\n\n/**\n * Returns a new TokenSet that is the intersection of\n * this TokenSet and the passed TokenSet.\n *\n * This intersection will take into account any wildcards\n * contained within the TokenSet.\n *\n * @param {lunr.TokenSet} b - An other TokenSet to intersect with.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.prototype.intersect = function (b) {\n  var output = new lunr.TokenSet,\n      frame = undefined\n\n  var stack = [{\n    qNode: b,\n    output: output,\n    node: this\n  }]\n\n  while (stack.length) {\n    frame = stack.pop()\n\n    // NOTE: As with the #toString method, we are using\n    // Object.keys and a for loop instead of a for-in loop\n    // as both of these objects enter 'hash' mode, causing\n    // the function to be de-optimised in V8\n    var qEdges = Object.keys(frame.qNode.edges),\n        qLen = qEdges.length,\n        nEdges = Object.keys(frame.node.edges),\n        nLen = nEdges.length\n\n    for (var q = 0; q < qLen; q++) {\n      var qEdge = qEdges[q]\n\n      for (var n = 0; n < nLen; n++) {\n        var nEdge = nEdges[n]\n\n        if (nEdge == qEdge || qEdge == '*') {\n          var node = frame.node.edges[nEdge],\n              qNode = frame.qNode.edges[qEdge],\n              final = node.final && qNode.final,\n              next = undefined\n\n          if (nEdge in frame.output.edges) {\n            // an edge already exists for this character\n            // no need to create a new node, just set the finality\n            // bit unless this node is already final\n            next = frame.output.edges[nEdge]\n            next.final = next.final || final\n\n          } else {\n            // no edge exists yet, must create one\n            // set the finality bit and insert it\n            // into the output\n            next = new lunr.TokenSet\n            next.final = final\n            frame.output.edges[nEdge] = next\n          }\n\n          stack.push({\n            qNode: qNode,\n            output: next,\n            node: node\n          })\n        }\n      }\n    }\n  }\n\n  return output\n}\nlunr.TokenSet.Builder = function () {\n  this.previousWord = \"\"\n  this.root = new lunr.TokenSet\n  this.uncheckedNodes = []\n  this.minimizedNodes = {}\n}\n\nlunr.TokenSet.Builder.prototype.insert = function (word) {\n  var node,\n      commonPrefix = 0\n\n  if (word < this.previousWord) {\n    throw new Error (\"Out of order word insertion\")\n  }\n\n  for (var i = 0; i < word.length && i < this.previousWord.length; i++) {\n    if (word[i] != this.previousWord[i]) break\n    commonPrefix++\n  }\n\n  this.minimize(commonPrefix)\n\n  if (this.uncheckedNodes.length == 0) {\n    node = this.root\n  } else {\n    node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child\n  }\n\n  for (var i = commonPrefix; i < word.length; i++) {\n    var nextNode = new lunr.TokenSet,\n        char = word[i]\n\n    node.edges[char] = nextNode\n\n    this.uncheckedNodes.push({\n      parent: node,\n      char: char,\n      child: nextNode\n    })\n\n    node = nextNode\n  }\n\n  node.final = true\n  this.previousWord = word\n}\n\nlunr.TokenSet.Builder.prototype.finish = function () {\n  this.minimize(0)\n}\n\nlunr.TokenSet.Builder.prototype.minimize = function (downTo) {\n  for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {\n    var node = this.uncheckedNodes[i],\n        childKey = node.child.toString()\n\n    if (childKey in this.minimizedNodes) {\n      node.parent.edges[node.char] = this.minimizedNodes[childKey]\n    } else {\n      // Cache the key for this node since\n      // we know it can't change anymore\n      node.child._str = childKey\n\n      this.minimizedNodes[childKey] = node.child\n    }\n\n    this.uncheckedNodes.pop()\n  }\n}\n/*!\n * lunr.Index\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * An index contains the built index of all documents and provides a query interface\n * to the index.\n *\n * Usually instances of lunr.Index will not be created using this constructor, instead\n * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be\n * used to load previously built and serialized indexes.\n *\n * @constructor\n * @param {Object} attrs - The attributes of the built search index.\n * @param {Object} attrs.invertedIndex - An index of term/field to document reference.\n * @param {Object<string, lunr.Vector>} attrs.fieldVectors - Field vectors\n * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.\n * @param {string[]} attrs.fields - The names of indexed document fields.\n * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.\n */\nlunr.Index = function (attrs) {\n  this.invertedIndex = attrs.invertedIndex\n  this.fieldVectors = attrs.fieldVectors\n  this.tokenSet = attrs.tokenSet\n  this.fields = attrs.fields\n  this.pipeline = attrs.pipeline\n}\n\n/**\n * A result contains details of a document matching a search query.\n * @typedef {Object} lunr.Index~Result\n * @property {string} ref - The reference of the document this result represents.\n * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.\n * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.\n */\n\n/**\n * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple\n * query language which itself is parsed into an instance of lunr.Query.\n *\n * For programmatically building queries it is advised to directly use lunr.Query, the query language\n * is best used for human entered text rather than program generated text.\n *\n * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported\n * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'\n * or 'world', though those that contain both will rank higher in the results.\n *\n * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can\n * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding\n * wildcards will increase the number of documents that will be found but can also have a negative\n * impact on query performance, especially with wildcards at the beginning of a term.\n *\n * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term\n * hello in the title field will match this query. Using a field not present in the index will lead\n * to an error being thrown.\n *\n * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term\n * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported\n * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.\n * Avoid large values for edit distance to improve query performance.\n *\n * Each term also supports a presence modifier. By default a term's presence in document is optional, however\n * this can be changed to either required or prohibited. For a term's presence to be required in a document the\n * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and\n * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not\n * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.\n *\n * To escape special characters the backslash character '\\' can be used, this allows searches to include\n * characters that would normally be considered modifiers, e.g. `foo\\~2` will search for a term \"foo~2\" instead\n * of attempting to apply a boost of 2 to the search term \"foo\".\n *\n * @typedef {string} lunr.Index~QueryString\n * @example <caption>Simple single term query</caption>\n * hello\n * @example <caption>Multiple term query</caption>\n * hello world\n * @example <caption>term scoped to a field</caption>\n * title:hello\n * @example <caption>term with a boost of 10</caption>\n * hello^10\n * @example <caption>term with an edit distance of 2</caption>\n * hello~2\n * @example <caption>terms with presence modifiers</caption>\n * -foo +bar baz\n */\n\n/**\n * Performs a search against the index using lunr query syntax.\n *\n * Results will be returned sorted by their score, the most relevant results\n * will be returned first.  For details on how the score is calculated, please see\n * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.\n *\n * For more programmatic querying use lunr.Index#query.\n *\n * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.\n * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.search = function (queryString) {\n  return this.query(function (query) {\n    var parser = new lunr.QueryParser(queryString, query)\n    parser.parse()\n  })\n}\n\n/**\n * A query builder callback provides a query object to be used to express\n * the query to perform on the index.\n *\n * @callback lunr.Index~queryBuilder\n * @param {lunr.Query} query - The query object to build up.\n * @this lunr.Query\n */\n\n/**\n * Performs a query against the index using the yielded lunr.Query object.\n *\n * If performing programmatic queries against the index, this method is preferred\n * over lunr.Index#search so as to avoid the additional query parsing overhead.\n *\n * A query object is yielded to the supplied function which should be used to\n * express the query to be run against the index.\n *\n * Note that although this function takes a callback parameter it is _not_ an\n * asynchronous operation, the callback is just yielded a query object to be\n * customized.\n *\n * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.query = function (fn) {\n  // for each query clause\n  // * process terms\n  // * expand terms from token set\n  // * find matching documents and metadata\n  // * get document vectors\n  // * score documents\n\n  var query = new lunr.Query(this.fields),\n      matchingFields = Object.create(null),\n      queryVectors = Object.create(null),\n      termFieldCache = Object.create(null),\n      requiredMatches = Object.create(null),\n      prohibitedMatches = Object.create(null)\n\n  /*\n   * To support field level boosts a query vector is created per\n   * field. An empty vector is eagerly created to support negated\n   * queries.\n   */\n  for (var i = 0; i < this.fields.length; i++) {\n    queryVectors[this.fields[i]] = new lunr.Vector\n  }\n\n  fn.call(query, query)\n\n  for (var i = 0; i < query.clauses.length; i++) {\n    /*\n     * Unless the pipeline has been disabled for this term, which is\n     * the case for terms with wildcards, we need to pass the clause\n     * term through the search pipeline. A pipeline returns an array\n     * of processed terms. Pipeline functions may expand the passed\n     * term, which means we may end up performing multiple index lookups\n     * for a single query term.\n     */\n    var clause = query.clauses[i],\n        terms = null,\n        clauseMatches = lunr.Set.empty\n\n    if (clause.usePipeline) {\n      terms = this.pipeline.runString(clause.term, {\n        fields: clause.fields\n      })\n    } else {\n      terms = [clause.term]\n    }\n\n    for (var m = 0; m < terms.length; m++) {\n      var term = terms[m]\n\n      /*\n       * Each term returned from the pipeline needs to use the same query\n       * clause object, e.g. the same boost and or edit distance. The\n       * simplest way to do this is to re-use the clause object but mutate\n       * its term property.\n       */\n      clause.term = term\n\n      /*\n       * From the term in the clause we create a token set which will then\n       * be used to intersect the indexes token set to get a list of terms\n       * to lookup in the inverted index\n       */\n      var termTokenSet = lunr.TokenSet.fromClause(clause),\n          expandedTerms = this.tokenSet.intersect(termTokenSet).toArray()\n\n      /*\n       * If a term marked as required does not exist in the tokenSet it is\n       * impossible for the search to return any matches. We set all the field\n       * scoped required matches set to empty and stop examining any further\n       * clauses.\n       */\n      if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {\n        for (var k = 0; k < clause.fields.length; k++) {\n          var field = clause.fields[k]\n          requiredMatches[field] = lunr.Set.empty\n        }\n\n        break\n      }\n\n      for (var j = 0; j < expandedTerms.length; j++) {\n        /*\n         * For each term get the posting and termIndex, this is required for\n         * building the query vector.\n         */\n        var expandedTerm = expandedTerms[j],\n            posting = this.invertedIndex[expandedTerm],\n            termIndex = posting._index\n\n        for (var k = 0; k < clause.fields.length; k++) {\n          /*\n           * For each field that this query term is scoped by (by default\n           * all fields are in scope) we need to get all the document refs\n           * that have this term in that field.\n           *\n           * The posting is the entry in the invertedIndex for the matching\n           * term from above.\n           */\n          var field = clause.fields[k],\n              fieldPosting = posting[field],\n              matchingDocumentRefs = Object.keys(fieldPosting),\n              termField = expandedTerm + \"/\" + field,\n              matchingDocumentsSet = new lunr.Set(matchingDocumentRefs)\n\n          /*\n           * if the presence of this term is required ensure that the matching\n           * documents are added to the set of required matches for this clause.\n           *\n           */\n          if (clause.presence == lunr.Query.presence.REQUIRED) {\n            clauseMatches = clauseMatches.union(matchingDocumentsSet)\n\n            if (requiredMatches[field] === undefined) {\n              requiredMatches[field] = lunr.Set.complete\n            }\n          }\n\n          /*\n           * if the presence of this term is prohibited ensure that the matching\n           * documents are added to the set of prohibited matches for this field,\n           * creating that set if it does not yet exist.\n           */\n          if (clause.presence == lunr.Query.presence.PROHIBITED) {\n            if (prohibitedMatches[field] === undefined) {\n              prohibitedMatches[field] = lunr.Set.empty\n            }\n\n            prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet)\n\n            /*\n             * Prohibited matches should not be part of the query vector used for\n             * similarity scoring and no metadata should be extracted so we continue\n             * to the next field\n             */\n            continue\n          }\n\n          /*\n           * The query field vector is populated using the termIndex found for\n           * the term and a unit value with the appropriate boost applied.\n           * Using upsert because there could already be an entry in the vector\n           * for the term we are working with. In that case we just add the scores\n           * together.\n           */\n          queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b })\n\n          /**\n           * If we've already seen this term, field combo then we've already collected\n           * the matching documents and metadata, no need to go through all that again\n           */\n          if (termFieldCache[termField]) {\n            continue\n          }\n\n          for (var l = 0; l < matchingDocumentRefs.length; l++) {\n            /*\n             * All metadata for this term/field/document triple\n             * are then extracted and collected into an instance\n             * of lunr.MatchData ready to be returned in the query\n             * results\n             */\n            var matchingDocumentRef = matchingDocumentRefs[l],\n                matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field),\n                metadata = fieldPosting[matchingDocumentRef],\n                fieldMatch\n\n            if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {\n              matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata)\n            } else {\n              fieldMatch.add(expandedTerm, field, metadata)\n            }\n\n          }\n\n          termFieldCache[termField] = true\n        }\n      }\n    }\n\n    /**\n     * If the presence was required we need to update the requiredMatches field sets.\n     * We do this after all fields for the term have collected their matches because\n     * the clause terms presence is required in _any_ of the fields not _all_ of the\n     * fields.\n     */\n    if (clause.presence === lunr.Query.presence.REQUIRED) {\n      for (var k = 0; k < clause.fields.length; k++) {\n        var field = clause.fields[k]\n        requiredMatches[field] = requiredMatches[field].intersect(clauseMatches)\n      }\n    }\n  }\n\n  /**\n   * Need to combine the field scoped required and prohibited\n   * matching documents into a global set of required and prohibited\n   * matches\n   */\n  var allRequiredMatches = lunr.Set.complete,\n      allProhibitedMatches = lunr.Set.empty\n\n  for (var i = 0; i < this.fields.length; i++) {\n    var field = this.fields[i]\n\n    if (requiredMatches[field]) {\n      allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field])\n    }\n\n    if (prohibitedMatches[field]) {\n      allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field])\n    }\n  }\n\n  var matchingFieldRefs = Object.keys(matchingFields),\n      results = [],\n      matches = Object.create(null)\n\n  /*\n   * If the query is negated (contains only prohibited terms)\n   * we need to get _all_ fieldRefs currently existing in the\n   * index. This is only done when we know that the query is\n   * entirely prohibited terms to avoid any cost of getting all\n   * fieldRefs unnecessarily.\n   *\n   * Additionally, blank MatchData must be created to correctly\n   * populate the results.\n   */\n  if (query.isNegated()) {\n    matchingFieldRefs = Object.keys(this.fieldVectors)\n\n    for (var i = 0; i < matchingFieldRefs.length; i++) {\n      var matchingFieldRef = matchingFieldRefs[i]\n      var fieldRef = lunr.FieldRef.fromString(matchingFieldRef)\n      matchingFields[matchingFieldRef] = new lunr.MatchData\n    }\n  }\n\n  for (var i = 0; i < matchingFieldRefs.length; i++) {\n    /*\n     * Currently we have document fields that match the query, but we\n     * need to return documents. The matchData and scores are combined\n     * from multiple fields belonging to the same document.\n     *\n     * Scores are calculated by field, using the query vectors created\n     * above, and combined into a final document score using addition.\n     */\n    var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),\n        docRef = fieldRef.docRef\n\n    if (!allRequiredMatches.contains(docRef)) {\n      continue\n    }\n\n    if (allProhibitedMatches.contains(docRef)) {\n      continue\n    }\n\n    var fieldVector = this.fieldVectors[fieldRef],\n        score = queryVectors[fieldRef.fieldName].similarity(fieldVector),\n        docMatch\n\n    if ((docMatch = matches[docRef]) !== undefined) {\n      docMatch.score += score\n      docMatch.matchData.combine(matchingFields[fieldRef])\n    } else {\n      var match = {\n        ref: docRef,\n        score: score,\n        matchData: matchingFields[fieldRef]\n      }\n      matches[docRef] = match\n      results.push(match)\n    }\n  }\n\n  /*\n   * Sort the results objects by score, highest first.\n   */\n  return results.sort(function (a, b) {\n    return b.score - a.score\n  })\n}\n\n/**\n * Prepares the index for JSON serialization.\n *\n * The schema for this JSON blob will be described in a\n * separate JSON schema file.\n *\n * @returns {Object}\n */\nlunr.Index.prototype.toJSON = function () {\n  var invertedIndex = Object.keys(this.invertedIndex)\n    .sort()\n    .map(function (term) {\n      return [term, this.invertedIndex[term]]\n    }, this)\n\n  var fieldVectors = Object.keys(this.fieldVectors)\n    .map(function (ref) {\n      return [ref, this.fieldVectors[ref].toJSON()]\n    }, this)\n\n  return {\n    version: lunr.version,\n    fields: this.fields,\n    fieldVectors: fieldVectors,\n    invertedIndex: invertedIndex,\n    pipeline: this.pipeline.toJSON()\n  }\n}\n\n/**\n * Loads a previously serialized lunr.Index\n *\n * @param {Object} serializedIndex - A previously serialized lunr.Index\n * @returns {lunr.Index}\n */\nlunr.Index.load = function (serializedIndex) {\n  var attrs = {},\n      fieldVectors = {},\n      serializedVectors = serializedIndex.fieldVectors,\n      invertedIndex = Object.create(null),\n      serializedInvertedIndex = serializedIndex.invertedIndex,\n      tokenSetBuilder = new lunr.TokenSet.Builder,\n      pipeline = lunr.Pipeline.load(serializedIndex.pipeline)\n\n  if (serializedIndex.version != lunr.version) {\n    lunr.utils.warn(\"Version mismatch when loading serialised index. Current version of lunr '\" + lunr.version + \"' does not match serialized index '\" + serializedIndex.version + \"'\")\n  }\n\n  for (var i = 0; i < serializedVectors.length; i++) {\n    var tuple = serializedVectors[i],\n        ref = tuple[0],\n        elements = tuple[1]\n\n    fieldVectors[ref] = new lunr.Vector(elements)\n  }\n\n  for (var i = 0; i < serializedInvertedIndex.length; i++) {\n    var tuple = serializedInvertedIndex[i],\n        term = tuple[0],\n        posting = tuple[1]\n\n    tokenSetBuilder.insert(term)\n    invertedIndex[term] = posting\n  }\n\n  tokenSetBuilder.finish()\n\n  attrs.fields = serializedIndex.fields\n\n  attrs.fieldVectors = fieldVectors\n  attrs.invertedIndex = invertedIndex\n  attrs.tokenSet = tokenSetBuilder.root\n  attrs.pipeline = pipeline\n\n  return new lunr.Index(attrs)\n}\n/*!\n * lunr.Builder\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.Builder performs indexing on a set of documents and\n * returns instances of lunr.Index ready for querying.\n *\n * All configuration of the index is done via the builder, the\n * fields to index, the document reference, the text processing\n * pipeline and document scoring parameters are all set on the\n * builder before indexing.\n *\n * @constructor\n * @property {string} _ref - Internal reference to the document reference field.\n * @property {string[]} _fields - Internal reference to the document fields to index.\n * @property {object} invertedIndex - The inverted index maps terms to document fields.\n * @property {object} documentTermFrequencies - Keeps track of document term frequencies.\n * @property {object} documentLengths - Keeps track of the length of documents added to the index.\n * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.\n * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.\n * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.\n * @property {number} documentCount - Keeps track of the total number of documents indexed.\n * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.\n * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.\n * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.\n * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.\n */\nlunr.Builder = function () {\n  this._ref = \"id\"\n  this._fields = Object.create(null)\n  this._documents = Object.create(null)\n  this.invertedIndex = Object.create(null)\n  this.fieldTermFrequencies = {}\n  this.fieldLengths = {}\n  this.tokenizer = lunr.tokenizer\n  this.pipeline = new lunr.Pipeline\n  this.searchPipeline = new lunr.Pipeline\n  this.documentCount = 0\n  this._b = 0.75\n  this._k1 = 1.2\n  this.termIndex = 0\n  this.metadataWhitelist = []\n}\n\n/**\n * Sets the document field used as the document reference. Every document must have this field.\n * The type of this field in the document should be a string, if it is not a string it will be\n * coerced into a string by calling toString.\n *\n * The default ref is 'id'.\n *\n * The ref should _not_ be changed during indexing, it should be set before any documents are\n * added to the index. Changing it during indexing can lead to inconsistent results.\n *\n * @param {string} ref - The name of the reference field in the document.\n */\nlunr.Builder.prototype.ref = function (ref) {\n  this._ref = ref\n}\n\n/**\n * A function that is used to extract a field from a document.\n *\n * Lunr expects a field to be at the top level of a document, if however the field\n * is deeply nested within a document an extractor function can be used to extract\n * the right field for indexing.\n *\n * @callback fieldExtractor\n * @param {object} doc - The document being added to the index.\n * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.\n * @example <caption>Extracting a nested field</caption>\n * function (doc) { return doc.nested.field }\n */\n\n/**\n * Adds a field to the list of document fields that will be indexed. Every document being\n * indexed should have this field. Null values for this field in indexed documents will\n * not cause errors but will limit the chance of that document being retrieved by searches.\n *\n * All fields should be added before adding documents to the index. Adding fields after\n * a document has been indexed will have no effect on already indexed documents.\n *\n * Fields can be boosted at build time. This allows terms within that field to have more\n * importance when ranking search results. Use a field boost to specify that matches within\n * one field are more important than other fields.\n *\n * @param {string} fieldName - The name of a field to index in all documents.\n * @param {object} attributes - Optional attributes associated with this field.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.\n * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.\n * @throws {RangeError} fieldName cannot contain unsupported characters '/'\n */\nlunr.Builder.prototype.field = function (fieldName, attributes) {\n  if (/\\//.test(fieldName)) {\n    throw new RangeError (\"Field '\" + fieldName + \"' contains illegal character '/'\")\n  }\n\n  this._fields[fieldName] = attributes || {}\n}\n\n/**\n * A parameter to tune the amount of field length normalisation that is applied when\n * calculating relevance scores. A value of 0 will completely disable any normalisation\n * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b\n * will be clamped to the range 0 - 1.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.b = function (number) {\n  if (number < 0) {\n    this._b = 0\n  } else if (number > 1) {\n    this._b = 1\n  } else {\n    this._b = number\n  }\n}\n\n/**\n * A parameter that controls the speed at which a rise in term frequency results in term\n * frequency saturation. The default value is 1.2. Setting this to a higher value will give\n * slower saturation levels, a lower value will result in quicker saturation.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.k1 = function (number) {\n  this._k1 = number\n}\n\n/**\n * Adds a document to the index.\n *\n * Before adding fields to the index the index should have been fully setup, with the document\n * ref and all fields to index already having been specified.\n *\n * The document must have a field name as specified by the ref (by default this is 'id') and\n * it should have all fields defined for indexing, though null or undefined values will not\n * cause errors.\n *\n * Entire documents can be boosted at build time. Applying a boost to a document indicates that\n * this document should rank higher in search results than other documents.\n *\n * @param {object} doc - The document to add to the index.\n * @param {object} attributes - Optional attributes associated with this document.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.\n */\nlunr.Builder.prototype.add = function (doc, attributes) {\n  var docRef = doc[this._ref],\n      fields = Object.keys(this._fields)\n\n  this._documents[docRef] = attributes || {}\n  this.documentCount += 1\n\n  for (var i = 0; i < fields.length; i++) {\n    var fieldName = fields[i],\n        extractor = this._fields[fieldName].extractor,\n        field = extractor ? extractor(doc) : doc[fieldName],\n        tokens = this.tokenizer(field, {\n          fields: [fieldName]\n        }),\n        terms = this.pipeline.run(tokens),\n        fieldRef = new lunr.FieldRef (docRef, fieldName),\n        fieldTerms = Object.create(null)\n\n    this.fieldTermFrequencies[fieldRef] = fieldTerms\n    this.fieldLengths[fieldRef] = 0\n\n    // store the length of this field for this document\n    this.fieldLengths[fieldRef] += terms.length\n\n    // calculate term frequencies for this field\n    for (var j = 0; j < terms.length; j++) {\n      var term = terms[j]\n\n      if (fieldTerms[term] == undefined) {\n        fieldTerms[term] = 0\n      }\n\n      fieldTerms[term] += 1\n\n      // add to inverted index\n      // create an initial posting if one doesn't exist\n      if (this.invertedIndex[term] == undefined) {\n        var posting = Object.create(null)\n        posting[\"_index\"] = this.termIndex\n        this.termIndex += 1\n\n        for (var k = 0; k < fields.length; k++) {\n          posting[fields[k]] = Object.create(null)\n        }\n\n        this.invertedIndex[term] = posting\n      }\n\n      // add an entry for this term/fieldName/docRef to the invertedIndex\n      if (this.invertedIndex[term][fieldName][docRef] == undefined) {\n        this.invertedIndex[term][fieldName][docRef] = Object.create(null)\n      }\n\n      // store all whitelisted metadata about this token in the\n      // inverted index\n      for (var l = 0; l < this.metadataWhitelist.length; l++) {\n        var metadataKey = this.metadataWhitelist[l],\n            metadata = term.metadata[metadataKey]\n\n        if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {\n          this.invertedIndex[term][fieldName][docRef][metadataKey] = []\n        }\n\n        this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata)\n      }\n    }\n\n  }\n}\n\n/**\n * Calculates the average document length for this index\n *\n * @private\n */\nlunr.Builder.prototype.calculateAverageFieldLengths = function () {\n\n  var fieldRefs = Object.keys(this.fieldLengths),\n      numberOfFields = fieldRefs.length,\n      accumulator = {},\n      documentsWithField = {}\n\n  for (var i = 0; i < numberOfFields; i++) {\n    var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n        field = fieldRef.fieldName\n\n    documentsWithField[field] || (documentsWithField[field] = 0)\n    documentsWithField[field] += 1\n\n    accumulator[field] || (accumulator[field] = 0)\n    accumulator[field] += this.fieldLengths[fieldRef]\n  }\n\n  var fields = Object.keys(this._fields)\n\n  for (var i = 0; i < fields.length; i++) {\n    var fieldName = fields[i]\n    accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName]\n  }\n\n  this.averageFieldLength = accumulator\n}\n\n/**\n * Builds a vector space model of every document using lunr.Vector\n *\n * @private\n */\nlunr.Builder.prototype.createFieldVectors = function () {\n  var fieldVectors = {},\n      fieldRefs = Object.keys(this.fieldTermFrequencies),\n      fieldRefsLength = fieldRefs.length,\n      termIdfCache = Object.create(null)\n\n  for (var i = 0; i < fieldRefsLength; i++) {\n    var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n        fieldName = fieldRef.fieldName,\n        fieldLength = this.fieldLengths[fieldRef],\n        fieldVector = new lunr.Vector,\n        termFrequencies = this.fieldTermFrequencies[fieldRef],\n        terms = Object.keys(termFrequencies),\n        termsLength = terms.length\n\n\n    var fieldBoost = this._fields[fieldName].boost || 1,\n        docBoost = this._documents[fieldRef.docRef].boost || 1\n\n    for (var j = 0; j < termsLength; j++) {\n      var term = terms[j],\n          tf = termFrequencies[term],\n          termIndex = this.invertedIndex[term]._index,\n          idf, score, scoreWithPrecision\n\n      if (termIdfCache[term] === undefined) {\n        idf = lunr.idf(this.invertedIndex[term], this.documentCount)\n        termIdfCache[term] = idf\n      } else {\n        idf = termIdfCache[term]\n      }\n\n      score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf)\n      score *= fieldBoost\n      score *= docBoost\n      scoreWithPrecision = Math.round(score * 1000) / 1000\n      // Converts 1.23456789 to 1.234.\n      // Reducing the precision so that the vectors take up less\n      // space when serialised. Doing it now so that they behave\n      // the same before and after serialisation. Also, this is\n      // the fastest approach to reducing a number's precision in\n      // JavaScript.\n\n      fieldVector.insert(termIndex, scoreWithPrecision)\n    }\n\n    fieldVectors[fieldRef] = fieldVector\n  }\n\n  this.fieldVectors = fieldVectors\n}\n\n/**\n * Creates a token set of all tokens in the index using lunr.TokenSet\n *\n * @private\n */\nlunr.Builder.prototype.createTokenSet = function () {\n  this.tokenSet = lunr.TokenSet.fromArray(\n    Object.keys(this.invertedIndex).sort()\n  )\n}\n\n/**\n * Builds the index, creating an instance of lunr.Index.\n *\n * This completes the indexing process and should only be called\n * once all documents have been added to the index.\n *\n * @returns {lunr.Index}\n */\nlunr.Builder.prototype.build = function () {\n  this.calculateAverageFieldLengths()\n  this.createFieldVectors()\n  this.createTokenSet()\n\n  return new lunr.Index({\n    invertedIndex: this.invertedIndex,\n    fieldVectors: this.fieldVectors,\n    tokenSet: this.tokenSet,\n    fields: Object.keys(this._fields),\n    pipeline: this.searchPipeline\n  })\n}\n\n/**\n * Applies a plugin to the index builder.\n *\n * A plugin is a function that is called with the index builder as its context.\n * Plugins can be used to customise or extend the behaviour of the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied when building the index.\n *\n * The plugin function will be called with the index builder as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index builder as its context.\n *\n * @param {Function} plugin The plugin to apply.\n */\nlunr.Builder.prototype.use = function (fn) {\n  var args = Array.prototype.slice.call(arguments, 1)\n  args.unshift(this)\n  fn.apply(this, args)\n}\n/**\n * Contains and collects metadata about a matching document.\n * A single instance of lunr.MatchData is returned as part of every\n * lunr.Index~Result.\n *\n * @constructor\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n * @property {object} metadata - A cloned collection of metadata associated with this document.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData = function (term, field, metadata) {\n  var clonedMetadata = Object.create(null),\n      metadataKeys = Object.keys(metadata || {})\n\n  // Cloning the metadata to prevent the original\n  // being mutated during match data combination.\n  // Metadata is kept in an array within the inverted\n  // index so cloning the data can be done with\n  // Array#slice\n  for (var i = 0; i < metadataKeys.length; i++) {\n    var key = metadataKeys[i]\n    clonedMetadata[key] = metadata[key].slice()\n  }\n\n  this.metadata = Object.create(null)\n\n  if (term !== undefined) {\n    this.metadata[term] = Object.create(null)\n    this.metadata[term][field] = clonedMetadata\n  }\n}\n\n/**\n * An instance of lunr.MatchData will be created for every term that matches a\n * document. However only one instance is required in a lunr.Index~Result. This\n * method combines metadata from another instance of lunr.MatchData with this\n * objects metadata.\n *\n * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData.prototype.combine = function (otherMatchData) {\n  var terms = Object.keys(otherMatchData.metadata)\n\n  for (var i = 0; i < terms.length; i++) {\n    var term = terms[i],\n        fields = Object.keys(otherMatchData.metadata[term])\n\n    if (this.metadata[term] == undefined) {\n      this.metadata[term] = Object.create(null)\n    }\n\n    for (var j = 0; j < fields.length; j++) {\n      var field = fields[j],\n          keys = Object.keys(otherMatchData.metadata[term][field])\n\n      if (this.metadata[term][field] == undefined) {\n        this.metadata[term][field] = Object.create(null)\n      }\n\n      for (var k = 0; k < keys.length; k++) {\n        var key = keys[k]\n\n        if (this.metadata[term][field][key] == undefined) {\n          this.metadata[term][field][key] = otherMatchData.metadata[term][field][key]\n        } else {\n          this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key])\n        }\n\n      }\n    }\n  }\n}\n\n/**\n * Add metadata for a term/field pair to this instance of match data.\n *\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n */\nlunr.MatchData.prototype.add = function (term, field, metadata) {\n  if (!(term in this.metadata)) {\n    this.metadata[term] = Object.create(null)\n    this.metadata[term][field] = metadata\n    return\n  }\n\n  if (!(field in this.metadata[term])) {\n    this.metadata[term][field] = metadata\n    return\n  }\n\n  var metadataKeys = Object.keys(metadata)\n\n  for (var i = 0; i < metadataKeys.length; i++) {\n    var key = metadataKeys[i]\n\n    if (key in this.metadata[term][field]) {\n      this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key])\n    } else {\n      this.metadata[term][field][key] = metadata[key]\n    }\n  }\n}\n/**\n * A lunr.Query provides a programmatic way of defining queries to be performed\n * against a {@link lunr.Index}.\n *\n * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method\n * so the query object is pre-initialized with the right index fields.\n *\n * @constructor\n * @property {lunr.Query~Clause[]} clauses - An array of query clauses.\n * @property {string[]} allFields - An array of all available fields in a lunr.Index.\n */\nlunr.Query = function (allFields) {\n  this.clauses = []\n  this.allFields = allFields\n}\n\n/**\n * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.\n *\n * This allows wildcards to be added to the beginning and end of a term without having to manually do any string\n * concatenation.\n *\n * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.\n *\n * @constant\n * @default\n * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour\n * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists\n * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example <caption>query term with trailing wildcard</caption>\n * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })\n * @example <caption>query term with leading and trailing wildcard</caption>\n * query.term('foo', {\n *   wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING\n * })\n */\n\nlunr.Query.wildcard = new String (\"*\")\nlunr.Query.wildcard.NONE = 0\nlunr.Query.wildcard.LEADING = 1\nlunr.Query.wildcard.TRAILING = 2\n\n/**\n * Constants for indicating what kind of presence a term must have in matching documents.\n *\n * @constant\n * @enum {number}\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example <caption>query term with required presence</caption>\n * query.term('foo', { presence: lunr.Query.presence.REQUIRED })\n */\nlunr.Query.presence = {\n  /**\n   * Term's presence in a document is optional, this is the default value.\n   */\n  OPTIONAL: 1,\n\n  /**\n   * Term's presence in a document is required, documents that do not contain\n   * this term will not be returned.\n   */\n  REQUIRED: 2,\n\n  /**\n   * Term's presence in a document is prohibited, documents that do contain\n   * this term will not be returned.\n   */\n  PROHIBITED: 3\n}\n\n/**\n * A single clause in a {@link lunr.Query} contains a term and details on how to\n * match that term against a {@link lunr.Index}.\n *\n * @typedef {Object} lunr.Query~Clause\n * @property {string[]} fields - The fields in an index this clause should be matched against.\n * @property {number} [boost=1] - Any boost that should be applied when matching this clause.\n * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.\n * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.\n * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.\n * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.\n */\n\n/**\n * Adds a {@link lunr.Query~Clause} to this query.\n *\n * Unless the clause contains the fields to be matched all fields will be matched. In addition\n * a default boost of 1 is applied to the clause.\n *\n * @param {lunr.Query~Clause} clause - The clause to add to this query.\n * @see lunr.Query~Clause\n * @returns {lunr.Query}\n */\nlunr.Query.prototype.clause = function (clause) {\n  if (!('fields' in clause)) {\n    clause.fields = this.allFields\n  }\n\n  if (!('boost' in clause)) {\n    clause.boost = 1\n  }\n\n  if (!('usePipeline' in clause)) {\n    clause.usePipeline = true\n  }\n\n  if (!('wildcard' in clause)) {\n    clause.wildcard = lunr.Query.wildcard.NONE\n  }\n\n  if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) {\n    clause.term = \"*\" + clause.term\n  }\n\n  if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) {\n    clause.term = \"\" + clause.term + \"*\"\n  }\n\n  if (!('presence' in clause)) {\n    clause.presence = lunr.Query.presence.OPTIONAL\n  }\n\n  this.clauses.push(clause)\n\n  return this\n}\n\n/**\n * A negated query is one in which every clause has a presence of\n * prohibited. These queries require some special processing to return\n * the expected results.\n *\n * @returns boolean\n */\nlunr.Query.prototype.isNegated = function () {\n  for (var i = 0; i < this.clauses.length; i++) {\n    if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {\n      return false\n    }\n  }\n\n  return true\n}\n\n/**\n * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}\n * to the list of clauses that make up this query.\n *\n * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion\n * to a token or token-like string should be done before calling this method.\n *\n * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an\n * array, each term in the array will share the same options.\n *\n * @param {object|object[]} term - The term(s) to add to the query.\n * @param {object} [options] - Any additional properties to add to the query clause.\n * @returns {lunr.Query}\n * @see lunr.Query#clause\n * @see lunr.Query~Clause\n * @example <caption>adding a single term to a query</caption>\n * query.term(\"foo\")\n * @example <caption>adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard</caption>\n * query.term(\"foo\", {\n *   fields: [\"title\"],\n *   boost: 10,\n *   wildcard: lunr.Query.wildcard.TRAILING\n * })\n * @example <caption>using lunr.tokenizer to convert a string to tokens before using them as terms</caption>\n * query.term(lunr.tokenizer(\"foo bar\"))\n */\nlunr.Query.prototype.term = function (term, options) {\n  if (Array.isArray(term)) {\n    term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this)\n    return this\n  }\n\n  var clause = options || {}\n  clause.term = term.toString()\n\n  this.clause(clause)\n\n  return this\n}\nlunr.QueryParseError = function (message, start, end) {\n  this.name = \"QueryParseError\"\n  this.message = message\n  this.start = start\n  this.end = end\n}\n\nlunr.QueryParseError.prototype = new Error\nlunr.QueryLexer = function (str) {\n  this.lexemes = []\n  this.str = str\n  this.length = str.length\n  this.pos = 0\n  this.start = 0\n  this.escapeCharPositions = []\n}\n\nlunr.QueryLexer.prototype.run = function () {\n  var state = lunr.QueryLexer.lexText\n\n  while (state) {\n    state = state(this)\n  }\n}\n\nlunr.QueryLexer.prototype.sliceString = function () {\n  var subSlices = [],\n      sliceStart = this.start,\n      sliceEnd = this.pos\n\n  for (var i = 0; i < this.escapeCharPositions.length; i++) {\n    sliceEnd = this.escapeCharPositions[i]\n    subSlices.push(this.str.slice(sliceStart, sliceEnd))\n    sliceStart = sliceEnd + 1\n  }\n\n  subSlices.push(this.str.slice(sliceStart, this.pos))\n  this.escapeCharPositions.length = 0\n\n  return subSlices.join('')\n}\n\nlunr.QueryLexer.prototype.emit = function (type) {\n  this.lexemes.push({\n    type: type,\n    str: this.sliceString(),\n    start: this.start,\n    end: this.pos\n  })\n\n  this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.escapeCharacter = function () {\n  this.escapeCharPositions.push(this.pos - 1)\n  this.pos += 1\n}\n\nlunr.QueryLexer.prototype.next = function () {\n  if (this.pos >= this.length) {\n    return lunr.QueryLexer.EOS\n  }\n\n  var char = this.str.charAt(this.pos)\n  this.pos += 1\n  return char\n}\n\nlunr.QueryLexer.prototype.width = function () {\n  return this.pos - this.start\n}\n\nlunr.QueryLexer.prototype.ignore = function () {\n  if (this.start == this.pos) {\n    this.pos += 1\n  }\n\n  this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.backup = function () {\n  this.pos -= 1\n}\n\nlunr.QueryLexer.prototype.acceptDigitRun = function () {\n  var char, charCode\n\n  do {\n    char = this.next()\n    charCode = char.charCodeAt(0)\n  } while (charCode > 47 && charCode < 58)\n\n  if (char != lunr.QueryLexer.EOS) {\n    this.backup()\n  }\n}\n\nlunr.QueryLexer.prototype.more = function () {\n  return this.pos < this.length\n}\n\nlunr.QueryLexer.EOS = 'EOS'\nlunr.QueryLexer.FIELD = 'FIELD'\nlunr.QueryLexer.TERM = 'TERM'\nlunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'\nlunr.QueryLexer.BOOST = 'BOOST'\nlunr.QueryLexer.PRESENCE = 'PRESENCE'\n\nlunr.QueryLexer.lexField = function (lexer) {\n  lexer.backup()\n  lexer.emit(lunr.QueryLexer.FIELD)\n  lexer.ignore()\n  return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexTerm = function (lexer) {\n  if (lexer.width() > 1) {\n    lexer.backup()\n    lexer.emit(lunr.QueryLexer.TERM)\n  }\n\n  lexer.ignore()\n\n  if (lexer.more()) {\n    return lunr.QueryLexer.lexText\n  }\n}\n\nlunr.QueryLexer.lexEditDistance = function (lexer) {\n  lexer.ignore()\n  lexer.acceptDigitRun()\n  lexer.emit(lunr.QueryLexer.EDIT_DISTANCE)\n  return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexBoost = function (lexer) {\n  lexer.ignore()\n  lexer.acceptDigitRun()\n  lexer.emit(lunr.QueryLexer.BOOST)\n  return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexEOS = function (lexer) {\n  if (lexer.width() > 0) {\n    lexer.emit(lunr.QueryLexer.TERM)\n  }\n}\n\n// This matches the separator used when tokenising fields\n// within a document. These should match otherwise it is\n// not possible to search for some tokens within a document.\n//\n// It is possible for the user to change the separator on the\n// tokenizer so it _might_ clash with any other of the special\n// characters already used within the search string, e.g. :.\n//\n// This means that it is possible to change the separator in\n// such a way that makes some words unsearchable using a search\n// string.\nlunr.QueryLexer.termSeparator = lunr.tokenizer.separator\n\nlunr.QueryLexer.lexText = function (lexer) {\n  while (true) {\n    var char = lexer.next()\n\n    if (char == lunr.QueryLexer.EOS) {\n      return lunr.QueryLexer.lexEOS\n    }\n\n    // Escape character is '\\'\n    if (char.charCodeAt(0) == 92) {\n      lexer.escapeCharacter()\n      continue\n    }\n\n    if (char == \":\") {\n      return lunr.QueryLexer.lexField\n    }\n\n    if (char == \"~\") {\n      lexer.backup()\n      if (lexer.width() > 0) {\n        lexer.emit(lunr.QueryLexer.TERM)\n      }\n      return lunr.QueryLexer.lexEditDistance\n    }\n\n    if (char == \"^\") {\n      lexer.backup()\n      if (lexer.width() > 0) {\n        lexer.emit(lunr.QueryLexer.TERM)\n      }\n      return lunr.QueryLexer.lexBoost\n    }\n\n    // \"+\" indicates term presence is required\n    // checking for length to ensure that only\n    // leading \"+\" are considered\n    if (char == \"+\" && lexer.width() === 1) {\n      lexer.emit(lunr.QueryLexer.PRESENCE)\n      return lunr.QueryLexer.lexText\n    }\n\n    // \"-\" indicates term presence is prohibited\n    // checking for length to ensure that only\n    // leading \"-\" are considered\n    if (char == \"-\" && lexer.width() === 1) {\n      lexer.emit(lunr.QueryLexer.PRESENCE)\n      return lunr.QueryLexer.lexText\n    }\n\n    if (char.match(lunr.QueryLexer.termSeparator)) {\n      return lunr.QueryLexer.lexTerm\n    }\n  }\n}\n\nlunr.QueryParser = function (str, query) {\n  this.lexer = new lunr.QueryLexer (str)\n  this.query = query\n  this.currentClause = {}\n  this.lexemeIdx = 0\n}\n\nlunr.QueryParser.prototype.parse = function () {\n  this.lexer.run()\n  this.lexemes = this.lexer.lexemes\n\n  var state = lunr.QueryParser.parseClause\n\n  while (state) {\n    state = state(this)\n  }\n\n  return this.query\n}\n\nlunr.QueryParser.prototype.peekLexeme = function () {\n  return this.lexemes[this.lexemeIdx]\n}\n\nlunr.QueryParser.prototype.consumeLexeme = function () {\n  var lexeme = this.peekLexeme()\n  this.lexemeIdx += 1\n  return lexeme\n}\n\nlunr.QueryParser.prototype.nextClause = function () {\n  var completedClause = this.currentClause\n  this.query.clause(completedClause)\n  this.currentClause = {}\n}\n\nlunr.QueryParser.parseClause = function (parser) {\n  var lexeme = parser.peekLexeme()\n\n  if (lexeme == undefined) {\n    return\n  }\n\n  switch (lexeme.type) {\n    case lunr.QueryLexer.PRESENCE:\n      return lunr.QueryParser.parsePresence\n    case lunr.QueryLexer.FIELD:\n      return lunr.QueryParser.parseField\n    case lunr.QueryLexer.TERM:\n      return lunr.QueryParser.parseTerm\n    default:\n      var errorMessage = \"expected either a field or a term, found \" + lexeme.type\n\n      if (lexeme.str.length >= 1) {\n        errorMessage += \" with value '\" + lexeme.str + \"'\"\n      }\n\n      throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n  }\n}\n\nlunr.QueryParser.parsePresence = function (parser) {\n  var lexeme = parser.consumeLexeme()\n\n  if (lexeme == undefined) {\n    return\n  }\n\n  switch (lexeme.str) {\n    case \"-\":\n      parser.currentClause.presence = lunr.Query.presence.PROHIBITED\n      break\n    case \"+\":\n      parser.currentClause.presence = lunr.Query.presence.REQUIRED\n      break\n    default:\n      var errorMessage = \"unrecognised presence operator'\" + lexeme.str + \"'\"\n      throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n  }\n\n  var nextLexeme = parser.peekLexeme()\n\n  if (nextLexeme == undefined) {\n    var errorMessage = \"expecting term or field, found nothing\"\n    throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n  }\n\n  switch (nextLexeme.type) {\n    case lunr.QueryLexer.FIELD:\n      return lunr.QueryParser.parseField\n    case lunr.QueryLexer.TERM:\n      return lunr.QueryParser.parseTerm\n    default:\n      var errorMessage = \"expecting term or field, found '\" + nextLexeme.type + \"'\"\n      throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n  }\n}\n\nlunr.QueryParser.parseField = function (parser) {\n  var lexeme = parser.consumeLexeme()\n\n  if (lexeme == undefined) {\n    return\n  }\n\n  if (parser.query.allFields.indexOf(lexeme.str) == -1) {\n    var possibleFields = parser.query.allFields.map(function (f) { return \"'\" + f + \"'\" }).join(', '),\n        errorMessage = \"unrecognised field '\" + lexeme.str + \"', possible fields: \" + possibleFields\n\n    throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n  }\n\n  parser.currentClause.fields = [lexeme.str]\n\n  var nextLexeme = parser.peekLexeme()\n\n  if (nextLexeme == undefined) {\n    var errorMessage = \"expecting term, found nothing\"\n    throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n  }\n\n  switch (nextLexeme.type) {\n    case lunr.QueryLexer.TERM:\n      return lunr.QueryParser.parseTerm\n    default:\n      var errorMessage = \"expecting term, found '\" + nextLexeme.type + \"'\"\n      throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n  }\n}\n\nlunr.QueryParser.parseTerm = function (parser) {\n  var lexeme = parser.consumeLexeme()\n\n  if (lexeme == undefined) {\n    return\n  }\n\n  parser.currentClause.term = lexeme.str.toLowerCase()\n\n  if (lexeme.str.indexOf(\"*\") != -1) {\n    parser.currentClause.usePipeline = false\n  }\n\n  var nextLexeme = parser.peekLexeme()\n\n  if (nextLexeme == undefined) {\n    parser.nextClause()\n    return\n  }\n\n  switch (nextLexeme.type) {\n    case lunr.QueryLexer.TERM:\n      parser.nextClause()\n      return lunr.QueryParser.parseTerm\n    case lunr.QueryLexer.FIELD:\n      parser.nextClause()\n      return lunr.QueryParser.parseField\n    case lunr.QueryLexer.EDIT_DISTANCE:\n      return lunr.QueryParser.parseEditDistance\n    case lunr.QueryLexer.BOOST:\n      return lunr.QueryParser.parseBoost\n    case lunr.QueryLexer.PRESENCE:\n      parser.nextClause()\n      return lunr.QueryParser.parsePresence\n    default:\n      var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n      throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n  }\n}\n\nlunr.QueryParser.parseEditDistance = function (parser) {\n  var lexeme = parser.consumeLexeme()\n\n  if (lexeme == undefined) {\n    return\n  }\n\n  var editDistance = parseInt(lexeme.str, 10)\n\n  if (isNaN(editDistance)) {\n    var errorMessage = \"edit distance must be numeric\"\n    throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n  }\n\n  parser.currentClause.editDistance = editDistance\n\n  var nextLexeme = parser.peekLexeme()\n\n  if (nextLexeme == undefined) {\n    parser.nextClause()\n    return\n  }\n\n  switch (nextLexeme.type) {\n    case lunr.QueryLexer.TERM:\n      parser.nextClause()\n      return lunr.QueryParser.parseTerm\n    case lunr.QueryLexer.FIELD:\n      parser.nextClause()\n      return lunr.QueryParser.parseField\n    case lunr.QueryLexer.EDIT_DISTANCE:\n      return lunr.QueryParser.parseEditDistance\n    case lunr.QueryLexer.BOOST:\n      return lunr.QueryParser.parseBoost\n    case lunr.QueryLexer.PRESENCE:\n      parser.nextClause()\n      return lunr.QueryParser.parsePresence\n    default:\n      var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n      throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n  }\n}\n\nlunr.QueryParser.parseBoost = function (parser) {\n  var lexeme = parser.consumeLexeme()\n\n  if (lexeme == undefined) {\n    return\n  }\n\n  var boost = parseInt(lexeme.str, 10)\n\n  if (isNaN(boost)) {\n    var errorMessage = \"boost must be numeric\"\n    throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n  }\n\n  parser.currentClause.boost = boost\n\n  var nextLexeme = parser.peekLexeme()\n\n  if (nextLexeme == undefined) {\n    parser.nextClause()\n    return\n  }\n\n  switch (nextLexeme.type) {\n    case lunr.QueryLexer.TERM:\n      parser.nextClause()\n      return lunr.QueryParser.parseTerm\n    case lunr.QueryLexer.FIELD:\n      parser.nextClause()\n      return lunr.QueryParser.parseField\n    case lunr.QueryLexer.EDIT_DISTANCE:\n      return lunr.QueryParser.parseEditDistance\n    case lunr.QueryLexer.BOOST:\n      return lunr.QueryParser.parseBoost\n    case lunr.QueryLexer.PRESENCE:\n      parser.nextClause()\n      return lunr.QueryParser.parsePresence\n    default:\n      var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n      throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n  }\n}\n\n  /**\n   * export the module via AMD, CommonJS or as a browser global\n   * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n   */\n  ;(function (root, factory) {\n    if (typeof define === 'function' && define.amd) {\n      // AMD. Register as an anonymous module.\n      define(factory)\n    } else if (typeof exports === 'object') {\n      /**\n       * Node. Does not work with strict CommonJS, but\n       * only CommonJS-like enviroments that support module.exports,\n       * like Node.\n       */\n      module.exports = factory()\n    } else {\n      // Browser globals (root is window)\n      root.lunr = factory()\n    }\n  }(this, function () {\n    /**\n     * Just return a value to define the module export.\n     * This example returns an object, but the module\n     * can return a function as the exported value.\n     */\n    return lunr\n  }))\n})();\n","/**\n* @license\n* MarionetteJS (Marionette.AppRouter)\n* ----------------------------------\n* v1.0.1\n*\n* Copyright (c)2018 Derick Bailey, Muted Solutions, LLC.\n* Distributed under MIT license\n*\n* http://marionettejs.com\n*/\n\n\nimport Backbone from 'backbone';\nimport _ from 'underscore';\nimport Marionette, { MnObject } from 'backbone.marionette';\n\n// App Router\n// ----------\n\n// Reduce the boilerplate code of handling route events\n// and then calling a single method on another object,\n// called a controller.\n// Have your routers configured to call the method on\n// your controller, directly.\n//\n// Configure an AppRouter with `appRoutes`.\n//\n// App routers can only take one `controller` object.\n// It is recommended that you divide your controller\n// objects in to smaller pieces of related functionality\n// and have multiple routers / controllers, instead of\n// just one giant router and controller.\n//\n// You can also add standard routes to an AppRouter.\n\n// API borrowed from Marionette.Object\nvar ObjectAPI = ['triggerMethod', 'normalizeMethods', '_setOptions', 'mergeOptions', 'getOption', 'bindEvents', 'unbindEvents'];\n\nvar ClassOptions = ['appRoutes', 'controller'];\n\nvar AppRouter = Backbone.Router.extend({\n  constructor: function constructor(options) {\n    this._setOptions(options);\n\n    this.mergeOptions(options, ClassOptions);\n\n    Backbone.Router.apply(this, arguments);\n\n    var appRoutes = this.appRoutes;\n    var controller = this._getController();\n    this.processAppRoutes(controller, appRoutes);\n    this.on('route', this._processOnRoute, this);\n  },\n\n\n  // Similar to route method on a Backbone Router but\n  // method is called on the controller\n  appRoute: function appRoute(route, methodName) {\n    var controller = this._getController();\n    this._addAppRoute(controller, route, methodName);\n    return this;\n  },\n\n\n  // process the route event and trigger the onRoute\n  // method call, if it exists\n  _processOnRoute: function _processOnRoute(routeName, routeArgs) {\n    // make sure an onRoute before trying to call it\n    if (_.isFunction(this.onRoute)) {\n      // find the path that matches the current route\n      var routePath = _.invert(this.appRoutes)[routeName];\n      this.onRoute(routeName, routePath, routeArgs);\n    }\n  },\n\n\n  // Internal method to process the `appRoutes` for the\n  // router, and turn them in to routes that trigger the\n  // specified method on the specified `controller`.\n  processAppRoutes: function processAppRoutes(controller, appRoutes) {\n    var _this = this;\n\n    if (!appRoutes) {\n      return this;\n    }\n\n    var routeNames = _.keys(appRoutes).reverse(); // Backbone requires reverted order of routes\n\n    _.each(routeNames, function (route) {\n      _this._addAppRoute(controller, route, appRoutes[route]);\n    });\n\n    return this;\n  },\n  _getController: function _getController() {\n    return this.controller;\n  },\n  _addAppRoute: function _addAppRoute(controller, route, methodName) {\n    var method = controller[methodName];\n\n    if (!method) {\n      throw new Error('Method \"' + methodName + '\" was not found on the controller');\n    }\n\n    this.route(route, methodName, _.bind(method, controller));\n  }\n});\n\n_.extend(AppRouter.prototype, _.pick(MnObject.prototype, ObjectAPI));\n\n// For Backwards compatibility\nMarionette.AppRouter = AppRouter;\n\nexport default AppRouter;\n//# sourceMappingURL=marionette.approuter.esm.js.map\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n *   doAsyncWork(controller.signal)\n * } catch (e) {\n *   if (e.name === 'AbortError') {\n *     // handle abort error here.\n *   }\n * }\n * ```\n */\nexport class AbortError extends Error {\n    constructor(message) {\n        super(message);\n        this.name = \"AbortError\";\n    }\n}\n//# sourceMappingURL=AbortError.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * @internal\n * @param accessToken - Access token\n * @returns Whether a token is bearer type or not\n */\nexport function isBearerToken(accessToken) {\n    return !accessToken.tokenType || accessToken.tokenType === \"Bearer\";\n}\n/**\n * @internal\n * @param accessToken - Access token\n * @returns Whether a token is Pop token or not\n */\nexport function isPopToken(accessToken) {\n    return accessToken.tokenType === \"pop\";\n}\n/**\n * Tests an object to determine whether it implements TokenCredential.\n *\n * @param credential - The assumed TokenCredential to be tested.\n */\nexport function isTokenCredential(credential) {\n    // Check for an object with a 'getToken' function and possibly with\n    // a 'signRequest' function.  We do this check to make sure that\n    // a ServiceClientCredentials implementor (like TokenClientCredentials\n    // in ms-rest-nodeauth) doesn't get mistaken for a TokenCredential if\n    // it doesn't actually implement TokenCredential also.\n    const castCredential = credential;\n    return (castCredential &&\n        typeof castCredential.getToken === \"function\" &&\n        (castCredential.signRequest === undefined || castCredential.getToken.length > 0));\n}\n//# sourceMappingURL=tokenCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Encodes a string in base64 format.\n * @param value - the string to encode\n * @internal\n */\nexport function encodeString(value) {\n    return btoa(value);\n}\n/**\n * Encodes a byte array in base64 format.\n * @param value - the Uint8Aray to encode\n * @internal\n */\nexport function encodeByteArray(value) {\n    let str = \"\";\n    for (let i = 0; i < value.length; i++) {\n        str += String.fromCharCode(value[i]);\n    }\n    return btoa(str);\n}\n/**\n * Decodes a base64 string into a byte array.\n * @param value - the base64 string to decode\n * @internal\n */\nexport function decodeString(value) {\n    const byteString = atob(value);\n    const arr = new Uint8Array(byteString.length);\n    for (let i = 0; i < byteString.length; i++) {\n        arr[i] = byteString.charCodeAt(i);\n    }\n    return arr;\n}\n/**\n * Decodes a base64 string into a string.\n * @param value - the base64 string to decode\n * @internal\n */\nexport function decodeStringToString(value) {\n    return atob(value);\n}\n//# sourceMappingURL=base64-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Default key used to access the XML attributes.\n */\nexport const XML_ATTRKEY = \"$\";\n/**\n * Default key used to access the XML value content.\n */\nexport const XML_CHARKEY = \"_\";\n//# sourceMappingURL=interfaces.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * A type guard for a primitive response body.\n * @param value - Value to test\n *\n * @internal\n */\nexport function isPrimitiveBody(value, mapperTypeName) {\n    return (mapperTypeName !== \"Composite\" &&\n        mapperTypeName !== \"Dictionary\" &&\n        (typeof value === \"string\" ||\n            typeof value === \"number\" ||\n            typeof value === \"boolean\" ||\n            (mapperTypeName === null || mapperTypeName === void 0 ? void 0 : mapperTypeName.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i)) !==\n                null ||\n            value === undefined ||\n            value === null));\n}\nconst validateISODuration = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n/**\n * Returns true if the given string is in ISO 8601 format.\n * @param value - The value to be validated for ISO 8601 duration format.\n * @internal\n */\nexport function isDuration(value) {\n    return validateISODuration.test(value);\n}\nconst validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;\n/**\n * Returns true if the provided uuid is valid.\n *\n * @param uuid - The uuid that needs to be validated.\n *\n * @internal\n */\nexport function isValidUuid(uuid) {\n    return validUuidRegex.test(uuid);\n}\n/**\n * Maps the response as follows:\n * - wraps the response body if needed (typically if its type is primitive).\n * - returns null if the combination of the headers and the body is empty.\n * - otherwise, returns the combination of the headers and the body.\n *\n * @param responseObject - a representation of the parsed response\n * @returns the response that will be returned to the user which can be null and/or wrapped\n *\n * @internal\n */\nfunction handleNullableResponseAndWrappableBody(responseObject) {\n    const combinedHeadersAndBody = Object.assign(Object.assign({}, responseObject.headers), responseObject.body);\n    if (responseObject.hasNullableType &&\n        Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0) {\n        return responseObject.shouldWrapBody ? { body: null } : null;\n    }\n    else {\n        return responseObject.shouldWrapBody\n            ? Object.assign(Object.assign({}, responseObject.headers), { body: responseObject.body }) : combinedHeadersAndBody;\n    }\n}\n/**\n * Take a `FullOperationResponse` and turn it into a flat\n * response object to hand back to the consumer.\n * @param fullResponse - The processed response from the operation request\n * @param responseSpec - The response map from the OperationSpec\n *\n * @internal\n */\nexport function flattenResponse(fullResponse, responseSpec) {\n    var _a, _b;\n    const parsedHeaders = fullResponse.parsedHeaders;\n    // head methods never have a body, but we return a boolean set to body property\n    // to indicate presence/absence of the resource\n    if (fullResponse.request.method === \"HEAD\") {\n        return Object.assign(Object.assign({}, parsedHeaders), { body: fullResponse.parsedBody });\n    }\n    const bodyMapper = responseSpec && responseSpec.bodyMapper;\n    const isNullable = Boolean(bodyMapper === null || bodyMapper === void 0 ? void 0 : bodyMapper.nullable);\n    const expectedBodyTypeName = bodyMapper === null || bodyMapper === void 0 ? void 0 : bodyMapper.type.name;\n    /** If the body is asked for, we look at the expected body type to handle it */\n    if (expectedBodyTypeName === \"Stream\") {\n        return Object.assign(Object.assign({}, parsedHeaders), { blobBody: fullResponse.blobBody, readableStreamBody: fullResponse.readableStreamBody });\n    }\n    const modelProperties = (expectedBodyTypeName === \"Composite\" &&\n        bodyMapper.type.modelProperties) ||\n        {};\n    const isPageableResponse = Object.keys(modelProperties).some((k) => modelProperties[k].serializedName === \"\");\n    if (expectedBodyTypeName === \"Sequence\" || isPageableResponse) {\n        const arrayResponse = (_a = fullResponse.parsedBody) !== null && _a !== void 0 ? _a : [];\n        for (const key of Object.keys(modelProperties)) {\n            if (modelProperties[key].serializedName) {\n                arrayResponse[key] = (_b = fullResponse.parsedBody) === null || _b === void 0 ? void 0 : _b[key];\n            }\n        }\n        if (parsedHeaders) {\n            for (const key of Object.keys(parsedHeaders)) {\n                arrayResponse[key] = parsedHeaders[key];\n            }\n        }\n        return isNullable &&\n            !fullResponse.parsedBody &&\n            !parsedHeaders &&\n            Object.getOwnPropertyNames(modelProperties).length === 0\n            ? null\n            : arrayResponse;\n    }\n    return handleNullableResponseAndWrappableBody({\n        body: fullResponse.parsedBody,\n        headers: parsedHeaders,\n        hasNullableType: isNullable,\n        shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName),\n    });\n}\n//# sourceMappingURL=utils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport * as base64 from \"./base64.js\";\nimport { XML_ATTRKEY, XML_CHARKEY, } from \"./interfaces.js\";\nimport { isDuration, isValidUuid } from \"./utils.js\";\nclass SerializerImpl {\n    constructor(modelMappers = {}, isXML = false) {\n        this.modelMappers = modelMappers;\n        this.isXML = isXML;\n    }\n    /**\n     * @deprecated Removing the constraints validation on client side.\n     */\n    validateConstraints(mapper, value, objectName) {\n        const failValidation = (constraintName, constraintValue) => {\n            throw new Error(`\"${objectName}\" with value \"${value}\" should satisfy the constraint \"${constraintName}\": ${constraintValue}.`);\n        };\n        if (mapper.constraints && value !== undefined && value !== null) {\n            const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern, UniqueItems, } = mapper.constraints;\n            if (ExclusiveMaximum !== undefined && value >= ExclusiveMaximum) {\n                failValidation(\"ExclusiveMaximum\", ExclusiveMaximum);\n            }\n            if (ExclusiveMinimum !== undefined && value <= ExclusiveMinimum) {\n                failValidation(\"ExclusiveMinimum\", ExclusiveMinimum);\n            }\n            if (InclusiveMaximum !== undefined && value > InclusiveMaximum) {\n                failValidation(\"InclusiveMaximum\", InclusiveMaximum);\n            }\n            if (InclusiveMinimum !== undefined && value < InclusiveMinimum) {\n                failValidation(\"InclusiveMinimum\", InclusiveMinimum);\n            }\n            if (MaxItems !== undefined && value.length > MaxItems) {\n                failValidation(\"MaxItems\", MaxItems);\n            }\n            if (MaxLength !== undefined && value.length > MaxLength) {\n                failValidation(\"MaxLength\", MaxLength);\n            }\n            if (MinItems !== undefined && value.length < MinItems) {\n                failValidation(\"MinItems\", MinItems);\n            }\n            if (MinLength !== undefined && value.length < MinLength) {\n                failValidation(\"MinLength\", MinLength);\n            }\n            if (MultipleOf !== undefined && value % MultipleOf !== 0) {\n                failValidation(\"MultipleOf\", MultipleOf);\n            }\n            if (Pattern) {\n                const pattern = typeof Pattern === \"string\" ? new RegExp(Pattern) : Pattern;\n                if (typeof value !== \"string\" || value.match(pattern) === null) {\n                    failValidation(\"Pattern\", Pattern);\n                }\n            }\n            if (UniqueItems &&\n                value.some((item, i, ar) => ar.indexOf(item) !== i)) {\n                failValidation(\"UniqueItems\", UniqueItems);\n            }\n        }\n    }\n    /**\n     * Serialize the given object based on its metadata defined in the mapper\n     *\n     * @param mapper - The mapper which defines the metadata of the serializable object\n     *\n     * @param object - A valid Javascript object to be serialized\n     *\n     * @param objectName - Name of the serialized object\n     *\n     * @param options - additional options to serialization\n     *\n     * @returns A valid serialized Javascript object\n     */\n    serialize(mapper, object, objectName, options = { xml: {} }) {\n        var _a, _b, _c;\n        const updatedOptions = {\n            xml: {\n                rootName: (_a = options.xml.rootName) !== null && _a !== void 0 ? _a : \"\",\n                includeRoot: (_b = options.xml.includeRoot) !== null && _b !== void 0 ? _b : false,\n                xmlCharKey: (_c = options.xml.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n            },\n        };\n        let payload = {};\n        const mapperType = mapper.type.name;\n        if (!objectName) {\n            objectName = mapper.serializedName;\n        }\n        if (mapperType.match(/^Sequence$/i) !== null) {\n            payload = [];\n        }\n        if (mapper.isConstant) {\n            object = mapper.defaultValue;\n        }\n        // This table of allowed values should help explain\n        // the mapper.required and mapper.nullable properties.\n        // X means \"neither undefined or null are allowed\".\n        //           || required\n        //           || true      | false\n        //  nullable || ==========================\n        //      true || null      | undefined/null\n        //     false || X         | undefined\n        // undefined || X         | undefined/null\n        const { required, nullable } = mapper;\n        if (required && nullable && object === undefined) {\n            throw new Error(`${objectName} cannot be undefined.`);\n        }\n        if (required && !nullable && (object === undefined || object === null)) {\n            throw new Error(`${objectName} cannot be null or undefined.`);\n        }\n        if (!required && nullable === false && object === null) {\n            throw new Error(`${objectName} cannot be null.`);\n        }\n        if (object === undefined || object === null) {\n            payload = object;\n        }\n        else {\n            if (mapperType.match(/^any$/i) !== null) {\n                payload = object;\n            }\n            else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) {\n                payload = serializeBasicTypes(mapperType, objectName, object);\n            }\n            else if (mapperType.match(/^Enum$/i) !== null) {\n                const enumMapper = mapper;\n                payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);\n            }\n            else if (mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null) {\n                payload = serializeDateTypes(mapperType, object, objectName);\n            }\n            else if (mapperType.match(/^ByteArray$/i) !== null) {\n                payload = serializeByteArrayType(objectName, object);\n            }\n            else if (mapperType.match(/^Base64Url$/i) !== null) {\n                payload = serializeBase64UrlType(objectName, object);\n            }\n            else if (mapperType.match(/^Sequence$/i) !== null) {\n                payload = serializeSequenceType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n            }\n            else if (mapperType.match(/^Dictionary$/i) !== null) {\n                payload = serializeDictionaryType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n            }\n            else if (mapperType.match(/^Composite$/i) !== null) {\n                payload = serializeCompositeType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n            }\n        }\n        return payload;\n    }\n    /**\n     * Deserialize the given object based on its metadata defined in the mapper\n     *\n     * @param mapper - The mapper which defines the metadata of the serializable object\n     *\n     * @param responseBody - A valid Javascript entity to be deserialized\n     *\n     * @param objectName - Name of the deserialized object\n     *\n     * @param options - Controls behavior of XML parser and builder.\n     *\n     * @returns A valid deserialized Javascript object\n     */\n    deserialize(mapper, responseBody, objectName, options = { xml: {} }) {\n        var _a, _b, _c, _d;\n        const updatedOptions = {\n            xml: {\n                rootName: (_a = options.xml.rootName) !== null && _a !== void 0 ? _a : \"\",\n                includeRoot: (_b = options.xml.includeRoot) !== null && _b !== void 0 ? _b : false,\n                xmlCharKey: (_c = options.xml.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n            },\n            ignoreUnknownProperties: (_d = options.ignoreUnknownProperties) !== null && _d !== void 0 ? _d : false,\n        };\n        if (responseBody === undefined || responseBody === null) {\n            if (this.isXML && mapper.type.name === \"Sequence\" && !mapper.xmlIsWrapped) {\n                // Edge case for empty XML non-wrapped lists. xml2js can't distinguish\n                // between the list being empty versus being missing,\n                // so let's do the more user-friendly thing and return an empty list.\n                responseBody = [];\n            }\n            // specifically check for undefined as default value can be a falsey value `0, \"\", false, null`\n            if (mapper.defaultValue !== undefined) {\n                responseBody = mapper.defaultValue;\n            }\n            return responseBody;\n        }\n        let payload;\n        const mapperType = mapper.type.name;\n        if (!objectName) {\n            objectName = mapper.serializedName;\n        }\n        if (mapperType.match(/^Composite$/i) !== null) {\n            payload = deserializeCompositeType(this, mapper, responseBody, objectName, updatedOptions);\n        }\n        else {\n            if (this.isXML) {\n                const xmlCharKey = updatedOptions.xml.xmlCharKey;\n                /**\n                 * If the mapper specifies this as a non-composite type value but the responseBody contains\n                 * both header (\"$\" i.e., XML_ATTRKEY) and body (\"#\" i.e., XML_CHARKEY) properties,\n                 * then just reduce the responseBody value to the body (\"#\" i.e., XML_CHARKEY) property.\n                 */\n                if (responseBody[XML_ATTRKEY] !== undefined && responseBody[xmlCharKey] !== undefined) {\n                    responseBody = responseBody[xmlCharKey];\n                }\n            }\n            if (mapperType.match(/^Number$/i) !== null) {\n                payload = parseFloat(responseBody);\n                if (isNaN(payload)) {\n                    payload = responseBody;\n                }\n            }\n            else if (mapperType.match(/^Boolean$/i) !== null) {\n                if (responseBody === \"true\") {\n                    payload = true;\n                }\n                else if (responseBody === \"false\") {\n                    payload = false;\n                }\n                else {\n                    payload = responseBody;\n                }\n            }\n            else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) {\n                payload = responseBody;\n            }\n            else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) {\n                payload = new Date(responseBody);\n            }\n            else if (mapperType.match(/^UnixTime$/i) !== null) {\n                payload = unixTimeToDate(responseBody);\n            }\n            else if (mapperType.match(/^ByteArray$/i) !== null) {\n                payload = base64.decodeString(responseBody);\n            }\n            else if (mapperType.match(/^Base64Url$/i) !== null) {\n                payload = base64UrlToByteArray(responseBody);\n            }\n            else if (mapperType.match(/^Sequence$/i) !== null) {\n                payload = deserializeSequenceType(this, mapper, responseBody, objectName, updatedOptions);\n            }\n            else if (mapperType.match(/^Dictionary$/i) !== null) {\n                payload = deserializeDictionaryType(this, mapper, responseBody, objectName, updatedOptions);\n            }\n        }\n        if (mapper.isConstant) {\n            payload = mapper.defaultValue;\n        }\n        return payload;\n    }\n}\n/**\n * Method that creates and returns a Serializer.\n * @param modelMappers - Known models to map\n * @param isXML - If XML should be supported\n */\nexport function createSerializer(modelMappers = {}, isXML = false) {\n    return new SerializerImpl(modelMappers, isXML);\n}\nfunction trimEnd(str, ch) {\n    let len = str.length;\n    while (len - 1 >= 0 && str[len - 1] === ch) {\n        --len;\n    }\n    return str.substr(0, len);\n}\nfunction bufferToBase64Url(buffer) {\n    if (!buffer) {\n        return undefined;\n    }\n    if (!(buffer instanceof Uint8Array)) {\n        throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);\n    }\n    // Uint8Array to Base64.\n    const str = base64.encodeByteArray(buffer);\n    // Base64 to Base64Url.\n    return trimEnd(str, \"=\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\nfunction base64UrlToByteArray(str) {\n    if (!str) {\n        return undefined;\n    }\n    if (str && typeof str.valueOf() !== \"string\") {\n        throw new Error(\"Please provide an input of type string for converting to Uint8Array\");\n    }\n    // Base64Url to Base64.\n    str = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n    // Base64 to Uint8Array.\n    return base64.decodeString(str);\n}\nfunction splitSerializeName(prop) {\n    const classes = [];\n    let partialclass = \"\";\n    if (prop) {\n        const subwords = prop.split(\".\");\n        for (const item of subwords) {\n            if (item.charAt(item.length - 1) === \"\\\\\") {\n                partialclass += item.substr(0, item.length - 1) + \".\";\n            }\n            else {\n                partialclass += item;\n                classes.push(partialclass);\n                partialclass = \"\";\n            }\n        }\n    }\n    return classes;\n}\nfunction dateToUnixTime(d) {\n    if (!d) {\n        return undefined;\n    }\n    if (typeof d.valueOf() === \"string\") {\n        d = new Date(d);\n    }\n    return Math.floor(d.getTime() / 1000);\n}\nfunction unixTimeToDate(n) {\n    if (!n) {\n        return undefined;\n    }\n    return new Date(n * 1000);\n}\nfunction serializeBasicTypes(typeName, objectName, value) {\n    if (value !== null && value !== undefined) {\n        if (typeName.match(/^Number$/i) !== null) {\n            if (typeof value !== \"number\") {\n                throw new Error(`${objectName} with value ${value} must be of type number.`);\n            }\n        }\n        else if (typeName.match(/^String$/i) !== null) {\n            if (typeof value.valueOf() !== \"string\") {\n                throw new Error(`${objectName} with value \"${value}\" must be of type string.`);\n            }\n        }\n        else if (typeName.match(/^Uuid$/i) !== null) {\n            if (!(typeof value.valueOf() === \"string\" && isValidUuid(value))) {\n                throw new Error(`${objectName} with value \"${value}\" must be of type string and a valid uuid.`);\n            }\n        }\n        else if (typeName.match(/^Boolean$/i) !== null) {\n            if (typeof value !== \"boolean\") {\n                throw new Error(`${objectName} with value ${value} must be of type boolean.`);\n            }\n        }\n        else if (typeName.match(/^Stream$/i) !== null) {\n            const objectType = typeof value;\n            if (objectType !== \"string\" &&\n                typeof value.pipe !== \"function\" && // NodeJS.ReadableStream\n                typeof value.tee !== \"function\" && // browser ReadableStream\n                !(value instanceof ArrayBuffer) &&\n                !ArrayBuffer.isView(value) &&\n                // File objects count as a type of Blob, so we want to use instanceof explicitly\n                !((typeof Blob === \"function\" || typeof Blob === \"object\") && value instanceof Blob) &&\n                objectType !== \"function\") {\n                throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`);\n            }\n        }\n    }\n    return value;\n}\nfunction serializeEnumType(objectName, allowedValues, value) {\n    if (!allowedValues) {\n        throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`);\n    }\n    const isPresent = allowedValues.some((item) => {\n        if (typeof item.valueOf() === \"string\") {\n            return item.toLowerCase() === value.toLowerCase();\n        }\n        return item === value;\n    });\n    if (!isPresent) {\n        throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`);\n    }\n    return value;\n}\nfunction serializeByteArrayType(objectName, value) {\n    if (value !== undefined && value !== null) {\n        if (!(value instanceof Uint8Array)) {\n            throw new Error(`${objectName} must be of type Uint8Array.`);\n        }\n        value = base64.encodeByteArray(value);\n    }\n    return value;\n}\nfunction serializeBase64UrlType(objectName, value) {\n    if (value !== undefined && value !== null) {\n        if (!(value instanceof Uint8Array)) {\n            throw new Error(`${objectName} must be of type Uint8Array.`);\n        }\n        value = bufferToBase64Url(value);\n    }\n    return value;\n}\nfunction serializeDateTypes(typeName, value, objectName) {\n    if (value !== undefined && value !== null) {\n        if (typeName.match(/^Date$/i) !== null) {\n            if (!(value instanceof Date ||\n                (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n                throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n            }\n            value =\n                value instanceof Date\n                    ? value.toISOString().substring(0, 10)\n                    : new Date(value).toISOString().substring(0, 10);\n        }\n        else if (typeName.match(/^DateTime$/i) !== null) {\n            if (!(value instanceof Date ||\n                (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n                throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n            }\n            value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();\n        }\n        else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {\n            if (!(value instanceof Date ||\n                (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n                throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);\n            }\n            value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();\n        }\n        else if (typeName.match(/^UnixTime$/i) !== null) {\n            if (!(value instanceof Date ||\n                (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n                throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +\n                    `for it to be serialized in UnixTime/Epoch format.`);\n            }\n            value = dateToUnixTime(value);\n        }\n        else if (typeName.match(/^TimeSpan$/i) !== null) {\n            if (!isDuration(value)) {\n                throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was \"${value}\".`);\n            }\n        }\n    }\n    return value;\n}\nfunction serializeSequenceType(serializer, mapper, object, objectName, isXml, options) {\n    var _a;\n    if (!Array.isArray(object)) {\n        throw new Error(`${objectName} must be of type Array.`);\n    }\n    let elementType = mapper.type.element;\n    if (!elementType || typeof elementType !== \"object\") {\n        throw new Error(`element\" metadata for an Array must be defined in the ` +\n            `mapper and it must of type \"object\" in ${objectName}.`);\n    }\n    // Quirk: Composite mappers referenced by `element` might\n    // not have *all* properties declared (like uberParent),\n    // so let's try to look up the full definition by name.\n    if (elementType.type.name === \"Composite\" && elementType.type.className) {\n        elementType = (_a = serializer.modelMappers[elementType.type.className]) !== null && _a !== void 0 ? _a : elementType;\n    }\n    const tempArray = [];\n    for (let i = 0; i < object.length; i++) {\n        const serializedValue = serializer.serialize(elementType, object[i], objectName, options);\n        if (isXml && elementType.xmlNamespace) {\n            const xmlnsKey = elementType.xmlNamespacePrefix\n                ? `xmlns:${elementType.xmlNamespacePrefix}`\n                : \"xmlns\";\n            if (elementType.type.name === \"Composite\") {\n                tempArray[i] = Object.assign({}, serializedValue);\n                tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n            }\n            else {\n                tempArray[i] = {};\n                tempArray[i][options.xml.xmlCharKey] = serializedValue;\n                tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n            }\n        }\n        else {\n            tempArray[i] = serializedValue;\n        }\n    }\n    return tempArray;\n}\nfunction serializeDictionaryType(serializer, mapper, object, objectName, isXml, options) {\n    if (typeof object !== \"object\") {\n        throw new Error(`${objectName} must be of type object.`);\n    }\n    const valueType = mapper.type.value;\n    if (!valueType || typeof valueType !== \"object\") {\n        throw new Error(`\"value\" metadata for a Dictionary must be defined in the ` +\n            `mapper and it must of type \"object\" in ${objectName}.`);\n    }\n    const tempDictionary = {};\n    for (const key of Object.keys(object)) {\n        const serializedValue = serializer.serialize(valueType, object[key], objectName, options);\n        // If the element needs an XML namespace we need to add it within the $ property\n        tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);\n    }\n    // Add the namespace to the root element if needed\n    if (isXml && mapper.xmlNamespace) {\n        const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : \"xmlns\";\n        const result = tempDictionary;\n        result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };\n        return result;\n    }\n    return tempDictionary;\n}\n/**\n * Resolves the additionalProperties property from a referenced mapper\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveAdditionalProperties(serializer, mapper, objectName) {\n    const additionalProperties = mapper.type.additionalProperties;\n    if (!additionalProperties && mapper.type.className) {\n        const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n        return modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.additionalProperties;\n    }\n    return additionalProperties;\n}\n/**\n * Finds the mapper referenced by className\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveReferencedMapper(serializer, mapper, objectName) {\n    const className = mapper.type.className;\n    if (!className) {\n        throw new Error(`Class name for model \"${objectName}\" is not provided in the mapper \"${JSON.stringify(mapper, undefined, 2)}\".`);\n    }\n    return serializer.modelMappers[className];\n}\n/**\n * Resolves a composite mapper's modelProperties.\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n */\nfunction resolveModelProperties(serializer, mapper, objectName) {\n    let modelProps = mapper.type.modelProperties;\n    if (!modelProps) {\n        const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n        if (!modelMapper) {\n            throw new Error(`mapper() cannot be null or undefined for model \"${mapper.type.className}\".`);\n        }\n        modelProps = modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.modelProperties;\n        if (!modelProps) {\n            throw new Error(`modelProperties cannot be null or undefined in the ` +\n                `mapper \"${JSON.stringify(modelMapper)}\" of type \"${mapper.type.className}\" for object \"${objectName}\".`);\n        }\n    }\n    return modelProps;\n}\nfunction serializeCompositeType(serializer, mapper, object, objectName, isXml, options) {\n    if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n        mapper = getPolymorphicMapper(serializer, mapper, object, \"clientName\");\n    }\n    if (object !== undefined && object !== null) {\n        const payload = {};\n        const modelProps = resolveModelProperties(serializer, mapper, objectName);\n        for (const key of Object.keys(modelProps)) {\n            const propertyMapper = modelProps[key];\n            if (propertyMapper.readOnly) {\n                continue;\n            }\n            let propName;\n            let parentObject = payload;\n            if (serializer.isXML) {\n                if (propertyMapper.xmlIsWrapped) {\n                    propName = propertyMapper.xmlName;\n                }\n                else {\n                    propName = propertyMapper.xmlElementName || propertyMapper.xmlName;\n                }\n            }\n            else {\n                const paths = splitSerializeName(propertyMapper.serializedName);\n                propName = paths.pop();\n                for (const pathName of paths) {\n                    const childObject = parentObject[pathName];\n                    if ((childObject === undefined || childObject === null) &&\n                        ((object[key] !== undefined && object[key] !== null) ||\n                            propertyMapper.defaultValue !== undefined)) {\n                        parentObject[pathName] = {};\n                    }\n                    parentObject = parentObject[pathName];\n                }\n            }\n            if (parentObject !== undefined && parentObject !== null) {\n                if (isXml && mapper.xmlNamespace) {\n                    const xmlnsKey = mapper.xmlNamespacePrefix\n                        ? `xmlns:${mapper.xmlNamespacePrefix}`\n                        : \"xmlns\";\n                    parentObject[XML_ATTRKEY] = Object.assign(Object.assign({}, parentObject[XML_ATTRKEY]), { [xmlnsKey]: mapper.xmlNamespace });\n                }\n                const propertyObjectName = propertyMapper.serializedName !== \"\"\n                    ? objectName + \".\" + propertyMapper.serializedName\n                    : objectName;\n                let toSerialize = object[key];\n                const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n                if (polymorphicDiscriminator &&\n                    polymorphicDiscriminator.clientName === key &&\n                    (toSerialize === undefined || toSerialize === null)) {\n                    toSerialize = mapper.serializedName;\n                }\n                const serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options);\n                if (serializedValue !== undefined && propName !== undefined && propName !== null) {\n                    const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);\n                    if (isXml && propertyMapper.xmlIsAttribute) {\n                        // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.\n                        // This keeps things simple while preventing name collision\n                        // with names in user documents.\n                        parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {};\n                        parentObject[XML_ATTRKEY][propName] = serializedValue;\n                    }\n                    else if (isXml && propertyMapper.xmlIsWrapped) {\n                        parentObject[propName] = { [propertyMapper.xmlElementName]: value };\n                    }\n                    else {\n                        parentObject[propName] = value;\n                    }\n                }\n            }\n        }\n        const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);\n        if (additionalPropertiesMapper) {\n            const propNames = Object.keys(modelProps);\n            for (const clientPropName in object) {\n                const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);\n                if (isAdditionalProperty) {\n                    payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '[\"' + clientPropName + '\"]', options);\n                }\n            }\n        }\n        return payload;\n    }\n    return object;\n}\nfunction getXmlObjectValue(propertyMapper, serializedValue, isXml, options) {\n    if (!isXml || !propertyMapper.xmlNamespace) {\n        return serializedValue;\n    }\n    const xmlnsKey = propertyMapper.xmlNamespacePrefix\n        ? `xmlns:${propertyMapper.xmlNamespacePrefix}`\n        : \"xmlns\";\n    const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };\n    if ([\"Composite\"].includes(propertyMapper.type.name)) {\n        if (serializedValue[XML_ATTRKEY]) {\n            return serializedValue;\n        }\n        else {\n            const result = Object.assign({}, serializedValue);\n            result[XML_ATTRKEY] = xmlNamespace;\n            return result;\n        }\n    }\n    const result = {};\n    result[options.xml.xmlCharKey] = serializedValue;\n    result[XML_ATTRKEY] = xmlNamespace;\n    return result;\n}\nfunction isSpecialXmlProperty(propertyName, options) {\n    return [XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName);\n}\nfunction deserializeCompositeType(serializer, mapper, responseBody, objectName, options) {\n    var _a, _b;\n    const xmlCharKey = (_a = options.xml.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;\n    if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n        mapper = getPolymorphicMapper(serializer, mapper, responseBody, \"serializedName\");\n    }\n    const modelProps = resolveModelProperties(serializer, mapper, objectName);\n    let instance = {};\n    const handledPropertyNames = [];\n    for (const key of Object.keys(modelProps)) {\n        const propertyMapper = modelProps[key];\n        const paths = splitSerializeName(modelProps[key].serializedName);\n        handledPropertyNames.push(paths[0]);\n        const { serializedName, xmlName, xmlElementName } = propertyMapper;\n        let propertyObjectName = objectName;\n        if (serializedName !== \"\" && serializedName !== undefined) {\n            propertyObjectName = objectName + \".\" + serializedName;\n        }\n        const headerCollectionPrefix = propertyMapper.headerCollectionPrefix;\n        if (headerCollectionPrefix) {\n            const dictionary = {};\n            for (const headerKey of Object.keys(responseBody)) {\n                if (headerKey.startsWith(headerCollectionPrefix)) {\n                    dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName, options);\n                }\n                handledPropertyNames.push(headerKey);\n            }\n            instance[key] = dictionary;\n        }\n        else if (serializer.isXML) {\n            if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) {\n                instance[key] = serializer.deserialize(propertyMapper, responseBody[XML_ATTRKEY][xmlName], propertyObjectName, options);\n            }\n            else if (propertyMapper.xmlIsMsText) {\n                if (responseBody[xmlCharKey] !== undefined) {\n                    instance[key] = responseBody[xmlCharKey];\n                }\n                else if (typeof responseBody === \"string\") {\n                    // The special case where xml parser parses \"<Name>content</Name>\" into JSON of\n                    //   `{ name: \"content\"}` instead of `{ name: { \"_\": \"content\" }}`\n                    instance[key] = responseBody;\n                }\n            }\n            else {\n                const propertyName = xmlElementName || xmlName || serializedName;\n                if (propertyMapper.xmlIsWrapped) {\n                    /* a list of <xmlElementName> wrapped by <xmlName>\n                      For the xml example below\n                        <Cors>\n                          <CorsRule>...</CorsRule>\n                          <CorsRule>...</CorsRule>\n                        </Cors>\n                      the responseBody has\n                        {\n                          Cors: {\n                            CorsRule: [{...}, {...}]\n                          }\n                        }\n                      xmlName is \"Cors\" and xmlElementName is\"CorsRule\".\n                    */\n                    const wrapped = responseBody[xmlName];\n                    const elementList = (_b = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _b !== void 0 ? _b : [];\n                    instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options);\n                    handledPropertyNames.push(xmlName);\n                }\n                else {\n                    const property = responseBody[propertyName];\n                    instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName, options);\n                    handledPropertyNames.push(propertyName);\n                }\n            }\n        }\n        else {\n            // deserialize the property if it is present in the provided responseBody instance\n            let propertyInstance;\n            let res = responseBody;\n            // traversing the object step by step.\n            let steps = 0;\n            for (const item of paths) {\n                if (!res)\n                    break;\n                steps++;\n                res = res[item];\n            }\n            // only accept null when reaching the last position of object otherwise it would be undefined\n            if (res === null && steps < paths.length) {\n                res = undefined;\n            }\n            propertyInstance = res;\n            const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;\n            // checking that the model property name (key)(ex: \"fishtype\") and the\n            // clientName of the polymorphicDiscriminator {metadata} (ex: \"fishtype\")\n            // instead of the serializedName of the polymorphicDiscriminator (ex: \"fish.type\")\n            // is a better approach. The generator is not consistent with escaping '\\.' in the\n            // serializedName of the property (ex: \"fish\\.type\") that is marked as polymorphic discriminator\n            // and the serializedName of the metadata polymorphicDiscriminator (ex: \"fish.type\"). However,\n            // the clientName transformation of the polymorphicDiscriminator (ex: \"fishtype\") and\n            // the transformation of model property name (ex: \"fishtype\") is done consistently.\n            // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator.\n            if (polymorphicDiscriminator &&\n                key === polymorphicDiscriminator.clientName &&\n                (propertyInstance === undefined || propertyInstance === null)) {\n                propertyInstance = mapper.serializedName;\n            }\n            let serializedValue;\n            // paging\n            if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === \"\") {\n                propertyInstance = responseBody[key];\n                const arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);\n                // Copy over any properties that have already been added into the instance, where they do\n                // not exist on the newly de-serialized array\n                for (const [k, v] of Object.entries(instance)) {\n                    if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {\n                        arrayInstance[k] = v;\n                    }\n                }\n                instance = arrayInstance;\n            }\n            else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) {\n                serializedValue = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);\n                instance[key] = serializedValue;\n            }\n        }\n    }\n    const additionalPropertiesMapper = mapper.type.additionalProperties;\n    if (additionalPropertiesMapper) {\n        const isAdditionalProperty = (responsePropName) => {\n            for (const clientPropName in modelProps) {\n                const paths = splitSerializeName(modelProps[clientPropName].serializedName);\n                if (paths[0] === responsePropName) {\n                    return false;\n                }\n            }\n            return true;\n        };\n        for (const responsePropName in responseBody) {\n            if (isAdditionalProperty(responsePropName)) {\n                instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '[\"' + responsePropName + '\"]', options);\n            }\n        }\n    }\n    else if (responseBody && !options.ignoreUnknownProperties) {\n        for (const key of Object.keys(responseBody)) {\n            if (instance[key] === undefined &&\n                !handledPropertyNames.includes(key) &&\n                !isSpecialXmlProperty(key, options)) {\n                instance[key] = responseBody[key];\n            }\n        }\n    }\n    return instance;\n}\nfunction deserializeDictionaryType(serializer, mapper, responseBody, objectName, options) {\n    /* jshint validthis: true */\n    const value = mapper.type.value;\n    if (!value || typeof value !== \"object\") {\n        throw new Error(`\"value\" metadata for a Dictionary must be defined in the ` +\n            `mapper and it must of type \"object\" in ${objectName}`);\n    }\n    if (responseBody) {\n        const tempDictionary = {};\n        for (const key of Object.keys(responseBody)) {\n            tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);\n        }\n        return tempDictionary;\n    }\n    return responseBody;\n}\nfunction deserializeSequenceType(serializer, mapper, responseBody, objectName, options) {\n    var _a;\n    let element = mapper.type.element;\n    if (!element || typeof element !== \"object\") {\n        throw new Error(`element\" metadata for an Array must be defined in the ` +\n            `mapper and it must of type \"object\" in ${objectName}`);\n    }\n    if (responseBody) {\n        if (!Array.isArray(responseBody)) {\n            // xml2js will interpret a single element array as just the element, so force it to be an array\n            responseBody = [responseBody];\n        }\n        // Quirk: Composite mappers referenced by `element` might\n        // not have *all* properties declared (like uberParent),\n        // so let's try to look up the full definition by name.\n        if (element.type.name === \"Composite\" && element.type.className) {\n            element = (_a = serializer.modelMappers[element.type.className]) !== null && _a !== void 0 ? _a : element;\n        }\n        const tempArray = [];\n        for (let i = 0; i < responseBody.length; i++) {\n            tempArray[i] = serializer.deserialize(element, responseBody[i], `${objectName}[${i}]`, options);\n        }\n        return tempArray;\n    }\n    return responseBody;\n}\nfunction getIndexDiscriminator(discriminators, discriminatorValue, typeName) {\n    const typeNamesToCheck = [typeName];\n    while (typeNamesToCheck.length) {\n        const currentName = typeNamesToCheck.shift();\n        const indexDiscriminator = discriminatorValue === currentName\n            ? discriminatorValue\n            : currentName + \".\" + discriminatorValue;\n        if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) {\n            return discriminators[indexDiscriminator];\n        }\n        else {\n            for (const [name, mapper] of Object.entries(discriminators)) {\n                if (name.startsWith(currentName + \".\") &&\n                    mapper.type.uberParent === currentName &&\n                    mapper.type.className) {\n                    typeNamesToCheck.push(mapper.type.className);\n                }\n            }\n        }\n    }\n    return undefined;\n}\nfunction getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) {\n    var _a;\n    const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n    if (polymorphicDiscriminator) {\n        let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];\n        if (discriminatorName) {\n            // The serializedName might have \\\\, which we just want to ignore\n            if (polymorphicPropertyName === \"serializedName\") {\n                discriminatorName = discriminatorName.replace(/\\\\/gi, \"\");\n            }\n            const discriminatorValue = object[discriminatorName];\n            const typeName = (_a = mapper.type.uberParent) !== null && _a !== void 0 ? _a : mapper.type.className;\n            if (typeof discriminatorValue === \"string\" && typeName) {\n                const polymorphicMapper = getIndexDiscriminator(serializer.modelMappers.discriminators, discriminatorValue, typeName);\n                if (polymorphicMapper) {\n                    mapper = polymorphicMapper;\n                }\n            }\n        }\n    }\n    return mapper;\n}\nfunction getPolymorphicDiscriminatorRecursively(serializer, mapper) {\n    return (mapper.type.polymorphicDiscriminator ||\n        getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) ||\n        getPolymorphicDiscriminatorSafely(serializer, mapper.type.className));\n}\nfunction getPolymorphicDiscriminatorSafely(serializer, typeName) {\n    return (typeName &&\n        serializer.modelMappers[typeName] &&\n        serializer.modelMappers[typeName].type.polymorphicDiscriminator);\n}\n/**\n * Known types of Mappers\n */\nexport const MapperTypeNames = {\n    Base64Url: \"Base64Url\",\n    Boolean: \"Boolean\",\n    ByteArray: \"ByteArray\",\n    Composite: \"Composite\",\n    Date: \"Date\",\n    DateTime: \"DateTime\",\n    DateTimeRfc1123: \"DateTimeRfc1123\",\n    Dictionary: \"Dictionary\",\n    Enum: \"Enum\",\n    Number: \"Number\",\n    Object: \"Object\",\n    Sequence: \"Sequence\",\n    String: \"String\",\n    Stream: \"Stream\",\n    TimeSpan: \"TimeSpan\",\n    UnixTime: \"UnixTime\",\n};\n//# sourceMappingURL=serializer.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Browser-only implementation of the module's state. The browser esm variant will not load the commonjs state, so we do not need to share state between the two.\n */\nexport const state = {\n    operationRequestMap: new WeakMap(),\n};\n//# sourceMappingURL=state-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { state } from \"./state.js\";\n/**\n * @internal\n * Retrieves the value to use for a given operation argument\n * @param operationArguments - The arguments passed from the generated client\n * @param parameter - The parameter description\n * @param fallbackObject - If something isn't found in the arguments bag, look here.\n *  Generally used to look at the service client properties.\n */\nexport function getOperationArgumentValueFromParameter(operationArguments, parameter, fallbackObject) {\n    let parameterPath = parameter.parameterPath;\n    const parameterMapper = parameter.mapper;\n    let value;\n    if (typeof parameterPath === \"string\") {\n        parameterPath = [parameterPath];\n    }\n    if (Array.isArray(parameterPath)) {\n        if (parameterPath.length > 0) {\n            if (parameterMapper.isConstant) {\n                value = parameterMapper.defaultValue;\n            }\n            else {\n                let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);\n                if (!propertySearchResult.propertyFound && fallbackObject) {\n                    propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath);\n                }\n                let useDefaultValue = false;\n                if (!propertySearchResult.propertyFound) {\n                    useDefaultValue =\n                        parameterMapper.required ||\n                            (parameterPath[0] === \"options\" && parameterPath.length === 2);\n                }\n                value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;\n            }\n        }\n    }\n    else {\n        if (parameterMapper.required) {\n            value = {};\n        }\n        for (const propertyName in parameterPath) {\n            const propertyMapper = parameterMapper.type.modelProperties[propertyName];\n            const propertyPath = parameterPath[propertyName];\n            const propertyValue = getOperationArgumentValueFromParameter(operationArguments, {\n                parameterPath: propertyPath,\n                mapper: propertyMapper,\n            }, fallbackObject);\n            if (propertyValue !== undefined) {\n                if (!value) {\n                    value = {};\n                }\n                value[propertyName] = propertyValue;\n            }\n        }\n    }\n    return value;\n}\nfunction getPropertyFromParameterPath(parent, parameterPath) {\n    const result = { propertyFound: false };\n    let i = 0;\n    for (; i < parameterPath.length; ++i) {\n        const parameterPathPart = parameterPath[i];\n        // Make sure to check inherited properties too, so don't use hasOwnProperty().\n        if (parent && parameterPathPart in parent) {\n            parent = parent[parameterPathPart];\n        }\n        else {\n            break;\n        }\n    }\n    if (i === parameterPath.length) {\n        result.propertyValue = parent;\n        result.propertyFound = true;\n    }\n    return result;\n}\nconst originalRequestSymbol = Symbol.for(\"@azure/core-client original request\");\nfunction hasOriginalRequest(request) {\n    return originalRequestSymbol in request;\n}\nexport function getOperationRequestInfo(request) {\n    if (hasOriginalRequest(request)) {\n        return getOperationRequestInfo(request[originalRequestSymbol]);\n    }\n    let info = state.operationRequestMap.get(request);\n    if (!info) {\n        info = {};\n        state.operationRequestMap.set(request, info);\n    }\n    return info;\n}\n//# sourceMappingURL=operationHelpers.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { XML_CHARKEY, } from \"./interfaces.js\";\nimport { RestError, } from \"@azure/core-rest-pipeline\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getOperationRequestInfo } from \"./operationHelpers.js\";\nconst defaultJsonContentTypes = [\"application/json\", \"text/json\"];\nconst defaultXmlContentTypes = [\"application/xml\", \"application/atom+xml\"];\n/**\n * The programmatic identifier of the deserializationPolicy.\n */\nexport const deserializationPolicyName = \"deserializationPolicy\";\n/**\n * This policy handles parsing out responses according to OperationSpecs on the request.\n */\nexport function deserializationPolicy(options = {}) {\n    var _a, _b, _c, _d, _e, _f, _g;\n    const jsonContentTypes = (_b = (_a = options.expectedContentTypes) === null || _a === void 0 ? void 0 : _a.json) !== null && _b !== void 0 ? _b : defaultJsonContentTypes;\n    const xmlContentTypes = (_d = (_c = options.expectedContentTypes) === null || _c === void 0 ? void 0 : _c.xml) !== null && _d !== void 0 ? _d : defaultXmlContentTypes;\n    const parseXML = options.parseXML;\n    const serializerOptions = options.serializerOptions;\n    const updatedOptions = {\n        xml: {\n            rootName: (_e = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.rootName) !== null && _e !== void 0 ? _e : \"\",\n            includeRoot: (_f = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.includeRoot) !== null && _f !== void 0 ? _f : false,\n            xmlCharKey: (_g = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.xmlCharKey) !== null && _g !== void 0 ? _g : XML_CHARKEY,\n        },\n    };\n    return {\n        name: deserializationPolicyName,\n        async sendRequest(request, next) {\n            const response = await next(request);\n            return deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, updatedOptions, parseXML);\n        },\n    };\n}\nfunction getOperationResponseMap(parsedResponse) {\n    let result;\n    const request = parsedResponse.request;\n    const operationInfo = getOperationRequestInfo(request);\n    const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec;\n    if (operationSpec) {\n        if (!(operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationResponseGetter)) {\n            result = operationSpec.responses[parsedResponse.status];\n        }\n        else {\n            result = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationResponseGetter(operationSpec, parsedResponse);\n        }\n    }\n    return result;\n}\nfunction shouldDeserializeResponse(parsedResponse) {\n    const request = parsedResponse.request;\n    const operationInfo = getOperationRequestInfo(request);\n    const shouldDeserialize = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.shouldDeserialize;\n    let result;\n    if (shouldDeserialize === undefined) {\n        result = true;\n    }\n    else if (typeof shouldDeserialize === \"boolean\") {\n        result = shouldDeserialize;\n    }\n    else {\n        result = shouldDeserialize(parsedResponse);\n    }\n    return result;\n}\nasync function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options, parseXML) {\n    const parsedResponse = await parse(jsonContentTypes, xmlContentTypes, response, options, parseXML);\n    if (!shouldDeserializeResponse(parsedResponse)) {\n        return parsedResponse;\n    }\n    const operationInfo = getOperationRequestInfo(parsedResponse.request);\n    const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec;\n    if (!operationSpec || !operationSpec.responses) {\n        return parsedResponse;\n    }\n    const responseSpec = getOperationResponseMap(parsedResponse);\n    const { error, shouldReturnResponse } = handleErrorResponse(parsedResponse, operationSpec, responseSpec, options);\n    if (error) {\n        throw error;\n    }\n    else if (shouldReturnResponse) {\n        return parsedResponse;\n    }\n    // An operation response spec does exist for current status code, so\n    // use it to deserialize the response.\n    if (responseSpec) {\n        if (responseSpec.bodyMapper) {\n            let valueToDeserialize = parsedResponse.parsedBody;\n            if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperTypeNames.Sequence) {\n                valueToDeserialize =\n                    typeof valueToDeserialize === \"object\"\n                        ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName]\n                        : [];\n            }\n            try {\n                parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, \"operationRes.parsedBody\", options);\n            }\n            catch (deserializeError) {\n                const restError = new RestError(`Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`, {\n                    statusCode: parsedResponse.status,\n                    request: parsedResponse.request,\n                    response: parsedResponse,\n                });\n                throw restError;\n            }\n        }\n        else if (operationSpec.httpMethod === \"HEAD\") {\n            // head methods never have a body, but we return a boolean to indicate presence/absence of the resource\n            parsedResponse.parsedBody = response.status >= 200 && response.status < 300;\n        }\n        if (responseSpec.headersMapper) {\n            parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.toJSON(), \"operationRes.parsedHeaders\", { xml: {}, ignoreUnknownProperties: true });\n        }\n    }\n    return parsedResponse;\n}\nfunction isOperationSpecEmpty(operationSpec) {\n    const expectedStatusCodes = Object.keys(operationSpec.responses);\n    return (expectedStatusCodes.length === 0 ||\n        (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === \"default\"));\n}\nfunction handleErrorResponse(parsedResponse, operationSpec, responseSpec, options) {\n    var _a;\n    const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;\n    const isExpectedStatusCode = isOperationSpecEmpty(operationSpec)\n        ? isSuccessByStatus\n        : !!responseSpec;\n    if (isExpectedStatusCode) {\n        if (responseSpec) {\n            if (!responseSpec.isError) {\n                return { error: null, shouldReturnResponse: false };\n            }\n        }\n        else {\n            return { error: null, shouldReturnResponse: false };\n        }\n    }\n    const errorResponseSpec = responseSpec !== null && responseSpec !== void 0 ? responseSpec : operationSpec.responses.default;\n    const initialErrorMessage = ((_a = parsedResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(parsedResponse.status))\n        ? `Unexpected status code: ${parsedResponse.status}`\n        : parsedResponse.bodyAsText;\n    const error = new RestError(initialErrorMessage, {\n        statusCode: parsedResponse.status,\n        request: parsedResponse.request,\n        response: parsedResponse,\n    });\n    // If the item failed but there's no error spec or default spec to deserialize the error,\n    // we should fail so we just throw the parsed response\n    if (!errorResponseSpec) {\n        throw error;\n    }\n    const defaultBodyMapper = errorResponseSpec.bodyMapper;\n    const defaultHeadersMapper = errorResponseSpec.headersMapper;\n    try {\n        // If error response has a body, try to deserialize it using default body mapper.\n        // Then try to extract error code & message from it\n        if (parsedResponse.parsedBody) {\n            const parsedBody = parsedResponse.parsedBody;\n            let deserializedError;\n            if (defaultBodyMapper) {\n                let valueToDeserialize = parsedBody;\n                if (operationSpec.isXML && defaultBodyMapper.type.name === MapperTypeNames.Sequence) {\n                    valueToDeserialize = [];\n                    const elementName = defaultBodyMapper.xmlElementName;\n                    if (typeof parsedBody === \"object\" && elementName) {\n                        valueToDeserialize = parsedBody[elementName];\n                    }\n                }\n                deserializedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, \"error.response.parsedBody\", options);\n            }\n            const internalError = parsedBody.error || deserializedError || parsedBody;\n            error.code = internalError.code;\n            if (internalError.message) {\n                error.message = internalError.message;\n            }\n            if (defaultBodyMapper) {\n                error.response.parsedBody = deserializedError;\n            }\n        }\n        // If error response has headers, try to deserialize it using default header mapper\n        if (parsedResponse.headers && defaultHeadersMapper) {\n            error.response.parsedHeaders =\n                operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.toJSON(), \"operationRes.parsedHeaders\");\n        }\n    }\n    catch (defaultError) {\n        error.message = `Error \"${defaultError.message}\" occurred in deserializing the responseBody - \"${parsedResponse.bodyAsText}\" for the default response.`;\n    }\n    return { error, shouldReturnResponse: false };\n}\nasync function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts, parseXML) {\n    var _a;\n    if (!((_a = operationResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(operationResponse.status)) &&\n        operationResponse.bodyAsText) {\n        const text = operationResponse.bodyAsText;\n        const contentType = operationResponse.headers.get(\"Content-Type\") || \"\";\n        const contentComponents = !contentType\n            ? []\n            : contentType.split(\";\").map((component) => component.toLowerCase());\n        try {\n            if (contentComponents.length === 0 ||\n                contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)) {\n                operationResponse.parsedBody = JSON.parse(text);\n                return operationResponse;\n            }\n            else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {\n                if (!parseXML) {\n                    throw new Error(\"Parsing XML not supported.\");\n                }\n                const body = await parseXML(text, opts.xml);\n                operationResponse.parsedBody = body;\n                return operationResponse;\n            }\n        }\n        catch (err) {\n            const msg = `Error \"${err}\" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;\n            const errCode = err.code || RestError.PARSE_ERROR;\n            const e = new RestError(msg, {\n                code: errCode,\n                statusCode: operationResponse.status,\n                request: operationResponse.request,\n                response: operationResponse,\n            });\n            throw e;\n        }\n    }\n    return operationResponse;\n}\n//# sourceMappingURL=deserializationPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { MapperTypeNames } from \"./serializer.js\";\n/**\n * Gets the list of status codes for streaming responses.\n * @internal\n */\nexport function getStreamingResponseStatusCodes(operationSpec) {\n    const result = new Set();\n    for (const statusCode in operationSpec.responses) {\n        const operationResponse = operationSpec.responses[statusCode];\n        if (operationResponse.bodyMapper &&\n            operationResponse.bodyMapper.type.name === MapperTypeNames.Stream) {\n            result.add(Number(statusCode));\n        }\n    }\n    return result;\n}\n/**\n * Get the path to this parameter's value as a dotted string (a.b.c).\n * @param parameter - The parameter to get the path string for.\n * @returns The path to this parameter's value as a dotted string.\n * @internal\n */\nexport function getPathStringFromParameter(parameter) {\n    const { parameterPath, mapper } = parameter;\n    let result;\n    if (typeof parameterPath === \"string\") {\n        result = parameterPath;\n    }\n    else if (Array.isArray(parameterPath)) {\n        result = parameterPath.join(\".\");\n    }\n    else {\n        result = mapper.serializedName;\n    }\n    return result;\n}\n//# sourceMappingURL=interfaceHelpers.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { XML_ATTRKEY, XML_CHARKEY, } from \"./interfaces.js\";\nimport { getOperationArgumentValueFromParameter, getOperationRequestInfo, } from \"./operationHelpers.js\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\n/**\n * The programmatic identifier of the serializationPolicy.\n */\nexport const serializationPolicyName = \"serializationPolicy\";\n/**\n * This policy handles assembling the request body and headers using\n * an OperationSpec and OperationArguments on the request.\n */\nexport function serializationPolicy(options = {}) {\n    const stringifyXML = options.stringifyXML;\n    return {\n        name: serializationPolicyName,\n        async sendRequest(request, next) {\n            const operationInfo = getOperationRequestInfo(request);\n            const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec;\n            const operationArguments = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationArguments;\n            if (operationSpec && operationArguments) {\n                serializeHeaders(request, operationArguments, operationSpec);\n                serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);\n            }\n            return next(request);\n        },\n    };\n}\n/**\n * @internal\n */\nexport function serializeHeaders(request, operationArguments, operationSpec) {\n    var _a, _b;\n    if (operationSpec.headerParameters) {\n        for (const headerParameter of operationSpec.headerParameters) {\n            let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter);\n            if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) {\n                headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter));\n                const headerCollectionPrefix = headerParameter.mapper\n                    .headerCollectionPrefix;\n                if (headerCollectionPrefix) {\n                    for (const key of Object.keys(headerValue)) {\n                        request.headers.set(headerCollectionPrefix + key, headerValue[key]);\n                    }\n                }\n                else {\n                    request.headers.set(headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter), headerValue);\n                }\n            }\n        }\n    }\n    const customHeaders = (_b = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.requestOptions) === null || _b === void 0 ? void 0 : _b.customHeaders;\n    if (customHeaders) {\n        for (const customHeaderName of Object.keys(customHeaders)) {\n            request.headers.set(customHeaderName, customHeaders[customHeaderName]);\n        }\n    }\n}\n/**\n * @internal\n */\nexport function serializeRequestBody(request, operationArguments, operationSpec, stringifyXML = function () {\n    throw new Error(\"XML serialization unsupported!\");\n}) {\n    var _a, _b, _c, _d, _e;\n    const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;\n    const updatedOptions = {\n        xml: {\n            rootName: (_b = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.rootName) !== null && _b !== void 0 ? _b : \"\",\n            includeRoot: (_c = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.includeRoot) !== null && _c !== void 0 ? _c : false,\n            xmlCharKey: (_d = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.xmlCharKey) !== null && _d !== void 0 ? _d : XML_CHARKEY,\n        },\n    };\n    const xmlCharKey = updatedOptions.xml.xmlCharKey;\n    if (operationSpec.requestBody && operationSpec.requestBody.mapper) {\n        request.body = getOperationArgumentValueFromParameter(operationArguments, operationSpec.requestBody);\n        const bodyMapper = operationSpec.requestBody.mapper;\n        const { required, serializedName, xmlName, xmlElementName, xmlNamespace, xmlNamespacePrefix, nullable, } = bodyMapper;\n        const typeName = bodyMapper.type.name;\n        try {\n            if ((request.body !== undefined && request.body !== null) ||\n                (nullable && request.body === null) ||\n                required) {\n                const requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody);\n                request.body = operationSpec.serializer.serialize(bodyMapper, request.body, requestBodyParameterPathString, updatedOptions);\n                const isStream = typeName === MapperTypeNames.Stream;\n                if (operationSpec.isXML) {\n                    const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : \"xmlns\";\n                    const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, request.body, updatedOptions);\n                    if (typeName === MapperTypeNames.Sequence) {\n                        request.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), { rootName: xmlName || serializedName, xmlCharKey });\n                    }\n                    else if (!isStream) {\n                        request.body = stringifyXML(value, {\n                            rootName: xmlName || serializedName,\n                            xmlCharKey,\n                        });\n                    }\n                }\n                else if (typeName === MapperTypeNames.String &&\n                    (((_e = operationSpec.contentType) === null || _e === void 0 ? void 0 : _e.match(\"text/plain\")) || operationSpec.mediaType === \"text\")) {\n                    // the String serializer has validated that request body is a string\n                    // so just send the string.\n                    return;\n                }\n                else if (!isStream) {\n                    request.body = JSON.stringify(request.body);\n                }\n            }\n        }\n        catch (error) {\n            throw new Error(`Error \"${error.message}\" occurred in serializing the payload - ${JSON.stringify(serializedName, undefined, \"  \")}.`);\n        }\n    }\n    else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {\n        request.formData = {};\n        for (const formDataParameter of operationSpec.formDataParameters) {\n            const formDataParameterValue = getOperationArgumentValueFromParameter(operationArguments, formDataParameter);\n            if (formDataParameterValue !== undefined && formDataParameterValue !== null) {\n                const formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);\n                request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter), updatedOptions);\n            }\n        }\n    }\n}\n/**\n * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself\n */\nfunction getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) {\n    // Composite and Sequence schemas already got their root namespace set during serialization\n    // We just need to add xmlns to the other schema types\n    if (xmlNamespace && ![\"Composite\", \"Sequence\", \"Dictionary\"].includes(typeName)) {\n        const result = {};\n        result[options.xml.xmlCharKey] = serializedValue;\n        result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };\n        return result;\n    }\n    return serializedValue;\n}\nfunction prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) {\n    if (!Array.isArray(obj)) {\n        obj = [obj];\n    }\n    if (!xmlNamespaceKey || !xmlNamespace) {\n        return { [elementName]: obj };\n    }\n    const result = { [elementName]: obj };\n    result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };\n    return result;\n}\n//# sourceMappingURL=serializationPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { deserializationPolicy } from \"./deserializationPolicy.js\";\nimport { bearerTokenAuthenticationPolicy, createPipelineFromOptions, } from \"@azure/core-rest-pipeline\";\nimport { serializationPolicy } from \"./serializationPolicy.js\";\n/**\n * Creates a new Pipeline for use with a Service Client.\n * Adds in deserializationPolicy by default.\n * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential.\n * @param options - Options to customize the created pipeline.\n */\nexport function createClientPipeline(options = {}) {\n    const pipeline = createPipelineFromOptions(options !== null && options !== void 0 ? options : {});\n    if (options.credentialOptions) {\n        pipeline.addPolicy(bearerTokenAuthenticationPolicy({\n            credential: options.credentialOptions.credential,\n            scopes: options.credentialOptions.credentialScopes,\n        }));\n    }\n    pipeline.addPolicy(serializationPolicy(options.serializationOptions), { phase: \"Serialize\" });\n    pipeline.addPolicy(deserializationPolicy(options.deserializationOptions), {\n        phase: \"Deserialize\",\n    });\n    return pipeline;\n}\n//# sourceMappingURL=pipeline.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createDefaultHttpClient } from \"@azure/core-rest-pipeline\";\nlet cachedHttpClient;\nexport function getCachedDefaultHttpClient() {\n    if (!cachedHttpClient) {\n        cachedHttpClient = createDefaultHttpClient();\n    }\n    return cachedHttpClient;\n}\n//# sourceMappingURL=httpClientCache.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { getOperationArgumentValueFromParameter } from \"./operationHelpers.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\nconst CollectionFormatToDelimiterMap = {\n    CSV: \",\",\n    SSV: \" \",\n    Multi: \"Multi\",\n    TSV: \"\\t\",\n    Pipes: \"|\",\n};\nexport function getRequestUrl(baseUri, operationSpec, operationArguments, fallbackObject) {\n    const urlReplacements = calculateUrlReplacements(operationSpec, operationArguments, fallbackObject);\n    let isAbsolutePath = false;\n    let requestUrl = replaceAll(baseUri, urlReplacements);\n    if (operationSpec.path) {\n        let path = replaceAll(operationSpec.path, urlReplacements);\n        // QUIRK: sometimes we get a path component like /{nextLink}\n        // which may be a fully formed URL with a leading /. In that case, we should\n        // remove the leading /\n        if (operationSpec.path === \"/{nextLink}\" && path.startsWith(\"/\")) {\n            path = path.substring(1);\n        }\n        // QUIRK: sometimes we get a path component like {nextLink}\n        // which may be a fully formed URL. In that case, we should\n        // ignore the baseUri.\n        if (isAbsoluteUrl(path)) {\n            requestUrl = path;\n            isAbsolutePath = true;\n        }\n        else {\n            requestUrl = appendPath(requestUrl, path);\n        }\n    }\n    const { queryParams, sequenceParams } = calculateQueryParameters(operationSpec, operationArguments, fallbackObject);\n    /**\n     * Notice that this call sets the `noOverwrite` parameter to true if the `requestUrl`\n     * is an absolute path. This ensures that existing query parameter values in `requestUrl`\n     * do not get overwritten. On the other hand when `requestUrl` is not absolute path, it\n     * is still being built so there is nothing to overwrite.\n     */\n    requestUrl = appendQueryParams(requestUrl, queryParams, sequenceParams, isAbsolutePath);\n    return requestUrl;\n}\nfunction replaceAll(input, replacements) {\n    let result = input;\n    for (const [searchValue, replaceValue] of replacements) {\n        result = result.split(searchValue).join(replaceValue);\n    }\n    return result;\n}\nfunction calculateUrlReplacements(operationSpec, operationArguments, fallbackObject) {\n    var _a;\n    const result = new Map();\n    if ((_a = operationSpec.urlParameters) === null || _a === void 0 ? void 0 : _a.length) {\n        for (const urlParameter of operationSpec.urlParameters) {\n            let urlParameterValue = getOperationArgumentValueFromParameter(operationArguments, urlParameter, fallbackObject);\n            const parameterPathString = getPathStringFromParameter(urlParameter);\n            urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, parameterPathString);\n            if (!urlParameter.skipEncoding) {\n                urlParameterValue = encodeURIComponent(urlParameterValue);\n            }\n            result.set(`{${urlParameter.mapper.serializedName || parameterPathString}}`, urlParameterValue);\n        }\n    }\n    return result;\n}\nfunction isAbsoluteUrl(url) {\n    return url.includes(\"://\");\n}\nfunction appendPath(url, pathToAppend) {\n    if (!pathToAppend) {\n        return url;\n    }\n    const parsedUrl = new URL(url);\n    let newPath = parsedUrl.pathname;\n    if (!newPath.endsWith(\"/\")) {\n        newPath = `${newPath}/`;\n    }\n    if (pathToAppend.startsWith(\"/\")) {\n        pathToAppend = pathToAppend.substring(1);\n    }\n    const searchStart = pathToAppend.indexOf(\"?\");\n    if (searchStart !== -1) {\n        const path = pathToAppend.substring(0, searchStart);\n        const search = pathToAppend.substring(searchStart + 1);\n        newPath = newPath + path;\n        if (search) {\n            parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search;\n        }\n    }\n    else {\n        newPath = newPath + pathToAppend;\n    }\n    parsedUrl.pathname = newPath;\n    return parsedUrl.toString();\n}\nfunction calculateQueryParameters(operationSpec, operationArguments, fallbackObject) {\n    var _a;\n    const result = new Map();\n    const sequenceParams = new Set();\n    if ((_a = operationSpec.queryParameters) === null || _a === void 0 ? void 0 : _a.length) {\n        for (const queryParameter of operationSpec.queryParameters) {\n            if (queryParameter.mapper.type.name === \"Sequence\" && queryParameter.mapper.serializedName) {\n                sequenceParams.add(queryParameter.mapper.serializedName);\n            }\n            let queryParameterValue = getOperationArgumentValueFromParameter(operationArguments, queryParameter, fallbackObject);\n            if ((queryParameterValue !== undefined && queryParameterValue !== null) ||\n                queryParameter.mapper.required) {\n                queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter));\n                const delimiter = queryParameter.collectionFormat\n                    ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat]\n                    : \"\";\n                if (Array.isArray(queryParameterValue)) {\n                    // replace null and undefined\n                    queryParameterValue = queryParameterValue.map((item) => {\n                        if (item === null || item === undefined) {\n                            return \"\";\n                        }\n                        return item;\n                    });\n                }\n                if (queryParameter.collectionFormat === \"Multi\" && queryParameterValue.length === 0) {\n                    continue;\n                }\n                else if (Array.isArray(queryParameterValue) &&\n                    (queryParameter.collectionFormat === \"SSV\" || queryParameter.collectionFormat === \"TSV\")) {\n                    queryParameterValue = queryParameterValue.join(delimiter);\n                }\n                if (!queryParameter.skipEncoding) {\n                    if (Array.isArray(queryParameterValue)) {\n                        queryParameterValue = queryParameterValue.map((item) => {\n                            return encodeURIComponent(item);\n                        });\n                    }\n                    else {\n                        queryParameterValue = encodeURIComponent(queryParameterValue);\n                    }\n                }\n                // Join pipes and CSV *after* encoding, or the server will be upset.\n                if (Array.isArray(queryParameterValue) &&\n                    (queryParameter.collectionFormat === \"CSV\" || queryParameter.collectionFormat === \"Pipes\")) {\n                    queryParameterValue = queryParameterValue.join(delimiter);\n                }\n                result.set(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue);\n            }\n        }\n    }\n    return {\n        queryParams: result,\n        sequenceParams,\n    };\n}\nfunction simpleParseQueryParams(queryString) {\n    const result = new Map();\n    if (!queryString || queryString[0] !== \"?\") {\n        return result;\n    }\n    // remove the leading ?\n    queryString = queryString.slice(1);\n    const pairs = queryString.split(\"&\");\n    for (const pair of pairs) {\n        const [name, value] = pair.split(\"=\", 2);\n        const existingValue = result.get(name);\n        if (existingValue) {\n            if (Array.isArray(existingValue)) {\n                existingValue.push(value);\n            }\n            else {\n                result.set(name, [existingValue, value]);\n            }\n        }\n        else {\n            result.set(name, value);\n        }\n    }\n    return result;\n}\n/** @internal */\nexport function appendQueryParams(url, queryParams, sequenceParams, noOverwrite = false) {\n    if (queryParams.size === 0) {\n        return url;\n    }\n    const parsedUrl = new URL(url);\n    // QUIRK: parsedUrl.searchParams will have their name/value pairs decoded, which\n    // can change their meaning to the server, such as in the case of a SAS signature.\n    // To avoid accidentally un-encoding a query param, we parse the key/values ourselves\n    const combinedParams = simpleParseQueryParams(parsedUrl.search);\n    for (const [name, value] of queryParams) {\n        const existingValue = combinedParams.get(name);\n        if (Array.isArray(existingValue)) {\n            if (Array.isArray(value)) {\n                existingValue.push(...value);\n                const valueSet = new Set(existingValue);\n                combinedParams.set(name, Array.from(valueSet));\n            }\n            else {\n                existingValue.push(value);\n            }\n        }\n        else if (existingValue) {\n            if (Array.isArray(value)) {\n                value.unshift(existingValue);\n            }\n            else if (sequenceParams.has(name)) {\n                combinedParams.set(name, [existingValue, value]);\n            }\n            if (!noOverwrite) {\n                combinedParams.set(name, value);\n            }\n        }\n        else {\n            combinedParams.set(name, value);\n        }\n    }\n    const searchPieces = [];\n    for (const [name, value] of combinedParams) {\n        if (typeof value === \"string\") {\n            searchPieces.push(`${name}=${value}`);\n        }\n        else if (Array.isArray(value)) {\n            // QUIRK: If we get an array of values, include multiple key/value pairs\n            for (const subValue of value) {\n                searchPieces.push(`${name}=${subValue}`);\n            }\n        }\n        else {\n            searchPieces.push(`${name}=${value}`);\n        }\n    }\n    // QUIRK: we have to set search manually as searchParams will encode comma when it shouldn't.\n    parsedUrl.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n    return parsedUrl.toString();\n}\n//# sourceMappingURL=urlHelpers.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-client\");\n//# sourceMappingURL=log.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createPipelineRequest, } from \"@azure/core-rest-pipeline\";\nimport { createClientPipeline } from \"./pipeline.js\";\nimport { flattenResponse } from \"./utils.js\";\nimport { getCachedDefaultHttpClient } from \"./httpClientCache.js\";\nimport { getOperationRequestInfo } from \"./operationHelpers.js\";\nimport { getRequestUrl } from \"./urlHelpers.js\";\nimport { getStreamingResponseStatusCodes } from \"./interfaceHelpers.js\";\nimport { logger } from \"./log.js\";\n/**\n * Initializes a new instance of the ServiceClient.\n */\nexport class ServiceClient {\n    /**\n     * The ServiceClient constructor\n     * @param credential - The credentials used for authentication with the service.\n     * @param options - The service client options that govern the behavior of the client.\n     */\n    constructor(options = {}) {\n        var _a, _b;\n        this._requestContentType = options.requestContentType;\n        this._endpoint = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri;\n        if (options.baseUri) {\n            logger.warning(\"The baseUri option for SDK Clients has been deprecated, please use endpoint instead.\");\n        }\n        this._allowInsecureConnection = options.allowInsecureConnection;\n        this._httpClient = options.httpClient || getCachedDefaultHttpClient();\n        this.pipeline = options.pipeline || createDefaultPipeline(options);\n        if ((_b = options.additionalPolicies) === null || _b === void 0 ? void 0 : _b.length) {\n            for (const { policy, position } of options.additionalPolicies) {\n                // Sign happens after Retry and is commonly needed to occur\n                // before policies that intercept post-retry.\n                const afterPhase = position === \"perRetry\" ? \"Sign\" : undefined;\n                this.pipeline.addPolicy(policy, {\n                    afterPhase,\n                });\n            }\n        }\n    }\n    /**\n     * Send the provided httpRequest.\n     */\n    async sendRequest(request) {\n        return this.pipeline.sendRequest(this._httpClient, request);\n    }\n    /**\n     * Send an HTTP request that is populated using the provided OperationSpec.\n     * @typeParam T - The typed result of the request, based on the OperationSpec.\n     * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.\n     * @param operationSpec - The OperationSpec to use to populate the httpRequest.\n     */\n    async sendOperationRequest(operationArguments, operationSpec) {\n        const endpoint = operationSpec.baseUrl || this._endpoint;\n        if (!endpoint) {\n            throw new Error(\"If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.\");\n        }\n        // Templatized URLs sometimes reference properties on the ServiceClient child class,\n        // so we have to pass `this` below in order to search these properties if they're\n        // not part of OperationArguments\n        const url = getRequestUrl(endpoint, operationSpec, operationArguments, this);\n        const request = createPipelineRequest({\n            url,\n        });\n        request.method = operationSpec.httpMethod;\n        const operationInfo = getOperationRequestInfo(request);\n        operationInfo.operationSpec = operationSpec;\n        operationInfo.operationArguments = operationArguments;\n        const contentType = operationSpec.contentType || this._requestContentType;\n        if (contentType && operationSpec.requestBody) {\n            request.headers.set(\"Content-Type\", contentType);\n        }\n        const options = operationArguments.options;\n        if (options) {\n            const requestOptions = options.requestOptions;\n            if (requestOptions) {\n                if (requestOptions.timeout) {\n                    request.timeout = requestOptions.timeout;\n                }\n                if (requestOptions.onUploadProgress) {\n                    request.onUploadProgress = requestOptions.onUploadProgress;\n                }\n                if (requestOptions.onDownloadProgress) {\n                    request.onDownloadProgress = requestOptions.onDownloadProgress;\n                }\n                if (requestOptions.shouldDeserialize !== undefined) {\n                    operationInfo.shouldDeserialize = requestOptions.shouldDeserialize;\n                }\n                if (requestOptions.allowInsecureConnection) {\n                    request.allowInsecureConnection = true;\n                }\n            }\n            if (options.abortSignal) {\n                request.abortSignal = options.abortSignal;\n            }\n            if (options.tracingOptions) {\n                request.tracingOptions = options.tracingOptions;\n            }\n        }\n        if (this._allowInsecureConnection) {\n            request.allowInsecureConnection = true;\n        }\n        if (request.streamResponseStatusCodes === undefined) {\n            request.streamResponseStatusCodes = getStreamingResponseStatusCodes(operationSpec);\n        }\n        try {\n            const rawResponse = await this.sendRequest(request);\n            const flatResponse = flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]);\n            if (options === null || options === void 0 ? void 0 : options.onResponse) {\n                options.onResponse(rawResponse, flatResponse);\n            }\n            return flatResponse;\n        }\n        catch (error) {\n            if (typeof error === \"object\" && (error === null || error === void 0 ? void 0 : error.response)) {\n                const rawResponse = error.response;\n                const flatResponse = flattenResponse(rawResponse, operationSpec.responses[error.statusCode] || operationSpec.responses[\"default\"]);\n                error.details = flatResponse;\n                if (options === null || options === void 0 ? void 0 : options.onResponse) {\n                    options.onResponse(rawResponse, flatResponse, error);\n                }\n            }\n            throw error;\n        }\n    }\n}\nfunction createDefaultPipeline(options) {\n    const credentialScopes = getCredentialScopes(options);\n    const credentialOptions = options.credential && credentialScopes\n        ? { credentialScopes, credential: options.credential }\n        : undefined;\n    return createClientPipeline(Object.assign(Object.assign({}, options), { credentialOptions }));\n}\nfunction getCredentialScopes(options) {\n    if (options.credentialScopes) {\n        return options.credentialScopes;\n    }\n    if (options.endpoint) {\n        return `${options.endpoint}/.default`;\n    }\n    if (options.baseUri) {\n        return `${options.baseUri}/.default`;\n    }\n    if (options.credential && !options.credentialScopes) {\n        throw new Error(`When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`);\n    }\n    return undefined;\n}\n//# sourceMappingURL=serviceClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * A set of constants used internally when processing requests.\n */\nconst Constants = {\n    DefaultScope: \"/.default\",\n    /**\n     * Defines constants for use with HTTP headers.\n     */\n    HeaderConstants: {\n        /**\n         * The Authorization header.\n         */\n        AUTHORIZATION: \"authorization\",\n    },\n};\nfunction isUuid(text) {\n    return /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/.test(text);\n}\n/**\n * Defines a callback to handle auth challenge for Storage APIs.\n * This implements the bearer challenge process described here: https://docs.microsoft.com/rest/api/storageservices/authorize-with-azure-active-directory#bearer-challenge\n * Handling has specific features for storage that departs to the general AAD challenge docs.\n **/\nexport const authorizeRequestOnTenantChallenge = async (challengeOptions) => {\n    const requestOptions = requestToOptions(challengeOptions.request);\n    const challenge = getChallenge(challengeOptions.response);\n    if (challenge) {\n        const challengeInfo = parseChallenge(challenge);\n        const challengeScopes = buildScopes(challengeOptions, challengeInfo);\n        const tenantId = extractTenantId(challengeInfo);\n        if (!tenantId) {\n            return false;\n        }\n        const accessToken = await challengeOptions.getAccessToken(challengeScopes, Object.assign(Object.assign({}, requestOptions), { tenantId }));\n        if (!accessToken) {\n            return false;\n        }\n        challengeOptions.request.headers.set(Constants.HeaderConstants.AUTHORIZATION, `Bearer ${accessToken.token}`);\n        return true;\n    }\n    return false;\n};\n/**\n * Extracts the tenant id from the challenge information\n * The tenant id is contained in the authorization_uri as the first\n * path part.\n */\nfunction extractTenantId(challengeInfo) {\n    const parsedAuthUri = new URL(challengeInfo.authorization_uri);\n    const pathSegments = parsedAuthUri.pathname.split(\"/\");\n    const tenantId = pathSegments[1];\n    if (tenantId && isUuid(tenantId)) {\n        return tenantId;\n    }\n    return undefined;\n}\n/**\n * Builds the authentication scopes based on the information that comes in the\n * challenge information. Scopes url is present in the resource_id, if it is empty\n * we keep using the original scopes.\n */\nfunction buildScopes(challengeOptions, challengeInfo) {\n    if (!challengeInfo.resource_id) {\n        return challengeOptions.scopes;\n    }\n    const challengeScopes = new URL(challengeInfo.resource_id);\n    challengeScopes.pathname = Constants.DefaultScope;\n    let scope = challengeScopes.toString();\n    if (scope === \"https://disk.azure.com/.default\") {\n        // the extra slash is required by the service\n        scope = \"https://disk.azure.com//.default\";\n    }\n    return [scope];\n}\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction getChallenge(response) {\n    const challenge = response.headers.get(\"WWW-Authenticate\");\n    if (response.status === 401 && challenge) {\n        return challenge;\n    }\n    return;\n}\n/**\n * Converts: `Bearer a=\"b\" c=\"d\"`.\n * Into: `[ { a: 'b', c: 'd' }]`.\n *\n * @internal\n */\nfunction parseChallenge(challenge) {\n    const bearerChallenge = challenge.slice(\"Bearer \".length);\n    const challengeParts = `${bearerChallenge.trim()} `.split(\" \").filter((x) => x);\n    const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split(\"=\")));\n    // Key-value pairs to plain object:\n    return keyValuePairs.reduce((a, b) => (Object.assign(Object.assign({}, a), b)), {});\n}\n/**\n * Extracts the options form a Pipeline Request for later re-use\n */\nfunction requestToOptions(request) {\n    return {\n        abortSignal: request.abortSignal,\n        requestOptions: {\n            timeout: request.timeout,\n        },\n        tracingOptions: request.tracingOptions,\n    };\n}\n//# sourceMappingURL=authorizeRequestOnTenantChallenge.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport const disableKeepAlivePolicyName = \"DisableKeepAlivePolicy\";\nexport function createDisableKeepAlivePolicy() {\n    return {\n        name: disableKeepAlivePolicyName,\n        async sendRequest(request, next) {\n            request.disableKeepAlive = true;\n            return next(request);\n        },\n    };\n}\n/**\n * @internal\n */\nexport function pipelineContainsDisableKeepAlivePolicy(pipeline) {\n    return pipeline.getOrderedPolicies().some((policy) => policy.name === disableKeepAlivePolicyName);\n}\n//# sourceMappingURL=disableKeepAlivePolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createHttpHeaders, createPipelineRequest, } from \"@azure/core-rest-pipeline\";\n// We use a custom symbol to cache a reference to the original request without\n// exposing it on the public interface.\nconst originalRequestSymbol = Symbol(\"Original PipelineRequest\");\n// Symbol.for() will return the same symbol if it's already been created\n// This particular one is used in core-client to handle the case of when a request is\n// cloned but we need to retrieve the OperationSpec and OperationArguments from the\n// original request.\nconst originalClientRequestSymbol = Symbol.for(\"@azure/core-client original request\");\nexport function toPipelineRequest(webResource, options = {}) {\n    const compatWebResource = webResource;\n    const request = compatWebResource[originalRequestSymbol];\n    const headers = createHttpHeaders(webResource.headers.toJson({ preserveCase: true }));\n    if (request) {\n        request.headers = headers;\n        return request;\n    }\n    else {\n        const newRequest = createPipelineRequest({\n            url: webResource.url,\n            method: webResource.method,\n            headers,\n            withCredentials: webResource.withCredentials,\n            timeout: webResource.timeout,\n            requestId: webResource.requestId,\n            abortSignal: webResource.abortSignal,\n            body: webResource.body,\n            formData: webResource.formData,\n            disableKeepAlive: !!webResource.keepAlive,\n            onDownloadProgress: webResource.onDownloadProgress,\n            onUploadProgress: webResource.onUploadProgress,\n            proxySettings: webResource.proxySettings,\n            streamResponseStatusCodes: webResource.streamResponseStatusCodes,\n        });\n        if (options.originalRequest) {\n            newRequest[originalClientRequestSymbol] =\n                options.originalRequest;\n        }\n        return newRequest;\n    }\n}\nexport function toWebResourceLike(request, options) {\n    var _a;\n    const originalRequest = (_a = options === null || options === void 0 ? void 0 : options.originalRequest) !== null && _a !== void 0 ? _a : request;\n    const webResource = {\n        url: request.url,\n        method: request.method,\n        headers: toHttpHeadersLike(request.headers),\n        withCredentials: request.withCredentials,\n        timeout: request.timeout,\n        requestId: request.headers.get(\"x-ms-client-request-id\") || request.requestId,\n        abortSignal: request.abortSignal,\n        body: request.body,\n        formData: request.formData,\n        keepAlive: !!request.disableKeepAlive,\n        onDownloadProgress: request.onDownloadProgress,\n        onUploadProgress: request.onUploadProgress,\n        proxySettings: request.proxySettings,\n        streamResponseStatusCodes: request.streamResponseStatusCodes,\n        clone() {\n            throw new Error(\"Cannot clone a non-proxied WebResourceLike\");\n        },\n        prepare() {\n            throw new Error(\"WebResourceLike.prepare() is not supported by @azure/core-http-compat\");\n        },\n        validateRequestProperties() {\n            /** do nothing */\n        },\n    };\n    if (options === null || options === void 0 ? void 0 : options.createProxy) {\n        return new Proxy(webResource, {\n            get(target, prop, receiver) {\n                if (prop === originalRequestSymbol) {\n                    return request;\n                }\n                else if (prop === \"clone\") {\n                    return () => {\n                        return toWebResourceLike(toPipelineRequest(webResource, { originalRequest }), {\n                            createProxy: true,\n                            originalRequest,\n                        });\n                    };\n                }\n                return Reflect.get(target, prop, receiver);\n            },\n            set(target, prop, value, receiver) {\n                if (prop === \"keepAlive\") {\n                    request.disableKeepAlive = !value;\n                }\n                const passThroughProps = [\n                    \"url\",\n                    \"method\",\n                    \"withCredentials\",\n                    \"timeout\",\n                    \"requestId\",\n                    \"abortSignal\",\n                    \"body\",\n                    \"formData\",\n                    \"onDownloadProgress\",\n                    \"onUploadProgress\",\n                    \"proxySettings\",\n                    \"streamResponseStatusCodes\",\n                ];\n                if (typeof prop === \"string\" && passThroughProps.includes(prop)) {\n                    request[prop] = value;\n                }\n                return Reflect.set(target, prop, value, receiver);\n            },\n        });\n    }\n    else {\n        return webResource;\n    }\n}\n/**\n * Converts HttpHeaders from core-rest-pipeline to look like\n * HttpHeaders from core-http.\n * @param headers - HttpHeaders from core-rest-pipeline\n * @returns HttpHeaders as they looked in core-http\n */\nexport function toHttpHeadersLike(headers) {\n    return new HttpHeaders(headers.toJSON({ preserveCase: true }));\n}\n/**\n * A collection of HttpHeaders that can be sent with a HTTP request.\n */\nfunction getHeaderKey(headerName) {\n    return headerName.toLowerCase();\n}\n/**\n * A collection of HTTP header key/value pairs.\n */\nexport class HttpHeaders {\n    constructor(rawHeaders) {\n        this._headersMap = {};\n        if (rawHeaders) {\n            for (const headerName in rawHeaders) {\n                this.set(headerName, rawHeaders[headerName]);\n            }\n        }\n    }\n    /**\n     * Set a header in this collection with the provided name and value. The name is\n     * case-insensitive.\n     * @param headerName - The name of the header to set. This value is case-insensitive.\n     * @param headerValue - The value of the header to set.\n     */\n    set(headerName, headerValue) {\n        this._headersMap[getHeaderKey(headerName)] = {\n            name: headerName,\n            value: headerValue.toString(),\n        };\n    }\n    /**\n     * Get the header value for the provided header name, or undefined if no header exists in this\n     * collection with the provided name.\n     * @param headerName - The name of the header.\n     */\n    get(headerName) {\n        const header = this._headersMap[getHeaderKey(headerName)];\n        return !header ? undefined : header.value;\n    }\n    /**\n     * Get whether or not this header collection contains a header entry for the provided header name.\n     */\n    contains(headerName) {\n        return !!this._headersMap[getHeaderKey(headerName)];\n    }\n    /**\n     * Remove the header with the provided headerName. Return whether or not the header existed and\n     * was removed.\n     * @param headerName - The name of the header to remove.\n     */\n    remove(headerName) {\n        const result = this.contains(headerName);\n        delete this._headersMap[getHeaderKey(headerName)];\n        return result;\n    }\n    /**\n     * Get the headers that are contained this collection as an object.\n     */\n    rawHeaders() {\n        return this.toJson({ preserveCase: true });\n    }\n    /**\n     * Get the headers that are contained in this collection as an array.\n     */\n    headersArray() {\n        const headers = [];\n        for (const headerKey in this._headersMap) {\n            headers.push(this._headersMap[headerKey]);\n        }\n        return headers;\n    }\n    /**\n     * Get the header names that are contained in this collection.\n     */\n    headerNames() {\n        const headerNames = [];\n        const headers = this.headersArray();\n        for (let i = 0; i < headers.length; ++i) {\n            headerNames.push(headers[i].name);\n        }\n        return headerNames;\n    }\n    /**\n     * Get the header values that are contained in this collection.\n     */\n    headerValues() {\n        const headerValues = [];\n        const headers = this.headersArray();\n        for (let i = 0; i < headers.length; ++i) {\n            headerValues.push(headers[i].value);\n        }\n        return headerValues;\n    }\n    /**\n     * Get the JSON object representation of this HTTP header collection.\n     */\n    toJson(options = {}) {\n        const result = {};\n        if (options.preserveCase) {\n            for (const headerKey in this._headersMap) {\n                const header = this._headersMap[headerKey];\n                result[header.name] = header.value;\n            }\n        }\n        else {\n            for (const headerKey in this._headersMap) {\n                const header = this._headersMap[headerKey];\n                result[getHeaderKey(header.name)] = header.value;\n            }\n        }\n        return result;\n    }\n    /**\n     * Get the string representation of this HTTP header collection.\n     */\n    toString() {\n        return JSON.stringify(this.toJson({ preserveCase: true }));\n    }\n    /**\n     * Create a deep clone/copy of this HttpHeaders collection.\n     */\n    clone() {\n        const resultPreservingCasing = {};\n        for (const headerKey in this._headersMap) {\n            const header = this._headersMap[headerKey];\n            resultPreservingCasing[header.name] = header.value;\n        }\n        return new HttpHeaders(resultPreservingCasing);\n    }\n}\n//# sourceMappingURL=util.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createHttpHeaders } from \"@azure/core-rest-pipeline\";\nimport { toHttpHeadersLike, toPipelineRequest, toWebResourceLike, } from \"./util.js\";\nconst originalResponse = Symbol(\"Original FullOperationResponse\");\n/**\n * A helper to convert response objects from the new pipeline back to the old one.\n * @param response - A response object from core-client.\n * @returns A response compatible with `HttpOperationResponse` from core-http.\n */\nexport function toCompatResponse(response, options) {\n    let request = toWebResourceLike(response.request);\n    let headers = toHttpHeadersLike(response.headers);\n    if (options === null || options === void 0 ? void 0 : options.createProxy) {\n        return new Proxy(response, {\n            get(target, prop, receiver) {\n                if (prop === \"headers\") {\n                    return headers;\n                }\n                else if (prop === \"request\") {\n                    return request;\n                }\n                else if (prop === originalResponse) {\n                    return response;\n                }\n                return Reflect.get(target, prop, receiver);\n            },\n            set(target, prop, value, receiver) {\n                if (prop === \"headers\") {\n                    headers = value;\n                }\n                else if (prop === \"request\") {\n                    request = value;\n                }\n                return Reflect.set(target, prop, value, receiver);\n            },\n        });\n    }\n    else {\n        return Object.assign(Object.assign({}, response), { request,\n            headers });\n    }\n}\n/**\n * A helper to convert back to a PipelineResponse\n * @param compatResponse - A response compatible with `HttpOperationResponse` from core-http.\n */\nexport function toPipelineResponse(compatResponse) {\n    const extendedCompatResponse = compatResponse;\n    const response = extendedCompatResponse[originalResponse];\n    const headers = createHttpHeaders(compatResponse.headers.toJson({ preserveCase: true }));\n    if (response) {\n        response.headers = headers;\n        return response;\n    }\n    else {\n        return Object.assign(Object.assign({}, compatResponse), { headers, request: toPipelineRequest(compatResponse.request) });\n    }\n}\n//# sourceMappingURL=response.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createDisableKeepAlivePolicy, pipelineContainsDisableKeepAlivePolicy, } from \"./policies/disableKeepAlivePolicy.js\";\nimport { redirectPolicyName } from \"@azure/core-rest-pipeline\";\nimport { ServiceClient, } from \"@azure/core-client\";\nimport { toCompatResponse } from \"./response.js\";\n/**\n * Client to provide compatability between core V1 & V2.\n */\nexport class ExtendedServiceClient extends ServiceClient {\n    constructor(options) {\n        var _a, _b;\n        super(options);\n        if (((_a = options.keepAliveOptions) === null || _a === void 0 ? void 0 : _a.enable) === false &&\n            !pipelineContainsDisableKeepAlivePolicy(this.pipeline)) {\n            this.pipeline.addPolicy(createDisableKeepAlivePolicy());\n        }\n        if (((_b = options.redirectOptions) === null || _b === void 0 ? void 0 : _b.handleRedirects) === false) {\n            this.pipeline.removePolicy({\n                name: redirectPolicyName,\n            });\n        }\n    }\n    /**\n     * Compatible send operation request function.\n     *\n     * @param operationArguments - Operation arguments\n     * @param operationSpec - Operation Spec\n     * @returns\n     */\n    async sendOperationRequest(operationArguments, operationSpec) {\n        var _a;\n        const userProvidedCallBack = (_a = operationArguments === null || operationArguments === void 0 ? void 0 : operationArguments.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n        let lastResponse;\n        function onResponse(rawResponse, flatResponse, error) {\n            lastResponse = rawResponse;\n            if (userProvidedCallBack) {\n                userProvidedCallBack(rawResponse, flatResponse, error);\n            }\n        }\n        operationArguments.options = Object.assign(Object.assign({}, operationArguments.options), { onResponse });\n        const result = await super.sendOperationRequest(operationArguments, operationSpec);\n        if (lastResponse) {\n            Object.defineProperty(result, \"_response\", {\n                value: toCompatResponse(lastResponse),\n            });\n        }\n        return result;\n    }\n}\n//# sourceMappingURL=extendedClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { toPipelineRequest, toWebResourceLike } from \"../util.js\";\nimport { toCompatResponse, toPipelineResponse } from \"../response.js\";\n/**\n * An enum for compatibility with RequestPolicy\n */\nexport var HttpPipelineLogLevel;\n(function (HttpPipelineLogLevel) {\n    HttpPipelineLogLevel[HttpPipelineLogLevel[\"ERROR\"] = 1] = \"ERROR\";\n    HttpPipelineLogLevel[HttpPipelineLogLevel[\"INFO\"] = 3] = \"INFO\";\n    HttpPipelineLogLevel[HttpPipelineLogLevel[\"OFF\"] = 0] = \"OFF\";\n    HttpPipelineLogLevel[HttpPipelineLogLevel[\"WARNING\"] = 2] = \"WARNING\";\n})(HttpPipelineLogLevel || (HttpPipelineLogLevel = {}));\nconst mockRequestPolicyOptions = {\n    log(_logLevel, _message) {\n        /* do nothing */\n    },\n    shouldLog(_logLevel) {\n        return false;\n    },\n};\n/**\n * The name of the RequestPolicyFactoryPolicy\n */\nexport const requestPolicyFactoryPolicyName = \"RequestPolicyFactoryPolicy\";\n/**\n * A policy that wraps policies written for core-http.\n * @param factories - An array of `RequestPolicyFactory` objects from a core-http pipeline\n */\nexport function createRequestPolicyFactoryPolicy(factories) {\n    const orderedFactories = factories.slice().reverse();\n    return {\n        name: requestPolicyFactoryPolicyName,\n        async sendRequest(request, next) {\n            let httpPipeline = {\n                async sendRequest(httpRequest) {\n                    const response = await next(toPipelineRequest(httpRequest));\n                    return toCompatResponse(response, { createProxy: true });\n                },\n            };\n            for (const factory of orderedFactories) {\n                httpPipeline = factory.create(httpPipeline, mockRequestPolicyOptions);\n            }\n            const webResourceLike = toWebResourceLike(request, { createProxy: true });\n            const response = await httpPipeline.sendRequest(webResourceLike);\n            return toPipelineResponse(response);\n        },\n    };\n}\n//# sourceMappingURL=requestPolicyFactoryPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { toPipelineResponse } from \"./response.js\";\nimport { toWebResourceLike } from \"./util.js\";\n/**\n * Converts a RequestPolicy based HttpClient to a PipelineRequest based HttpClient.\n * @param requestPolicyClient - A HttpClient compatible with core-http\n * @returns A HttpClient compatible with core-rest-pipeline\n */\nexport function convertHttpClient(requestPolicyClient) {\n    return {\n        sendRequest: async (request) => {\n            const response = await requestPolicyClient.sendRequest(toWebResourceLike(request, { createProxy: true }));\n            return toPipelineResponse(response);\n        },\n    };\n}\n//# sourceMappingURL=httpClientAdapter.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nconst ValidPhaseNames = new Set([\"Deserialize\", \"Serialize\", \"Retry\", \"Sign\"]);\n/**\n * A private implementation of Pipeline.\n * Do not export this class from the package.\n * @internal\n */\nclass HttpPipeline {\n    constructor(policies) {\n        var _a;\n        this._policies = [];\n        this._policies = (_a = policies === null || policies === void 0 ? void 0 : policies.slice(0)) !== null && _a !== void 0 ? _a : [];\n        this._orderedPolicies = undefined;\n    }\n    addPolicy(policy, options = {}) {\n        if (options.phase && options.afterPhase) {\n            throw new Error(\"Policies inside a phase cannot specify afterPhase.\");\n        }\n        if (options.phase && !ValidPhaseNames.has(options.phase)) {\n            throw new Error(`Invalid phase name: ${options.phase}`);\n        }\n        if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) {\n            throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);\n        }\n        this._policies.push({\n            policy,\n            options,\n        });\n        this._orderedPolicies = undefined;\n    }\n    removePolicy(options) {\n        const removedPolicies = [];\n        this._policies = this._policies.filter((policyDescriptor) => {\n            if ((options.name && policyDescriptor.policy.name === options.name) ||\n                (options.phase && policyDescriptor.options.phase === options.phase)) {\n                removedPolicies.push(policyDescriptor.policy);\n                return false;\n            }\n            else {\n                return true;\n            }\n        });\n        this._orderedPolicies = undefined;\n        return removedPolicies;\n    }\n    sendRequest(httpClient, request) {\n        const policies = this.getOrderedPolicies();\n        const pipeline = policies.reduceRight((next, policy) => {\n            return (req) => {\n                return policy.sendRequest(req, next);\n            };\n        }, (req) => httpClient.sendRequest(req));\n        return pipeline(request);\n    }\n    getOrderedPolicies() {\n        if (!this._orderedPolicies) {\n            this._orderedPolicies = this.orderPolicies();\n        }\n        return this._orderedPolicies;\n    }\n    clone() {\n        return new HttpPipeline(this._policies);\n    }\n    static create() {\n        return new HttpPipeline();\n    }\n    orderPolicies() {\n        /**\n         * The goal of this method is to reliably order pipeline policies\n         * based on their declared requirements when they were added.\n         *\n         * Order is first determined by phase:\n         *\n         * 1. Serialize Phase\n         * 2. Policies not in a phase\n         * 3. Deserialize Phase\n         * 4. Retry Phase\n         * 5. Sign Phase\n         *\n         * Within each phase, policies are executed in the order\n         * they were added unless they were specified to execute\n         * before/after other policies or after a particular phase.\n         *\n         * To determine the final order, we will walk the policy list\n         * in phase order multiple times until all dependencies are\n         * satisfied.\n         *\n         * `afterPolicies` are the set of policies that must be\n         * executed before a given policy. This requirement is\n         * considered satisfied when each of the listed policies\n         * have been scheduled.\n         *\n         * `beforePolicies` are the set of policies that must be\n         * executed after a given policy. Since this dependency\n         * can be expressed by converting it into a equivalent\n         * `afterPolicies` declarations, they are normalized\n         * into that form for simplicity.\n         *\n         * An `afterPhase` dependency is considered satisfied when all\n         * policies in that phase have scheduled.\n         *\n         */\n        const result = [];\n        // Track all policies we know about.\n        const policyMap = new Map();\n        function createPhase(name) {\n            return {\n                name,\n                policies: new Set(),\n                hasRun: false,\n                hasAfterPolicies: false,\n            };\n        }\n        // Track policies for each phase.\n        const serializePhase = createPhase(\"Serialize\");\n        const noPhase = createPhase(\"None\");\n        const deserializePhase = createPhase(\"Deserialize\");\n        const retryPhase = createPhase(\"Retry\");\n        const signPhase = createPhase(\"Sign\");\n        // a list of phases in order\n        const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase];\n        // Small helper function to map phase name to each Phase\n        function getPhase(phase) {\n            if (phase === \"Retry\") {\n                return retryPhase;\n            }\n            else if (phase === \"Serialize\") {\n                return serializePhase;\n            }\n            else if (phase === \"Deserialize\") {\n                return deserializePhase;\n            }\n            else if (phase === \"Sign\") {\n                return signPhase;\n            }\n            else {\n                return noPhase;\n            }\n        }\n        // First walk each policy and create a node to track metadata.\n        for (const descriptor of this._policies) {\n            const policy = descriptor.policy;\n            const options = descriptor.options;\n            const policyName = policy.name;\n            if (policyMap.has(policyName)) {\n                throw new Error(\"Duplicate policy names not allowed in pipeline\");\n            }\n            const node = {\n                policy,\n                dependsOn: new Set(),\n                dependants: new Set(),\n            };\n            if (options.afterPhase) {\n                node.afterPhase = getPhase(options.afterPhase);\n                node.afterPhase.hasAfterPolicies = true;\n            }\n            policyMap.set(policyName, node);\n            const phase = getPhase(options.phase);\n            phase.policies.add(node);\n        }\n        // Now that each policy has a node, connect dependency references.\n        for (const descriptor of this._policies) {\n            const { policy, options } = descriptor;\n            const policyName = policy.name;\n            const node = policyMap.get(policyName);\n            if (!node) {\n                throw new Error(`Missing node for policy ${policyName}`);\n            }\n            if (options.afterPolicies) {\n                for (const afterPolicyName of options.afterPolicies) {\n                    const afterNode = policyMap.get(afterPolicyName);\n                    if (afterNode) {\n                        // Linking in both directions helps later\n                        // when we want to notify dependants.\n                        node.dependsOn.add(afterNode);\n                        afterNode.dependants.add(node);\n                    }\n                }\n            }\n            if (options.beforePolicies) {\n                for (const beforePolicyName of options.beforePolicies) {\n                    const beforeNode = policyMap.get(beforePolicyName);\n                    if (beforeNode) {\n                        // To execute before another node, make it\n                        // depend on the current node.\n                        beforeNode.dependsOn.add(node);\n                        node.dependants.add(beforeNode);\n                    }\n                }\n            }\n        }\n        function walkPhase(phase) {\n            phase.hasRun = true;\n            // Sets iterate in insertion order\n            for (const node of phase.policies) {\n                if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) {\n                    // If this node is waiting on a phase to complete,\n                    // we need to skip it for now.\n                    // Even if the phase is empty, we should wait for it\n                    // to be walked to avoid re-ordering policies.\n                    continue;\n                }\n                if (node.dependsOn.size === 0) {\n                    // If there's nothing else we're waiting for, we can\n                    // add this policy to the result list.\n                    result.push(node.policy);\n                    // Notify anything that depends on this policy that\n                    // the policy has been scheduled.\n                    for (const dependant of node.dependants) {\n                        dependant.dependsOn.delete(node);\n                    }\n                    policyMap.delete(node.policy.name);\n                    phase.policies.delete(node);\n                }\n            }\n        }\n        function walkPhases() {\n            for (const phase of orderedPhases) {\n                walkPhase(phase);\n                // if the phase isn't complete\n                if (phase.policies.size > 0 && phase !== noPhase) {\n                    if (!noPhase.hasRun) {\n                        // Try running noPhase to see if that unblocks this phase next tick.\n                        // This can happen if a phase that happens before noPhase\n                        // is waiting on a noPhase policy to complete.\n                        walkPhase(noPhase);\n                    }\n                    // Don't proceed to the next phase until this phase finishes.\n                    return;\n                }\n                if (phase.hasAfterPolicies) {\n                    // Run any policies unblocked by this phase\n                    walkPhase(noPhase);\n                }\n            }\n        }\n        // Iterate until we've put every node in the result list.\n        let iteration = 0;\n        while (policyMap.size > 0) {\n            iteration++;\n            const initialResultLength = result.length;\n            // Keep walking each phase in order until we can order every node.\n            walkPhases();\n            // The result list *should* get at least one larger each time\n            // after the first full pass.\n            // Otherwise, we're going to loop forever.\n            if (result.length <= initialResultLength && iteration > 1) {\n                throw new Error(\"Cannot satisfy policy dependencies due to requirements cycle.\");\n            }\n        }\n        return result;\n    }\n}\n/**\n * Creates a totally empty pipeline.\n * Useful for testing or creating a custom one.\n */\nexport function createEmptyPipeline() {\n    return HttpPipeline.create();\n}\n//# sourceMappingURL=pipeline.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-rest-pipeline\");\n//# sourceMappingURL=log.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { isObject } from \"@azure/core-util\";\nconst RedactedString = \"REDACTED\";\n// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts\nconst defaultAllowedHeaderNames = [\n    \"x-ms-client-request-id\",\n    \"x-ms-return-client-request-id\",\n    \"x-ms-useragent\",\n    \"x-ms-correlation-request-id\",\n    \"x-ms-request-id\",\n    \"client-request-id\",\n    \"ms-cv\",\n    \"return-client-request-id\",\n    \"traceparent\",\n    \"Access-Control-Allow-Credentials\",\n    \"Access-Control-Allow-Headers\",\n    \"Access-Control-Allow-Methods\",\n    \"Access-Control-Allow-Origin\",\n    \"Access-Control-Expose-Headers\",\n    \"Access-Control-Max-Age\",\n    \"Access-Control-Request-Headers\",\n    \"Access-Control-Request-Method\",\n    \"Origin\",\n    \"Accept\",\n    \"Accept-Encoding\",\n    \"Cache-Control\",\n    \"Connection\",\n    \"Content-Length\",\n    \"Content-Type\",\n    \"Date\",\n    \"ETag\",\n    \"Expires\",\n    \"If-Match\",\n    \"If-Modified-Since\",\n    \"If-None-Match\",\n    \"If-Unmodified-Since\",\n    \"Last-Modified\",\n    \"Pragma\",\n    \"Request-Id\",\n    \"Retry-After\",\n    \"Server\",\n    \"Transfer-Encoding\",\n    \"User-Agent\",\n    \"WWW-Authenticate\",\n];\nconst defaultAllowedQueryParameters = [\"api-version\"];\n/**\n * @internal\n */\nexport class Sanitizer {\n    constructor({ additionalAllowedHeaderNames: allowedHeaderNames = [], additionalAllowedQueryParameters: allowedQueryParameters = [], } = {}) {\n        allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames);\n        allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters);\n        this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));\n        this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));\n    }\n    sanitize(obj) {\n        const seen = new Set();\n        return JSON.stringify(obj, (key, value) => {\n            // Ensure Errors include their interesting non-enumerable members\n            if (value instanceof Error) {\n                return Object.assign(Object.assign({}, value), { name: value.name, message: value.message });\n            }\n            if (key === \"headers\") {\n                return this.sanitizeHeaders(value);\n            }\n            else if (key === \"url\") {\n                return this.sanitizeUrl(value);\n            }\n            else if (key === \"query\") {\n                return this.sanitizeQuery(value);\n            }\n            else if (key === \"body\") {\n                // Don't log the request body\n                return undefined;\n            }\n            else if (key === \"response\") {\n                // Don't log response again\n                return undefined;\n            }\n            else if (key === \"operationSpec\") {\n                // When using sendOperationRequest, the request carries a massive\n                // field with the autorest spec. No need to log it.\n                return undefined;\n            }\n            else if (Array.isArray(value) || isObject(value)) {\n                if (seen.has(value)) {\n                    return \"[Circular]\";\n                }\n                seen.add(value);\n            }\n            return value;\n        }, 2);\n    }\n    sanitizeUrl(value) {\n        if (typeof value !== \"string\" || value === null || value === \"\") {\n            return value;\n        }\n        const url = new URL(value);\n        if (!url.search) {\n            return value;\n        }\n        for (const [key] of url.searchParams) {\n            if (!this.allowedQueryParameters.has(key.toLowerCase())) {\n                url.searchParams.set(key, RedactedString);\n            }\n        }\n        return url.toString();\n    }\n    sanitizeHeaders(obj) {\n        const sanitized = {};\n        for (const key of Object.keys(obj)) {\n            if (this.allowedHeaderNames.has(key.toLowerCase())) {\n                sanitized[key] = obj[key];\n            }\n            else {\n                sanitized[key] = RedactedString;\n            }\n        }\n        return sanitized;\n    }\n    sanitizeQuery(value) {\n        if (typeof value !== \"object\" || value === null) {\n            return value;\n        }\n        const sanitized = {};\n        for (const k of Object.keys(value)) {\n            if (this.allowedQueryParameters.has(k.toLowerCase())) {\n                sanitized[k] = value[k];\n            }\n            else {\n                sanitized[k] = RedactedString;\n            }\n        }\n        return sanitized;\n    }\n}\n//# sourceMappingURL=sanitizer.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { logger as coreLogger } from \"../log.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n/**\n * The programmatic identifier of the logPolicy.\n */\nexport const logPolicyName = \"logPolicy\";\n/**\n * A policy that logs all requests and responses.\n * @param options - Options to configure logPolicy.\n */\nexport function logPolicy(options = {}) {\n    var _a;\n    const logger = (_a = options.logger) !== null && _a !== void 0 ? _a : coreLogger.info;\n    const sanitizer = new Sanitizer({\n        additionalAllowedHeaderNames: options.additionalAllowedHeaderNames,\n        additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n    });\n    return {\n        name: logPolicyName,\n        async sendRequest(request, next) {\n            if (!logger.enabled) {\n                return next(request);\n            }\n            logger(`Request: ${sanitizer.sanitize(request)}`);\n            const response = await next(request);\n            logger(`Response status code: ${response.status}`);\n            logger(`Headers: ${sanitizer.sanitize(response.headers)}`);\n            return response;\n        },\n    };\n}\n//# sourceMappingURL=logPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nexport const redirectPolicyName = \"redirectPolicy\";\n/**\n * Methods that are allowed to follow redirects 301 and 302\n */\nconst allowedRedirect = [\"GET\", \"HEAD\"];\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nexport function redirectPolicy(options = {}) {\n    const { maxRetries = 20 } = options;\n    return {\n        name: redirectPolicyName,\n        async sendRequest(request, next) {\n            const response = await next(request);\n            return handleRedirect(next, response, maxRetries);\n        },\n    };\n}\nasync function handleRedirect(next, response, maxRetries, currentRetries = 0) {\n    const { request, status, headers } = response;\n    const locationHeader = headers.get(\"location\");\n    if (locationHeader &&\n        (status === 300 ||\n            (status === 301 && allowedRedirect.includes(request.method)) ||\n            (status === 302 && allowedRedirect.includes(request.method)) ||\n            (status === 303 && request.method === \"POST\") ||\n            status === 307) &&\n        currentRetries < maxRetries) {\n        const url = new URL(locationHeader, request.url);\n        request.url = url.toString();\n        // POST request with Status code 303 should be converted into a\n        // redirected GET request if the redirect url is present in the location header\n        if (status === 303) {\n            request.method = \"GET\";\n            request.headers.delete(\"Content-Length\");\n            delete request.body;\n        }\n        request.headers.delete(\"Authorization\");\n        const res = await next(request);\n        return handleRedirect(next, res, maxRetries, currentRetries + 1);\n    }\n    return response;\n}\n//# sourceMappingURL=redirectPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nexport const SDK_VERSION = \"1.17.0\";\nexport const DEFAULT_RETRY_POLICY_COUNT = 3;\n//# sourceMappingURL=constants.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { getHeaderName, setPlatformSpecificData } from \"./userAgentPlatform.js\";\nimport { SDK_VERSION } from \"../constants.js\";\nfunction getUserAgentString(telemetryInfo) {\n    const parts = [];\n    for (const [key, value] of telemetryInfo) {\n        const token = value ? `${key}/${value}` : key;\n        parts.push(token);\n    }\n    return parts.join(\" \");\n}\n/**\n * @internal\n */\nexport function getUserAgentHeaderName() {\n    return getHeaderName();\n}\n/**\n * @internal\n */\nexport async function getUserAgentValue(prefix) {\n    const runtimeInfo = new Map();\n    runtimeInfo.set(\"core-rest-pipeline\", SDK_VERSION);\n    await setPlatformSpecificData(runtimeInfo);\n    const defaultAgent = getUserAgentString(runtimeInfo);\n    const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent;\n    return userAgentValue;\n}\n//# sourceMappingURL=userAgent.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * @internal\n */\nexport function getHeaderName() {\n    return \"x-ms-useragent\";\n}\nfunction getBrowserInfo(userAgent) {\n    const browserRegexes = [\n        { name: \"Firefox\", regex: /Firefox\\/([\\d.]+)/ },\n        { name: \"Safari\", regex: /Version\\/([\\d.]+).*Safari/ },\n    ];\n    for (const browser of browserRegexes) {\n        const match = userAgent.match(browser.regex);\n        if (match) {\n            return { brand: browser.name, version: match[1] };\n        }\n    }\n    return undefined;\n}\nfunction getBrandVersionString(brands) {\n    const brandOrder = [\"Google Chrome\", \"Microsoft Edge\", \"Opera\", \"Brave\", \"Chromium\"];\n    for (const brand of brandOrder) {\n        const foundBrand = brands.find((b) => b.brand === brand);\n        if (foundBrand) {\n            return foundBrand;\n        }\n    }\n    return undefined;\n}\n/**\n * @internal\n */\nexport async function setPlatformSpecificData(map) {\n    const localNavigator = globalThis.navigator;\n    let osPlatform = \"unknown\";\n    if (localNavigator === null || localNavigator === void 0 ? void 0 : localNavigator.userAgentData) {\n        const entropyValues = await localNavigator.userAgentData.getHighEntropyValues([\n            \"architecture\",\n            \"platformVersion\",\n        ]);\n        osPlatform = `${entropyValues.architecture}-${entropyValues.platform}-${entropyValues.platformVersion}`;\n        // Get the brand and version\n        const brand = getBrandVersionString(localNavigator.userAgentData.brands);\n        if (brand) {\n            map.set(brand.brand, brand.version);\n        }\n    }\n    else if (localNavigator === null || localNavigator === void 0 ? void 0 : localNavigator.platform) {\n        osPlatform = localNavigator.platform;\n        const brand = getBrowserInfo(localNavigator.userAgent);\n        if (brand) {\n            map.set(brand.brand, brand.version);\n        }\n    }\n    else if (typeof globalThis.EdgeRuntime === \"string\") {\n        map.set(\"EdgeRuntime\", globalThis.EdgeRuntime);\n    }\n    map.set(\"OS\", osPlatform);\n}\n//# sourceMappingURL=userAgentPlatform-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { getUserAgentHeaderName, getUserAgentValue } from \"../util/userAgent.js\";\nconst UserAgentHeaderName = getUserAgentHeaderName();\n/**\n * The programmatic identifier of the userAgentPolicy.\n */\nexport const userAgentPolicyName = \"userAgentPolicy\";\n/**\n * A policy that sets the User-Agent header (or equivalent) to reflect\n * the library version.\n * @param options - Options to customize the user agent value.\n */\nexport function userAgentPolicy(options = {}) {\n    const userAgentValue = getUserAgentValue(options.userAgentPrefix);\n    return {\n        name: userAgentPolicyName,\n        async sendRequest(request, next) {\n            if (!request.headers.has(UserAgentHeaderName)) {\n                request.headers.set(UserAgentHeaderName, await userAgentValue);\n            }\n            return next(request);\n        },\n    };\n}\n//# sourceMappingURL=userAgentPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { isNodeLike } from \"@azure/core-util\";\nimport { isNodeReadableStream } from \"./typeGuards.js\";\nconst unimplementedMethods = {\n    arrayBuffer: () => {\n        throw new Error(\"Not implemented\");\n    },\n    slice: () => {\n        throw new Error(\"Not implemented\");\n    },\n    text: () => {\n        throw new Error(\"Not implemented\");\n    },\n};\n/**\n * Private symbol used as key on objects created using createFile containing the\n * original source of the file object.\n *\n * This is used in Node to access the original Node stream without using Blob#stream, which\n * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and\n * Readable#to/fromWeb in Node versions we support:\n * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14)\n * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6)\n *\n * Once these versions are no longer supported, we may be able to stop doing this.\n *\n * @internal\n */\nconst rawContent = Symbol(\"rawContent\");\nfunction hasRawContent(x) {\n    return typeof x[rawContent] === \"function\";\n}\n/**\n * Extract the raw content from a given blob-like object. If the input was created using createFile\n * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used.\n * For true instances of Blob and File, returns the blob's content as a Web ReadableStream<Uint8Array>.\n *\n * @internal\n */\nexport function getRawContent(blob) {\n    if (hasRawContent(blob)) {\n        return blob[rawContent]();\n    }\n    else {\n        return blob.stream();\n    }\n}\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function to:\n * - Create a File object for use in RequestBodyType.formData in environments where the\n *   global File object is unavailable.\n * - Create a File-like object from a readable stream without reading the stream into memory.\n *\n * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is\n *                  passed in a request's form data map, the stream will not be read into memory\n *                  and instead will be streamed when the request is made. In the event of a retry, the\n *                  stream needs to be read again, so this callback SHOULD return a fresh stream if possible.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFileFromStream(stream, name, options = {}) {\n    var _a, _b, _c, _d;\n    return Object.assign(Object.assign({}, unimplementedMethods), { type: (_a = options.type) !== null && _a !== void 0 ? _a : \"\", lastModified: (_b = options.lastModified) !== null && _b !== void 0 ? _b : new Date().getTime(), webkitRelativePath: (_c = options.webkitRelativePath) !== null && _c !== void 0 ? _c : \"\", size: (_d = options.size) !== null && _d !== void 0 ? _d : -1, name, stream: () => {\n            const s = stream();\n            if (isNodeReadableStream(s)) {\n                throw new Error(\"Not supported: a Node stream was provided as input to createFileFromStream.\");\n            }\n            return s;\n        }, [rawContent]: stream });\n}\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable.\n *\n * @param content - the content of the file as a Uint8Array in memory.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFile(content, name, options = {}) {\n    var _a, _b, _c;\n    if (isNodeLike) {\n        return Object.assign(Object.assign({}, unimplementedMethods), { type: (_a = options.type) !== null && _a !== void 0 ? _a : \"\", lastModified: (_b = options.lastModified) !== null && _b !== void 0 ? _b : new Date().getTime(), webkitRelativePath: (_c = options.webkitRelativePath) !== null && _c !== void 0 ? _c : \"\", size: content.byteLength, name, arrayBuffer: async () => content.buffer, stream: () => new Blob([content]).stream(), [rawContent]: () => content });\n    }\n    else {\n        return new File([content], name, options);\n    }\n}\n//# sourceMappingURL=file.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nexport function isNodeReadableStream(x) {\n    return Boolean(x && typeof x[\"pipe\"] === \"function\");\n}\nexport function isWebReadableStream(x) {\n    return Boolean(x &&\n        typeof x.getReader === \"function\" &&\n        typeof x.tee === \"function\");\n}\nexport function isReadableStream(x) {\n    return isNodeReadableStream(x) || isWebReadableStream(x);\n}\nexport function isBlob(x) {\n    return typeof x.stream === \"function\";\n}\n//# sourceMappingURL=typeGuards.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { getRawContent } from \"./file.js\";\nimport { isNodeReadableStream, isWebReadableStream } from \"./typeGuards.js\";\n/**\n * Drain the content of the given ReadableStream into a Blob.\n * The blob's content may end up in memory or on disk dependent on size.\n */\nfunction drain(stream) {\n    return new Response(stream).blob();\n}\nasync function toBlobPart(source) {\n    if (source instanceof Blob || source instanceof Uint8Array) {\n        return source;\n    }\n    if (isWebReadableStream(source)) {\n        return drain(source);\n    }\n    // If it's not a true Blob, and it's not a Uint8Array, we can assume the source\n    // is a fake File created by createFileFromStream and we can get the original stream\n    // using getRawContent.\n    const rawContent = getRawContent(source);\n    // Shouldn't happen but guard for it anyway\n    if (isNodeReadableStream(rawContent)) {\n        throw new Error(\"Encountered unexpected type. In the browser, `concat` supports Web ReadableStream, Blob, Uint8Array, and files created using `createFile` only.\");\n    }\n    return toBlobPart(rawContent);\n}\n/**\n * Utility function that concatenates a set of binary inputs into one combined output.\n *\n * @param sources - array of sources for the concatenation\n * @returns - in Node, a (() =\\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs.\n *           In browser, returns a `Blob` representing all the concatenated inputs.\n *\n * @internal\n */\nexport async function concat(sources) {\n    const parts = [];\n    for (const source of sources) {\n        parts.push(await toBlobPart(typeof source === \"function\" ? source() : source));\n    }\n    return new Blob(parts);\n}\n//# sourceMappingURL=concat.common.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { randomUUID, stringToUint8Array } from \"@azure/core-util\";\nimport { concat } from \"../util/concat.js\";\nimport { isBlob } from \"../util/typeGuards.js\";\nfunction generateBoundary() {\n    return `----AzSDKFormBoundary${randomUUID()}`;\n}\nfunction encodeHeaders(headers) {\n    let result = \"\";\n    for (const [key, value] of headers) {\n        result += `${key}: ${value}\\r\\n`;\n    }\n    return result;\n}\nfunction getLength(source) {\n    if (source instanceof Uint8Array) {\n        return source.byteLength;\n    }\n    else if (isBlob(source)) {\n        // if was created using createFile then -1 means we have an unknown size\n        return source.size === -1 ? undefined : source.size;\n    }\n    else {\n        return undefined;\n    }\n}\nfunction getTotalLength(sources) {\n    let total = 0;\n    for (const source of sources) {\n        const partLength = getLength(source);\n        if (partLength === undefined) {\n            return undefined;\n        }\n        else {\n            total += partLength;\n        }\n    }\n    return total;\n}\nasync function buildRequestBody(request, parts, boundary) {\n    const sources = [\n        stringToUint8Array(`--${boundary}`, \"utf-8\"),\n        ...parts.flatMap((part) => [\n            stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n            stringToUint8Array(encodeHeaders(part.headers), \"utf-8\"),\n            stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n            part.body,\n            stringToUint8Array(`\\r\\n--${boundary}`, \"utf-8\"),\n        ]),\n        stringToUint8Array(\"--\\r\\n\\r\\n\", \"utf-8\"),\n    ];\n    const contentLength = getTotalLength(sources);\n    if (contentLength) {\n        request.headers.set(\"Content-Length\", contentLength);\n    }\n    request.body = await concat(sources);\n}\n/**\n * Name of multipart policy\n */\nexport const multipartPolicyName = \"multipartPolicy\";\nconst maxBoundaryLength = 70;\nconst validBoundaryCharacters = new Set(`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`);\nfunction assertValidBoundary(boundary) {\n    if (boundary.length > maxBoundaryLength) {\n        throw new Error(`Multipart boundary \"${boundary}\" exceeds maximum length of 70 characters`);\n    }\n    if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) {\n        throw new Error(`Multipart boundary \"${boundary}\" contains invalid characters`);\n    }\n}\n/**\n * Pipeline policy for multipart requests\n */\nexport function multipartPolicy() {\n    return {\n        name: multipartPolicyName,\n        async sendRequest(request, next) {\n            var _a;\n            if (!request.multipartBody) {\n                return next(request);\n            }\n            if (request.body) {\n                throw new Error(\"multipartBody and regular body cannot be set at the same time\");\n            }\n            let boundary = request.multipartBody.boundary;\n            const contentTypeHeader = (_a = request.headers.get(\"Content-Type\")) !== null && _a !== void 0 ? _a : \"multipart/mixed\";\n            const parsedHeader = contentTypeHeader.match(/^(multipart\\/[^ ;]+)(?:; *boundary=(.+))?$/);\n            if (!parsedHeader) {\n                throw new Error(`Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`);\n            }\n            const [, contentType, parsedBoundary] = parsedHeader;\n            if (parsedBoundary && boundary && parsedBoundary !== boundary) {\n                throw new Error(`Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`);\n            }\n            boundary !== null && boundary !== void 0 ? boundary : (boundary = parsedBoundary);\n            if (boundary) {\n                assertValidBoundary(boundary);\n            }\n            else {\n                boundary = generateBoundary();\n            }\n            request.headers.set(\"Content-Type\", `${contentType}; boundary=${boundary}`);\n            await buildRequestBody(request, request.multipartBody.parts, boundary);\n            request.multipartBody = undefined;\n            return next(request);\n        },\n    };\n}\n//# sourceMappingURL=multipartPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/*\n * NOTE: When moving this file, please update \"browser\" section in package.json\n */\nexport const decompressResponsePolicyName = \"decompressResponsePolicy\";\n/**\n * decompressResponsePolicy is not supported in the browser and attempting\n * to use it will raise an error.\n */\nexport function decompressResponsePolicy() {\n    throw new Error(\"decompressResponsePolicy is not supported in browser environment\");\n}\n//# sourceMappingURL=decompressResponsePolicy-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { AbortError } from \"@azure/abort-controller\";\nconst StandardAbortMessage = \"The operation was aborted.\";\n/**\n * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.\n * @param delayInMs - The number of milliseconds to be delayed.\n * @param value - The value to be resolved with after a timeout of t milliseconds.\n * @param options - The options for delay - currently abort options\n *                  - abortSignal - The abortSignal associated with containing operation.\n *                  - abortErrorMsg - The abort error message associated with containing operation.\n * @returns Resolved promise\n */\nexport function delay(delayInMs, value, options) {\n    return new Promise((resolve, reject) => {\n        let timer = undefined;\n        let onAborted = undefined;\n        const rejectOnAbort = () => {\n            return reject(new AbortError((options === null || options === void 0 ? void 0 : options.abortErrorMsg) ? options === null || options === void 0 ? void 0 : options.abortErrorMsg : StandardAbortMessage));\n        };\n        const removeListeners = () => {\n            if ((options === null || options === void 0 ? void 0 : options.abortSignal) && onAborted) {\n                options.abortSignal.removeEventListener(\"abort\", onAborted);\n            }\n        };\n        onAborted = () => {\n            if (timer) {\n                clearTimeout(timer);\n            }\n            removeListeners();\n            return rejectOnAbort();\n        };\n        if ((options === null || options === void 0 ? void 0 : options.abortSignal) && options.abortSignal.aborted) {\n            return rejectOnAbort();\n        }\n        timer = setTimeout(() => {\n            removeListeners();\n            resolve(value);\n        }, delayInMs);\n        if (options === null || options === void 0 ? void 0 : options.abortSignal) {\n            options.abortSignal.addEventListener(\"abort\", onAborted);\n        }\n    });\n}\n/**\n * @internal\n * @returns the parsed value or undefined if the parsed value is invalid.\n */\nexport function parseHeaderValueAsNumber(response, headerName) {\n    const value = response.headers.get(headerName);\n    if (!value)\n        return;\n    const valueAsNum = Number(value);\n    if (Number.isNaN(valueAsNum))\n        return;\n    return valueAsNum;\n}\n//# sourceMappingURL=helpers.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { parseHeaderValueAsNumber } from \"../util/helpers.js\";\n/**\n * The header that comes back from Azure services representing\n * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry).\n */\nconst RetryAfterHeader = \"Retry-After\";\n/**\n * The headers that come back from Azure services representing\n * the amount of time (minimum) to wait to retry.\n *\n * \"retry-after-ms\", \"x-ms-retry-after-ms\" : milliseconds\n * \"Retry-After\" : seconds or timestamp\n */\nconst AllRetryAfterHeaders = [\"retry-after-ms\", \"x-ms-retry-after-ms\", RetryAfterHeader];\n/**\n * A response is a throttling retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n *\n * Returns the `retryAfterInMs` value if the response is a throttling retry response.\n * If not throttling retry response, returns `undefined`.\n *\n * @internal\n */\nfunction getRetryAfterInMs(response) {\n    if (!(response && [429, 503].includes(response.status)))\n        return undefined;\n    try {\n        // Headers: \"retry-after-ms\", \"x-ms-retry-after-ms\", \"Retry-After\"\n        for (const header of AllRetryAfterHeaders) {\n            const retryAfterValue = parseHeaderValueAsNumber(response, header);\n            if (retryAfterValue === 0 || retryAfterValue) {\n                // \"Retry-After\" header ==> seconds\n                // \"retry-after-ms\", \"x-ms-retry-after-ms\" headers ==> milli-seconds\n                const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1;\n                return retryAfterValue * multiplyingFactor; // in milli-seconds\n            }\n        }\n        // RetryAfterHeader (\"Retry-After\") has a special case where it might be formatted as a date instead of a number of seconds\n        const retryAfterHeader = response.headers.get(RetryAfterHeader);\n        if (!retryAfterHeader)\n            return;\n        const date = Date.parse(retryAfterHeader);\n        const diff = date - Date.now();\n        // negative diff would mean a date in the past, so retry asap with 0 milliseconds\n        return Number.isFinite(diff) ? Math.max(0, diff) : undefined;\n    }\n    catch (_a) {\n        return undefined;\n    }\n}\n/**\n * A response is a retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n */\nexport function isThrottlingRetryResponse(response) {\n    return Number.isFinite(getRetryAfterInMs(response));\n}\nexport function throttlingRetryStrategy() {\n    return {\n        name: \"throttlingRetryStrategy\",\n        retry({ response }) {\n            const retryAfterInMs = getRetryAfterInMs(response);\n            if (!Number.isFinite(retryAfterInMs)) {\n                return { skipStrategy: true };\n            }\n            return {\n                retryAfterInMs,\n            };\n        },\n    };\n}\n//# sourceMappingURL=throttlingRetryStrategy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { getRandomIntegerInclusive } from \"@azure/core-util\";\nimport { isThrottlingRetryResponse } from \"./throttlingRetryStrategy.js\";\n// intervals are in milliseconds\nconst DEFAULT_CLIENT_RETRY_INTERVAL = 1000;\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n/**\n * A retry strategy that retries with an exponentially increasing delay in these two cases:\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505).\n */\nexport function exponentialRetryStrategy(options = {}) {\n    var _a, _b;\n    const retryInterval = (_a = options.retryDelayInMs) !== null && _a !== void 0 ? _a : DEFAULT_CLIENT_RETRY_INTERVAL;\n    const maxRetryInterval = (_b = options.maxRetryDelayInMs) !== null && _b !== void 0 ? _b : DEFAULT_CLIENT_MAX_RETRY_INTERVAL;\n    let retryAfterInMs = retryInterval;\n    return {\n        name: \"exponentialRetryStrategy\",\n        retry({ retryCount, response, responseError }) {\n            const matchedSystemError = isSystemError(responseError);\n            const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors;\n            const isExponential = isExponentialRetryResponse(response);\n            const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes;\n            const unknownResponse = response && (isThrottlingRetryResponse(response) || !isExponential);\n            if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) {\n                return { skipStrategy: true };\n            }\n            if (responseError && !matchedSystemError && !isExponential) {\n                return { errorToThrow: responseError };\n            }\n            // Exponentially increase the delay each time\n            const exponentialDelay = retryAfterInMs * Math.pow(2, retryCount);\n            // Don't let the delay exceed the maximum\n            const clampedExponentialDelay = Math.min(maxRetryInterval, exponentialDelay);\n            // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n            // that retries across multiple clients don't occur simultaneously.\n            retryAfterInMs =\n                clampedExponentialDelay / 2 + getRandomIntegerInclusive(0, clampedExponentialDelay / 2);\n            return { retryAfterInMs };\n        },\n    };\n}\n/**\n * A response is a retry response if it has status codes:\n * - 408, or\n * - Greater or equal than 500, except for 501 and 505.\n */\nexport function isExponentialRetryResponse(response) {\n    return Boolean(response &&\n        response.status !== undefined &&\n        (response.status >= 500 || response.status === 408) &&\n        response.status !== 501 &&\n        response.status !== 505);\n}\n/**\n * Determines whether an error from a pipeline response was triggered in the network layer.\n */\nexport function isSystemError(err) {\n    if (!err) {\n        return false;\n    }\n    return (err.code === \"ETIMEDOUT\" ||\n        err.code === \"ESOCKETTIMEDOUT\" ||\n        err.code === \"ECONNREFUSED\" ||\n        err.code === \"ECONNRESET\" ||\n        err.code === \"ENOENT\" ||\n        err.code === \"ENOTFOUND\");\n}\n//# sourceMappingURL=exponentialRetryStrategy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { delay } from \"../util/helpers.js\";\nimport { createClientLogger } from \"@azure/logger\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\nconst retryPolicyLogger = createClientLogger(\"core-rest-pipeline retryPolicy\");\n/**\n * The programmatic identifier of the retryPolicy.\n */\nconst retryPolicyName = \"retryPolicy\";\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nexport function retryPolicy(strategies, options = { maxRetries: DEFAULT_RETRY_POLICY_COUNT }) {\n    const logger = options.logger || retryPolicyLogger;\n    return {\n        name: retryPolicyName,\n        async sendRequest(request, next) {\n            var _a, _b;\n            let response;\n            let responseError;\n            let retryCount = -1;\n            // eslint-disable-next-line no-constant-condition\n            retryRequest: while (true) {\n                retryCount += 1;\n                response = undefined;\n                responseError = undefined;\n                try {\n                    logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId);\n                    response = await next(request);\n                    logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId);\n                }\n                catch (e) {\n                    logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId);\n                    // RestErrors are valid targets for the retry strategies.\n                    // If none of the retry strategies can work with them, they will be thrown later in this policy.\n                    // If the received error is not a RestError, it is immediately thrown.\n                    responseError = e;\n                    if (!e || responseError.name !== \"RestError\") {\n                        throw e;\n                    }\n                    response = responseError.response;\n                }\n                if ((_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {\n                    logger.error(`Retry ${retryCount}: Request aborted.`);\n                    const abortError = new AbortError();\n                    throw abortError;\n                }\n                if (retryCount >= ((_b = options.maxRetries) !== null && _b !== void 0 ? _b : DEFAULT_RETRY_POLICY_COUNT)) {\n                    logger.info(`Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`);\n                    if (responseError) {\n                        throw responseError;\n                    }\n                    else if (response) {\n                        return response;\n                    }\n                    else {\n                        throw new Error(\"Maximum retries reached with no response or error to throw\");\n                    }\n                }\n                logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`);\n                strategiesLoop: for (const strategy of strategies) {\n                    const strategyLogger = strategy.logger || retryPolicyLogger;\n                    strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`);\n                    const modifiers = strategy.retry({\n                        retryCount,\n                        response,\n                        responseError,\n                    });\n                    if (modifiers.skipStrategy) {\n                        strategyLogger.info(`Retry ${retryCount}: Skipped.`);\n                        continue strategiesLoop;\n                    }\n                    const { errorToThrow, retryAfterInMs, redirectTo } = modifiers;\n                    if (errorToThrow) {\n                        strategyLogger.error(`Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`, errorToThrow);\n                        throw errorToThrow;\n                    }\n                    if (retryAfterInMs || retryAfterInMs === 0) {\n                        strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`);\n                        await delay(retryAfterInMs, undefined, { abortSignal: request.abortSignal });\n                        continue retryRequest;\n                    }\n                    if (redirectTo) {\n                        strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`);\n                        request.url = redirectTo;\n                        continue retryRequest;\n                    }\n                }\n                if (responseError) {\n                    logger.info(`None of the retry strategies could work with the received error. Throwing it.`);\n                    throw responseError;\n                }\n                if (response) {\n                    logger.info(`None of the retry strategies could work with the received response. Returning it.`);\n                    return response;\n                }\n                // If all the retries skip and there's no response,\n                // we're still in the retry loop, so a new request will be sent\n                // until `maxRetries` is reached.\n            }\n        },\n    };\n}\n//# sourceMappingURL=retryPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { throttlingRetryStrategy } from \"../retryStrategies/throttlingRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n/**\n * Name of the {@link defaultRetryPolicy}\n */\nexport const defaultRetryPolicyName = \"defaultRetryPolicy\";\n/**\n * A policy that retries according to three strategies:\n * - When the server sends a 429 response with a Retry-After header.\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay.\n */\nexport function defaultRetryPolicy(options = {}) {\n    var _a;\n    return {\n        name: defaultRetryPolicyName,\n        sendRequest: retryPolicy([throttlingRetryStrategy(), exponentialRetryStrategy(options)], {\n            maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT,\n        }).sendRequest,\n    };\n}\n//# sourceMappingURL=defaultRetryPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nfunction normalizeName(name) {\n    return name.toLowerCase();\n}\nfunction* headerIterator(map) {\n    for (const entry of map.values()) {\n        yield [entry.name, entry.value];\n    }\n}\nclass HttpHeadersImpl {\n    constructor(rawHeaders) {\n        this._headersMap = new Map();\n        if (rawHeaders) {\n            for (const headerName of Object.keys(rawHeaders)) {\n                this.set(headerName, rawHeaders[headerName]);\n            }\n        }\n    }\n    /**\n     * Set a header in this collection with the provided name and value. The name is\n     * case-insensitive.\n     * @param name - The name of the header to set. This value is case-insensitive.\n     * @param value - The value of the header to set.\n     */\n    set(name, value) {\n        this._headersMap.set(normalizeName(name), { name, value: String(value).trim() });\n    }\n    /**\n     * Get the header value for the provided header name, or undefined if no header exists in this\n     * collection with the provided name.\n     * @param name - The name of the header. This value is case-insensitive.\n     */\n    get(name) {\n        var _a;\n        return (_a = this._headersMap.get(normalizeName(name))) === null || _a === void 0 ? void 0 : _a.value;\n    }\n    /**\n     * Get whether or not this header collection contains a header entry for the provided header name.\n     * @param name - The name of the header to set. This value is case-insensitive.\n     */\n    has(name) {\n        return this._headersMap.has(normalizeName(name));\n    }\n    /**\n     * Remove the header with the provided headerName.\n     * @param name - The name of the header to remove.\n     */\n    delete(name) {\n        this._headersMap.delete(normalizeName(name));\n    }\n    /**\n     * Get the JSON object representation of this HTTP header collection.\n     */\n    toJSON(options = {}) {\n        const result = {};\n        if (options.preserveCase) {\n            for (const entry of this._headersMap.values()) {\n                result[entry.name] = entry.value;\n            }\n        }\n        else {\n            for (const [normalizedName, entry] of this._headersMap) {\n                result[normalizedName] = entry.value;\n            }\n        }\n        return result;\n    }\n    /**\n     * Get the string representation of this HTTP header collection.\n     */\n    toString() {\n        return JSON.stringify(this.toJSON({ preserveCase: true }));\n    }\n    /**\n     * Iterate over tuples of header [name, value] pairs.\n     */\n    [Symbol.iterator]() {\n        return headerIterator(this._headersMap);\n    }\n}\n/**\n * Creates an object that satisfies the `HttpHeaders` interface.\n * @param rawHeaders - A simple object representing initial headers\n */\nexport function createHttpHeaders(rawHeaders) {\n    return new HttpHeadersImpl(rawHeaders);\n}\n//# sourceMappingURL=httpHeaders.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { isNodeLike, stringToUint8Array } from \"@azure/core-util\";\nimport { createHttpHeaders } from \"../httpHeaders.js\";\n/**\n * The programmatic identifier of the formDataPolicy.\n */\nexport const formDataPolicyName = \"formDataPolicy\";\nfunction formDataToFormDataMap(formData) {\n    var _a;\n    const formDataMap = {};\n    for (const [key, value] of formData.entries()) {\n        (_a = formDataMap[key]) !== null && _a !== void 0 ? _a : (formDataMap[key] = []);\n        formDataMap[key].push(value);\n    }\n    return formDataMap;\n}\n/**\n * A policy that encodes FormData on the request into the body.\n */\nexport function formDataPolicy() {\n    return {\n        name: formDataPolicyName,\n        async sendRequest(request, next) {\n            if (isNodeLike && typeof FormData !== \"undefined\" && request.body instanceof FormData) {\n                request.formData = formDataToFormDataMap(request.body);\n                request.body = undefined;\n            }\n            if (request.formData) {\n                const contentType = request.headers.get(\"Content-Type\");\n                if (contentType && contentType.indexOf(\"application/x-www-form-urlencoded\") !== -1) {\n                    request.body = wwwFormUrlEncode(request.formData);\n                }\n                else {\n                    await prepareFormData(request.formData, request);\n                }\n                request.formData = undefined;\n            }\n            return next(request);\n        },\n    };\n}\nfunction wwwFormUrlEncode(formData) {\n    const urlSearchParams = new URLSearchParams();\n    for (const [key, value] of Object.entries(formData)) {\n        if (Array.isArray(value)) {\n            for (const subValue of value) {\n                urlSearchParams.append(key, subValue.toString());\n            }\n        }\n        else {\n            urlSearchParams.append(key, value.toString());\n        }\n    }\n    return urlSearchParams.toString();\n}\nasync function prepareFormData(formData, request) {\n    // validate content type (multipart/form-data)\n    const contentType = request.headers.get(\"Content-Type\");\n    if (contentType && !contentType.startsWith(\"multipart/form-data\")) {\n        // content type is specified and is not multipart/form-data. Exit.\n        return;\n    }\n    request.headers.set(\"Content-Type\", contentType !== null && contentType !== void 0 ? contentType : \"multipart/form-data\");\n    // set body to MultipartRequestBody using content from FormDataMap\n    const parts = [];\n    for (const [fieldName, values] of Object.entries(formData)) {\n        for (const value of Array.isArray(values) ? values : [values]) {\n            if (typeof value === \"string\") {\n                parts.push({\n                    headers: createHttpHeaders({\n                        \"Content-Disposition\": `form-data; name=\"${fieldName}\"`,\n                    }),\n                    body: stringToUint8Array(value, \"utf-8\"),\n                });\n            }\n            else if (value === undefined || value === null || typeof value !== \"object\") {\n                throw new Error(`Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`);\n            }\n            else {\n                // using || instead of ?? here since if value.name is empty we should create a file name\n                const fileName = value.name || \"blob\";\n                const headers = createHttpHeaders();\n                headers.set(\"Content-Disposition\", `form-data; name=\"${fieldName}\"; filename=\"${fileName}\"`);\n                // again, || is used since an empty value.type means the content type is unset\n                headers.set(\"Content-Type\", value.type || \"application/octet-stream\");\n                parts.push({\n                    headers,\n                    body: value,\n                });\n            }\n        }\n    }\n    request.multipartBody = { parts };\n}\n//# sourceMappingURL=formDataPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nexport const proxyPolicyName = \"proxyPolicy\";\nconst errorMessage = \"proxyPolicy is not supported in browser environment\";\nexport function getDefaultProxySettings() {\n    throw new Error(errorMessage);\n}\n/**\n * proxyPolicy is not supported in the browser and attempting\n * to use it will raise an error.\n */\nexport function proxyPolicy() {\n    throw new Error(errorMessage);\n}\n/**\n * A function to reset the cached agents.\n * proxyPolicy is not supported in the browser and attempting\n * to use it will raise an error.\n * @internal\n */\nexport function resetCachedProxyAgents() {\n    throw new Error(errorMessage);\n}\n//# sourceMappingURL=proxyPolicy.common.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * The programmatic identifier of the setClientRequestIdPolicy.\n */\nexport const setClientRequestIdPolicyName = \"setClientRequestIdPolicy\";\n/**\n * Each PipelineRequest gets a unique id upon creation.\n * This policy passes that unique id along via an HTTP header to enable better\n * telemetry and tracing.\n * @param requestIdHeaderName - The name of the header to pass the request ID to.\n */\nexport function setClientRequestIdPolicy(requestIdHeaderName = \"x-ms-client-request-id\") {\n    return {\n        name: setClientRequestIdPolicyName,\n        async sendRequest(request, next) {\n            if (!request.headers.has(requestIdHeaderName)) {\n                request.headers.set(requestIdHeaderName, request.requestId);\n            }\n            return next(request);\n        },\n    };\n}\n//# sourceMappingURL=setClientRequestIdPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Name of the TLS Policy\n */\nexport const tlsPolicyName = \"tlsPolicy\";\n/**\n * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication.\n */\nexport function tlsPolicy(tlsSettings) {\n    return {\n        name: tlsPolicyName,\n        sendRequest: async (req, next) => {\n            // Users may define a request tlsSettings, honor those over the client level one\n            if (!req.tlsSettings) {\n                req.tlsSettings = tlsSettings;\n            }\n            return next(req);\n        },\n    };\n}\n//# sourceMappingURL=tlsPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nexport const custom = {};\n//# sourceMappingURL=inspect.common.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { isError } from \"@azure/core-util\";\nimport { custom } from \"./util/inspect.js\";\nimport { Sanitizer } from \"./util/sanitizer.js\";\nconst errorSanitizer = new Sanitizer();\n/**\n * A custom error type for failed pipeline requests.\n */\nexport class RestError extends Error {\n    constructor(message, options = {}) {\n        super(message);\n        this.name = \"RestError\";\n        this.code = options.code;\n        this.statusCode = options.statusCode;\n        // The request and response may contain sensitive information in the headers or body.\n        // To help prevent this sensitive information being accidentally logged, the request and response\n        // properties are marked as non-enumerable here. This prevents them showing up in the output of\n        // JSON.stringify and console.log.\n        Object.defineProperty(this, \"request\", { value: options.request, enumerable: false });\n        Object.defineProperty(this, \"response\", { value: options.response, enumerable: false });\n        Object.setPrototypeOf(this, RestError.prototype);\n    }\n    /**\n     * Logging method for util.inspect in Node\n     */\n    [custom]() {\n        // Extract non-enumerable properties and add them back. This is OK since in this output the request and\n        // response get sanitized.\n        return `RestError: ${this.message} \\n ${errorSanitizer.sanitize(Object.assign(Object.assign({}, this), { request: this.request, response: this.response }))}`;\n    }\n}\n/**\n * Something went wrong when making the request.\n * This means the actual request failed for some reason,\n * such as a DNS issue or the connection being lost.\n */\nRestError.REQUEST_SEND_ERROR = \"REQUEST_SEND_ERROR\";\n/**\n * This means that parsing the response from the server failed.\n * It may have been malformed.\n */\nRestError.PARSE_ERROR = \"PARSE_ERROR\";\n/**\n * Typeguard for RestError\n * @param e - Something caught by a catch clause.\n */\nexport function isRestError(e) {\n    if (e instanceof RestError) {\n        return true;\n    }\n    return isError(e) && e.name === \"RestError\";\n}\n//# sourceMappingURL=restError.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createTracingClient, } from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"../constants.js\";\nimport { getUserAgentValue } from \"../util/userAgent.js\";\nimport { logger } from \"../log.js\";\nimport { getErrorMessage, isError } from \"@azure/core-util\";\nimport { isRestError } from \"../restError.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n/**\n * The programmatic identifier of the tracingPolicy.\n */\nexport const tracingPolicyName = \"tracingPolicy\";\n/**\n * A simple policy to create OpenTelemetry Spans for each request made by the pipeline\n * that has SpanOptions with a parent.\n * Requests made without a parent Span will not be recorded.\n * @param options - Options to configure the telemetry logged by the tracing policy.\n */\nexport function tracingPolicy(options = {}) {\n    const userAgentPromise = getUserAgentValue(options.userAgentPrefix);\n    const sanitizer = new Sanitizer({\n        additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n    });\n    const tracingClient = tryCreateTracingClient();\n    return {\n        name: tracingPolicyName,\n        async sendRequest(request, next) {\n            var _a;\n            if (!tracingClient) {\n                return next(request);\n            }\n            const userAgent = await userAgentPromise;\n            const spanAttributes = {\n                \"http.url\": sanitizer.sanitizeUrl(request.url),\n                \"http.method\": request.method,\n                \"http.user_agent\": userAgent,\n                requestId: request.requestId,\n            };\n            if (userAgent) {\n                spanAttributes[\"http.user_agent\"] = userAgent;\n            }\n            const { span, tracingContext } = (_a = tryCreateSpan(tracingClient, request, spanAttributes)) !== null && _a !== void 0 ? _a : {};\n            if (!span || !tracingContext) {\n                return next(request);\n            }\n            try {\n                const response = await tracingClient.withContext(tracingContext, next, request);\n                tryProcessResponse(span, response);\n                return response;\n            }\n            catch (err) {\n                tryProcessError(span, err);\n                throw err;\n            }\n        },\n    };\n}\nfunction tryCreateTracingClient() {\n    try {\n        return createTracingClient({\n            namespace: \"\",\n            packageName: \"@azure/core-rest-pipeline\",\n            packageVersion: SDK_VERSION,\n        });\n    }\n    catch (e) {\n        logger.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`);\n        return undefined;\n    }\n}\nfunction tryCreateSpan(tracingClient, request, spanAttributes) {\n    try {\n        // As per spec, we do not need to differentiate between HTTP and HTTPS in span name.\n        const { span, updatedOptions } = tracingClient.startSpan(`HTTP ${request.method}`, { tracingOptions: request.tracingOptions }, {\n            spanKind: \"client\",\n            spanAttributes,\n        });\n        // If the span is not recording, don't do any more work.\n        if (!span.isRecording()) {\n            span.end();\n            return undefined;\n        }\n        // set headers\n        const headers = tracingClient.createRequestHeaders(updatedOptions.tracingOptions.tracingContext);\n        for (const [key, value] of Object.entries(headers)) {\n            request.headers.set(key, value);\n        }\n        return { span, tracingContext: updatedOptions.tracingOptions.tracingContext };\n    }\n    catch (e) {\n        logger.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`);\n        return undefined;\n    }\n}\nfunction tryProcessError(span, error) {\n    try {\n        span.setStatus({\n            status: \"error\",\n            error: isError(error) ? error : undefined,\n        });\n        if (isRestError(error) && error.statusCode) {\n            span.setAttribute(\"http.status_code\", error.statusCode);\n        }\n        span.end();\n    }\n    catch (e) {\n        logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n    }\n}\nfunction tryProcessResponse(span, response) {\n    try {\n        span.setAttribute(\"http.status_code\", response.status);\n        const serviceRequestId = response.headers.get(\"x-ms-request-id\");\n        if (serviceRequestId) {\n            span.setAttribute(\"serviceRequestId\", serviceRequestId);\n        }\n        span.setStatus({\n            status: \"success\",\n        });\n        span.end();\n    }\n    catch (e) {\n        logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n    }\n}\n//# sourceMappingURL=tracingPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { logPolicy } from \"./policies/logPolicy.js\";\nimport { createEmptyPipeline } from \"./pipeline.js\";\nimport { redirectPolicy } from \"./policies/redirectPolicy.js\";\nimport { userAgentPolicy } from \"./policies/userAgentPolicy.js\";\nimport { multipartPolicy, multipartPolicyName } from \"./policies/multipartPolicy.js\";\nimport { decompressResponsePolicy } from \"./policies/decompressResponsePolicy.js\";\nimport { defaultRetryPolicy } from \"./policies/defaultRetryPolicy.js\";\nimport { formDataPolicy } from \"./policies/formDataPolicy.js\";\nimport { isNodeLike } from \"@azure/core-util\";\nimport { proxyPolicy } from \"./policies/proxyPolicy.js\";\nimport { setClientRequestIdPolicy } from \"./policies/setClientRequestIdPolicy.js\";\nimport { tlsPolicy } from \"./policies/tlsPolicy.js\";\nimport { tracingPolicy } from \"./policies/tracingPolicy.js\";\n/**\n * Create a new pipeline with a default set of customizable policies.\n * @param options - Options to configure a custom pipeline.\n */\nexport function createPipelineFromOptions(options) {\n    var _a;\n    const pipeline = createEmptyPipeline();\n    if (isNodeLike) {\n        if (options.tlsOptions) {\n            pipeline.addPolicy(tlsPolicy(options.tlsOptions));\n        }\n        pipeline.addPolicy(proxyPolicy(options.proxyOptions));\n        pipeline.addPolicy(decompressResponsePolicy());\n    }\n    pipeline.addPolicy(formDataPolicy(), { beforePolicies: [multipartPolicyName] });\n    pipeline.addPolicy(userAgentPolicy(options.userAgentOptions));\n    pipeline.addPolicy(setClientRequestIdPolicy((_a = options.telemetryOptions) === null || _a === void 0 ? void 0 : _a.clientRequestIdHeaderName));\n    // The multipart policy is added after policies with no phase, so that\n    // policies can be added between it and formDataPolicy to modify\n    // properties (e.g., making the boundary constant in recorded tests).\n    pipeline.addPolicy(multipartPolicy(), { afterPhase: \"Deserialize\" });\n    pipeline.addPolicy(defaultRetryPolicy(options.retryOptions), { phase: \"Retry\" });\n    pipeline.addPolicy(tracingPolicy(Object.assign(Object.assign({}, options.userAgentOptions), options.loggingOptions)), {\n        afterPhase: \"Retry\",\n    });\n    if (isNodeLike) {\n        // Both XHR and Fetch expect to handle redirects automatically,\n        // so only include this policy when we're in Node.\n        pipeline.addPolicy(redirectPolicy(options.redirectOptions), { afterPhase: \"Retry\" });\n    }\n    pipeline.addPolicy(logPolicy(options.loggingOptions), { afterPhase: \"Sign\" });\n    return pipeline;\n}\n//# sourceMappingURL=createPipelineFromOptions.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { AbortError } from \"@azure/abort-controller\";\nimport { RestError } from \"./restError.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { isNodeReadableStream, isWebReadableStream } from \"./util/typeGuards.js\";\n/**\n * Checks if the body is a Blob or Blob-like\n */\nfunction isBlob(body) {\n    // File objects count as a type of Blob, so we want to use instanceof explicitly\n    return (typeof Blob === \"function\" || typeof Blob === \"object\") && body instanceof Blob;\n}\n/**\n * A HttpClient implementation that uses window.fetch to send HTTP requests.\n * @internal\n */\nclass FetchHttpClient {\n    /**\n     * Makes a request over an underlying transport layer and returns the response.\n     * @param request - The request to be made.\n     */\n    async sendRequest(request) {\n        const url = new URL(request.url);\n        const isInsecure = url.protocol !== \"https:\";\n        if (isInsecure && !request.allowInsecureConnection) {\n            throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n        }\n        if (request.proxySettings) {\n            throw new Error(\"HTTP proxy is not supported in browser environment\");\n        }\n        try {\n            return await makeRequest(request);\n        }\n        catch (e) {\n            throw getError(e, request);\n        }\n    }\n}\n/**\n * Sends a request\n */\nasync function makeRequest(request) {\n    const { abortController, abortControllerCleanup } = setupAbortSignal(request);\n    try {\n        const headers = buildFetchHeaders(request.headers);\n        const { streaming, body: requestBody } = buildRequestBody(request);\n        const requestInit = Object.assign(Object.assign({ body: requestBody, method: request.method, headers: headers, signal: abortController.signal }, (\"credentials\" in Request.prototype\n            ? { credentials: request.withCredentials ? \"include\" : \"same-origin\" }\n            : {})), (\"cache\" in Request.prototype ? { cache: \"no-store\" } : {}));\n        // According to https://fetch.spec.whatwg.org/#fetch-method,\n        // init.duplex must be set when body is a ReadableStream object.\n        // currently \"half\" is the only valid value.\n        if (streaming) {\n            requestInit.duplex = \"half\";\n        }\n        /**\n         * Developers of the future:\n         * Do not set redirect: \"manual\" as part\n         * of request options.\n         * It will not work as you expect.\n         */\n        const response = await fetch(request.url, requestInit);\n        // If we're uploading a blob, we need to fire the progress event manually\n        if (isBlob(request.body) && request.onUploadProgress) {\n            request.onUploadProgress({ loadedBytes: request.body.size });\n        }\n        return buildPipelineResponse(response, request, abortControllerCleanup);\n    }\n    catch (e) {\n        abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup();\n        throw e;\n    }\n}\n/**\n * Creates a pipeline response from a Fetch response;\n */\nasync function buildPipelineResponse(httpResponse, request, abortControllerCleanup) {\n    var _a, _b;\n    const headers = buildPipelineHeaders(httpResponse);\n    const response = {\n        request,\n        headers,\n        status: httpResponse.status,\n    };\n    const bodyStream = isWebReadableStream(httpResponse.body)\n        ? buildBodyStream(httpResponse.body, {\n            onProgress: request.onDownloadProgress,\n            onEnd: abortControllerCleanup,\n        })\n        : httpResponse.body;\n    if (\n    // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n    ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(Number.POSITIVE_INFINITY)) ||\n        ((_b = request.streamResponseStatusCodes) === null || _b === void 0 ? void 0 : _b.has(response.status))) {\n        if (request.enableBrowserStreams) {\n            response.browserStreamBody = bodyStream !== null && bodyStream !== void 0 ? bodyStream : undefined;\n        }\n        else {\n            const responseStream = new Response(bodyStream);\n            response.blobBody = responseStream.blob();\n            abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup();\n        }\n    }\n    else {\n        const responseStream = new Response(bodyStream);\n        response.bodyAsText = await responseStream.text();\n        abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup();\n    }\n    return response;\n}\nfunction setupAbortSignal(request) {\n    const abortController = new AbortController();\n    // Cleanup function\n    let abortControllerCleanup;\n    /**\n     * Attach an abort listener to the request\n     */\n    let abortListener;\n    if (request.abortSignal) {\n        if (request.abortSignal.aborted) {\n            throw new AbortError(\"The operation was aborted.\");\n        }\n        abortListener = (event) => {\n            if (event.type === \"abort\") {\n                abortController.abort();\n            }\n        };\n        request.abortSignal.addEventListener(\"abort\", abortListener);\n        abortControllerCleanup = () => {\n            var _a;\n            if (abortListener) {\n                (_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener(\"abort\", abortListener);\n            }\n        };\n    }\n    // If a timeout was passed, call the abort signal once the time elapses\n    if (request.timeout > 0) {\n        setTimeout(() => {\n            abortController.abort();\n        }, request.timeout);\n    }\n    return { abortController, abortControllerCleanup };\n}\n/**\n * Gets the specific error\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters\nfunction getError(e, request) {\n    var _a;\n    if (e && (e === null || e === void 0 ? void 0 : e.name) === \"AbortError\") {\n        return e;\n    }\n    else {\n        return new RestError(`Error sending request: ${e.message}`, {\n            code: (_a = e === null || e === void 0 ? void 0 : e.code) !== null && _a !== void 0 ? _a : RestError.REQUEST_SEND_ERROR,\n            request,\n        });\n    }\n}\n/**\n * Converts PipelineRequest headers to Fetch headers\n */\nfunction buildFetchHeaders(pipelineHeaders) {\n    const headers = new Headers();\n    for (const [name, value] of pipelineHeaders) {\n        headers.append(name, value);\n    }\n    return headers;\n}\nfunction buildPipelineHeaders(httpResponse) {\n    const responseHeaders = createHttpHeaders();\n    for (const [name, value] of httpResponse.headers) {\n        responseHeaders.set(name, value);\n    }\n    return responseHeaders;\n}\nfunction buildRequestBody(request) {\n    const body = typeof request.body === \"function\" ? request.body() : request.body;\n    if (isNodeReadableStream(body)) {\n        throw new Error(\"Node streams are not supported in browser environment.\");\n    }\n    return isWebReadableStream(body)\n        ? { streaming: true, body: buildBodyStream(body, { onProgress: request.onUploadProgress }) }\n        : { streaming: false, body };\n}\n/**\n * Reads the request/response original stream and stream it through a new\n * ReadableStream, this is done to be able to report progress in a way that\n * all modern browsers support. TransformStreams would be an alternative,\n * however they are not yet supported by all browsers i.e Firefox\n */\nfunction buildBodyStream(readableStream, options = {}) {\n    let loadedBytes = 0;\n    const { onProgress, onEnd } = options;\n    // If the current browser supports pipeThrough we use a TransformStream\n    // to report progress\n    if (isTransformStreamSupported(readableStream)) {\n        return readableStream.pipeThrough(new TransformStream({\n            transform(chunk, controller) {\n                if (chunk === null) {\n                    controller.terminate();\n                    return;\n                }\n                controller.enqueue(chunk);\n                loadedBytes += chunk.length;\n                if (onProgress) {\n                    onProgress({ loadedBytes });\n                }\n            },\n            flush() {\n                onEnd === null || onEnd === void 0 ? void 0 : onEnd();\n            },\n        }));\n    }\n    else {\n        // If we can't use transform streams, wrap the original stream in a new readable stream\n        // and use pull to enqueue each chunk and report progress.\n        const reader = readableStream.getReader();\n        return new ReadableStream({\n            async pull(controller) {\n                var _a;\n                const { done, value } = await reader.read();\n                // When no more data needs to be consumed, break the reading\n                if (done || !value) {\n                    onEnd === null || onEnd === void 0 ? void 0 : onEnd();\n                    // Close the stream\n                    controller.close();\n                    reader.releaseLock();\n                    return;\n                }\n                loadedBytes += (_a = value === null || value === void 0 ? void 0 : value.length) !== null && _a !== void 0 ? _a : 0;\n                // Enqueue the next data chunk into our target stream\n                controller.enqueue(value);\n                if (onProgress) {\n                    onProgress({ loadedBytes });\n                }\n            },\n            cancel(reason) {\n                onEnd === null || onEnd === void 0 ? void 0 : onEnd();\n                return reader.cancel(reason);\n            },\n        });\n    }\n}\n/**\n * Create a new HttpClient instance for the browser environment.\n * @internal\n */\nexport function createFetchHttpClient() {\n    return new FetchHttpClient();\n}\nfunction isTransformStreamSupported(readableStream) {\n    return readableStream.pipeThrough !== undefined && self.TransformStream !== undefined;\n}\n//# sourceMappingURL=fetchHttpClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createFetchHttpClient } from \"./fetchHttpClient.js\";\n/**\n * Create the correct HttpClient for the current environment.\n */\nexport function createDefaultHttpClient() {\n    return createFetchHttpClient();\n}\n//# sourceMappingURL=defaultHttpClient-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { randomUUID } from \"@azure/core-util\";\nclass PipelineRequestImpl {\n    constructor(options) {\n        var _a, _b, _c, _d, _e, _f, _g;\n        this.url = options.url;\n        this.body = options.body;\n        this.headers = (_a = options.headers) !== null && _a !== void 0 ? _a : createHttpHeaders();\n        this.method = (_b = options.method) !== null && _b !== void 0 ? _b : \"GET\";\n        this.timeout = (_c = options.timeout) !== null && _c !== void 0 ? _c : 0;\n        this.multipartBody = options.multipartBody;\n        this.formData = options.formData;\n        this.disableKeepAlive = (_d = options.disableKeepAlive) !== null && _d !== void 0 ? _d : false;\n        this.proxySettings = options.proxySettings;\n        this.streamResponseStatusCodes = options.streamResponseStatusCodes;\n        this.withCredentials = (_e = options.withCredentials) !== null && _e !== void 0 ? _e : false;\n        this.abortSignal = options.abortSignal;\n        this.tracingOptions = options.tracingOptions;\n        this.onUploadProgress = options.onUploadProgress;\n        this.onDownloadProgress = options.onDownloadProgress;\n        this.requestId = options.requestId || randomUUID();\n        this.allowInsecureConnection = (_f = options.allowInsecureConnection) !== null && _f !== void 0 ? _f : false;\n        this.enableBrowserStreams = (_g = options.enableBrowserStreams) !== null && _g !== void 0 ? _g : false;\n    }\n}\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nexport function createPipelineRequest(options) {\n    return new PipelineRequestImpl(options);\n}\n//# sourceMappingURL=pipelineRequest.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { delay } from \"./helpers.js\";\n// Default options for the cycler if none are provided\nexport const DEFAULT_CYCLER_OPTIONS = {\n    forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires\n    retryIntervalInMs: 3000, // Allow refresh attempts every 3s\n    refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null.\n * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts.\n * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception.\n * @returns - A promise that, if it resolves, will resolve with an access token.\n */\nasync function beginRefresh(getAccessToken, retryIntervalInMs, refreshTimeout) {\n    // This wrapper handles exceptions gracefully as long as we haven't exceeded\n    // the timeout.\n    async function tryGetAccessToken() {\n        if (Date.now() < refreshTimeout) {\n            try {\n                return await getAccessToken();\n            }\n            catch (_a) {\n                return null;\n            }\n        }\n        else {\n            const finalToken = await getAccessToken();\n            // Timeout is up, so throw if it's still null\n            if (finalToken === null) {\n                throw new Error(\"Failed to refresh access token.\");\n            }\n            return finalToken;\n        }\n    }\n    let token = await tryGetAccessToken();\n    while (token === null) {\n        await delay(retryIntervalInMs);\n        token = await tryGetAccessToken();\n    }\n    return token;\n}\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nexport function createTokenCycler(credential, tokenCyclerOptions) {\n    let refreshWorker = null;\n    let token = null;\n    let tenantId;\n    const options = Object.assign(Object.assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions);\n    /**\n     * This little holder defines several predicates that we use to construct\n     * the rules of refreshing the token.\n     */\n    const cycler = {\n        /**\n         * Produces true if a refresh job is currently in progress.\n         */\n        get isRefreshing() {\n            return refreshWorker !== null;\n        },\n        /**\n         * Produces true if the cycler SHOULD refresh (we are within the refresh\n         * window and not already refreshing)\n         */\n        get shouldRefresh() {\n            var _a;\n            if (cycler.isRefreshing) {\n                return false;\n            }\n            if ((token === null || token === void 0 ? void 0 : token.refreshAfterTimestamp) && token.refreshAfterTimestamp < Date.now()) {\n                return true;\n            }\n            return ((_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : 0) - options.refreshWindowInMs < Date.now();\n        },\n        /**\n         * Produces true if the cycler MUST refresh (null or nearly-expired\n         * token).\n         */\n        get mustRefresh() {\n            return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now());\n        },\n    };\n    /**\n     * Starts a refresh job or returns the existing job if one is already\n     * running.\n     */\n    function refresh(scopes, getTokenOptions) {\n        var _a;\n        if (!cycler.isRefreshing) {\n            // We bind `scopes` here to avoid passing it around a lot\n            const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions);\n            // Take advantage of promise chaining to insert an assignment to `token`\n            // before the refresh can be considered done.\n            refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, \n            // If we don't have a token, then we should timeout immediately\n            (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now())\n                .then((_token) => {\n                refreshWorker = null;\n                token = _token;\n                tenantId = getTokenOptions.tenantId;\n                return token;\n            })\n                .catch((reason) => {\n                // We also should reset the refresher if we enter a failed state.  All\n                // existing awaiters will throw, but subsequent requests will start a\n                // new retry chain.\n                refreshWorker = null;\n                token = null;\n                tenantId = undefined;\n                throw reason;\n            });\n        }\n        return refreshWorker;\n    }\n    return async (scopes, tokenOptions) => {\n        //\n        // Simple rules:\n        // - If we MUST refresh, then return the refresh task, blocking\n        //   the pipeline until a token is available.\n        // - If we SHOULD refresh, then run refresh but don't return it\n        //   (we can still use the cached token).\n        // - Return the token, since it's fine if we didn't return in\n        //   step 1.\n        //\n        const hasClaimChallenge = Boolean(tokenOptions.claims);\n        const tenantIdChanged = tenantId !== tokenOptions.tenantId;\n        if (hasClaimChallenge) {\n            // If we've received a claim, we know the existing token isn't valid\n            // We want to clear it so that that refresh worker won't use the old expiration time as a timeout\n            token = null;\n        }\n        // If the tenantId passed in token options is different to the one we have\n        // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to\n        // refresh the token with the new tenantId or token.\n        const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh;\n        if (mustRefresh) {\n            return refresh(scopes, tokenOptions);\n        }\n        if (cycler.shouldRefresh) {\n            refresh(scopes, tokenOptions);\n        }\n        return token;\n    };\n}\n//# sourceMappingURL=tokenCycler.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createTokenCycler } from \"../util/tokenCycler.js\";\nimport { logger as coreLogger } from \"../log.js\";\n/**\n * The programmatic identifier of the bearerTokenAuthenticationPolicy.\n */\nexport const bearerTokenAuthenticationPolicyName = \"bearerTokenAuthenticationPolicy\";\n/**\n * Default authorize request handler\n */\nasync function defaultAuthorizeRequest(options) {\n    const { scopes, getAccessToken, request } = options;\n    const getTokenOptions = {\n        abortSignal: request.abortSignal,\n        tracingOptions: request.tracingOptions,\n    };\n    const accessToken = await getAccessToken(scopes, getTokenOptions);\n    if (accessToken) {\n        options.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n    }\n}\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction getChallenge(response) {\n    const challenge = response.headers.get(\"WWW-Authenticate\");\n    if (response.status === 401 && challenge) {\n        return challenge;\n    }\n    return;\n}\n/**\n * A policy that can request a token from a TokenCredential implementation and\n * then apply it to the Authorization header of a request as a Bearer token.\n */\nexport function bearerTokenAuthenticationPolicy(options) {\n    var _a;\n    const { credential, scopes, challengeCallbacks } = options;\n    const logger = options.logger || coreLogger;\n    const callbacks = Object.assign({ authorizeRequest: (_a = challengeCallbacks === null || challengeCallbacks === void 0 ? void 0 : challengeCallbacks.authorizeRequest) !== null && _a !== void 0 ? _a : defaultAuthorizeRequest, authorizeRequestOnChallenge: challengeCallbacks === null || challengeCallbacks === void 0 ? void 0 : challengeCallbacks.authorizeRequestOnChallenge }, challengeCallbacks);\n    // This function encapsulates the entire process of reliably retrieving the token\n    // The options are left out of the public API until there's demand to configure this.\n    // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions`\n    // in order to pass through the `options` object.\n    const getAccessToken = credential\n        ? createTokenCycler(credential /* , options */)\n        : () => Promise.resolve(null);\n    return {\n        name: bearerTokenAuthenticationPolicyName,\n        /**\n         * If there's no challenge parameter:\n         * - It will try to retrieve the token using the cache, or the credential's getToken.\n         * - Then it will try the next policy with or without the retrieved token.\n         *\n         * It uses the challenge parameters to:\n         * - Skip a first attempt to get the token from the credential if there's no cached token,\n         *   since it expects the token to be retrievable only after the challenge.\n         * - Prepare the outgoing request if the `prepareRequest` method has been provided.\n         * - Send an initial request to receive the challenge if it fails.\n         * - Process a challenge if the response contains it.\n         * - Retrieve a token with the challenge information, then re-send the request.\n         */\n        async sendRequest(request, next) {\n            if (!request.url.toLowerCase().startsWith(\"https://\")) {\n                throw new Error(\"Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.\");\n            }\n            await callbacks.authorizeRequest({\n                scopes: Array.isArray(scopes) ? scopes : [scopes],\n                request,\n                getAccessToken,\n                logger,\n            });\n            let response;\n            let error;\n            try {\n                response = await next(request);\n            }\n            catch (err) {\n                error = err;\n                response = err.response;\n            }\n            if (callbacks.authorizeRequestOnChallenge &&\n                (response === null || response === void 0 ? void 0 : response.status) === 401 &&\n                getChallenge(response)) {\n                // processes challenge\n                const shouldSendRequest = await callbacks.authorizeRequestOnChallenge({\n                    scopes: Array.isArray(scopes) ? scopes : [scopes],\n                    request,\n                    response,\n                    getAccessToken,\n                    logger,\n                });\n                if (shouldSendRequest) {\n                    return next(request);\n                }\n            }\n            if (error) {\n                throw error;\n            }\n            else {\n                return response;\n            }\n        },\n    };\n}\n//# sourceMappingURL=bearerTokenAuthenticationPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/** @internal */\nexport const knownContextKeys = {\n    span: Symbol.for(\"@azure/core-tracing span\"),\n    namespace: Symbol.for(\"@azure/core-tracing namespace\"),\n};\n/**\n * Creates a new {@link TracingContext} with the given options.\n * @param options - A set of known keys that may be set on the context.\n * @returns A new {@link TracingContext} with the given options.\n *\n * @internal\n */\nexport function createTracingContext(options = {}) {\n    let context = new TracingContextImpl(options.parentContext);\n    if (options.span) {\n        context = context.setValue(knownContextKeys.span, options.span);\n    }\n    if (options.namespace) {\n        context = context.setValue(knownContextKeys.namespace, options.namespace);\n    }\n    return context;\n}\n/** @internal */\nexport class TracingContextImpl {\n    constructor(initialContext) {\n        this._contextMap =\n            initialContext instanceof TracingContextImpl\n                ? new Map(initialContext._contextMap)\n                : new Map();\n    }\n    setValue(key, value) {\n        const newContext = new TracingContextImpl(this);\n        newContext._contextMap.set(key, value);\n        return newContext;\n    }\n    getValue(key) {\n        return this._contextMap.get(key);\n    }\n    deleteValue(key) {\n        const newContext = new TracingContextImpl(this);\n        newContext._contextMap.delete(key);\n        return newContext;\n    }\n}\n//# sourceMappingURL=tracingContext.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Browser-only implementation of the module's state. The browser esm variant will not load the commonjs state, so we do not need to share state between the two.\n */\nexport const state = {\n    instrumenterImplementation: undefined,\n};\n//# sourceMappingURL=state-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createTracingContext } from \"./tracingContext.js\";\nimport { state } from \"./state.js\";\nexport function createDefaultTracingSpan() {\n    return {\n        end: () => {\n            // noop\n        },\n        isRecording: () => false,\n        recordException: () => {\n            // noop\n        },\n        setAttribute: () => {\n            // noop\n        },\n        setStatus: () => {\n            // noop\n        },\n        addEvent: () => {\n            // noop\n        },\n    };\n}\nexport function createDefaultInstrumenter() {\n    return {\n        createRequestHeaders: () => {\n            return {};\n        },\n        parseTraceparentHeader: () => {\n            return undefined;\n        },\n        startSpan: (_name, spanOptions) => {\n            return {\n                span: createDefaultTracingSpan(),\n                tracingContext: createTracingContext({ parentContext: spanOptions.tracingContext }),\n            };\n        },\n        withContext(_context, callback, ...callbackArgs) {\n            return callback(...callbackArgs);\n        },\n    };\n}\n/**\n * Extends the Azure SDK with support for a given instrumenter implementation.\n *\n * @param instrumenter - The instrumenter implementation to use.\n */\nexport function useInstrumenter(instrumenter) {\n    state.instrumenterImplementation = instrumenter;\n}\n/**\n * Gets the currently set instrumenter, a No-Op instrumenter by default.\n *\n * @returns The currently set instrumenter\n */\nexport function getInstrumenter() {\n    if (!state.instrumenterImplementation) {\n        state.instrumenterImplementation = createDefaultInstrumenter();\n    }\n    return state.instrumenterImplementation;\n}\n//# sourceMappingURL=instrumenter.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { getInstrumenter } from \"./instrumenter.js\";\nimport { knownContextKeys } from \"./tracingContext.js\";\n/**\n * Creates a new tracing client.\n *\n * @param options - Options used to configure the tracing client.\n * @returns - An instance of {@link TracingClient}.\n */\nexport function createTracingClient(options) {\n    const { namespace, packageName, packageVersion } = options;\n    function startSpan(name, operationOptions, spanOptions) {\n        var _a;\n        const startSpanResult = getInstrumenter().startSpan(name, Object.assign(Object.assign({}, spanOptions), { packageName: packageName, packageVersion: packageVersion, tracingContext: (_a = operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions) === null || _a === void 0 ? void 0 : _a.tracingContext }));\n        let tracingContext = startSpanResult.tracingContext;\n        const span = startSpanResult.span;\n        if (!tracingContext.getValue(knownContextKeys.namespace)) {\n            tracingContext = tracingContext.setValue(knownContextKeys.namespace, namespace);\n        }\n        span.setAttribute(\"az.namespace\", tracingContext.getValue(knownContextKeys.namespace));\n        const updatedOptions = Object.assign({}, operationOptions, {\n            tracingOptions: Object.assign(Object.assign({}, operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions), { tracingContext }),\n        });\n        return {\n            span,\n            updatedOptions,\n        };\n    }\n    async function withSpan(name, operationOptions, callback, spanOptions) {\n        const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions);\n        try {\n            const result = await withContext(updatedOptions.tracingOptions.tracingContext, () => Promise.resolve(callback(updatedOptions, span)));\n            span.setStatus({ status: \"success\" });\n            return result;\n        }\n        catch (err) {\n            span.setStatus({ status: \"error\", error: err });\n            throw err;\n        }\n        finally {\n            span.end();\n        }\n    }\n    function withContext(context, callback, ...callbackArgs) {\n        return getInstrumenter().withContext(context, callback, ...callbackArgs);\n    }\n    /**\n     * Parses a traceparent header value into a span identifier.\n     *\n     * @param traceparentHeader - The traceparent header to parse.\n     * @returns An implementation-specific identifier for the span.\n     */\n    function parseTraceparentHeader(traceparentHeader) {\n        return getInstrumenter().parseTraceparentHeader(traceparentHeader);\n    }\n    /**\n     * Creates a set of request headers to propagate tracing information to a backend.\n     *\n     * @param tracingContext - The context containing the span to serialize.\n     * @returns The set of headers to add to a request.\n     */\n    function createRequestHeaders(tracingContext) {\n        return getInstrumenter().createRequestHeaders(tracingContext);\n    }\n    return {\n        startSpan,\n        withSpan,\n        withContext,\n        parseTraceparentHeader,\n        createRequestHeaders,\n    };\n}\n//# sourceMappingURL=tracingClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { createAbortablePromise } from \"./createAbortablePromise.js\";\nimport { getRandomIntegerInclusive } from \"./random.js\";\nconst StandardAbortMessage = \"The delay was aborted.\";\n/**\n * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds.\n * @param timeInMs - The number of milliseconds to be delayed.\n * @param options - The options for delay - currently abort options\n * @returns Promise that is resolved after timeInMs\n */\nexport function delay(timeInMs, options) {\n    let token;\n    const { abortSignal, abortErrorMsg } = options !== null && options !== void 0 ? options : {};\n    return createAbortablePromise((resolve) => {\n        token = setTimeout(resolve, timeInMs);\n    }, {\n        cleanupBeforeAbort: () => clearTimeout(token),\n        abortSignal,\n        abortErrorMsg: abortErrorMsg !== null && abortErrorMsg !== void 0 ? abortErrorMsg : StandardAbortMessage,\n    });\n}\n/**\n * Calculates the delay interval for retry attempts using exponential delay with jitter.\n * @param retryAttempt - The current retry attempt number.\n * @param config - The exponential retry configuration.\n * @returns An object containing the calculated retry delay.\n */\nexport function calculateRetryDelay(retryAttempt, config) {\n    // Exponentially increase the delay each time\n    const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt);\n    // Don't let the delay exceed the maximum\n    const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay);\n    // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n    // that retries across multiple clients don't occur simultaneously.\n    const retryAfterInMs = clampedDelay / 2 + getRandomIntegerInclusive(0, clampedDelay / 2);\n    return { retryAfterInMs };\n}\n//# sourceMappingURL=delay.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { AbortError } from \"@azure/abort-controller\";\n/**\n * Creates an abortable promise.\n * @param buildPromise - A function that takes the resolve and reject functions as parameters.\n * @param options - The options for the abortable promise.\n * @returns A promise that can be aborted.\n */\nexport function createAbortablePromise(buildPromise, options) {\n    const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options !== null && options !== void 0 ? options : {};\n    return new Promise((resolve, reject) => {\n        function rejectOnAbort() {\n            reject(new AbortError(abortErrorMsg !== null && abortErrorMsg !== void 0 ? abortErrorMsg : \"The operation was aborted.\"));\n        }\n        function removeListeners() {\n            abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.removeEventListener(\"abort\", onAbort);\n        }\n        function onAbort() {\n            cleanupBeforeAbort === null || cleanupBeforeAbort === void 0 ? void 0 : cleanupBeforeAbort();\n            removeListeners();\n            rejectOnAbort();\n        }\n        if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) {\n            return rejectOnAbort();\n        }\n        try {\n            buildPromise((x) => {\n                removeListeners();\n                resolve(x);\n            }, (x) => {\n                removeListeners();\n                reject(x);\n            });\n        }\n        catch (err) {\n            reject(err);\n        }\n        abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.addEventListener(\"abort\", onAbort);\n    });\n}\n//# sourceMappingURL=createAbortablePromise.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Returns a random integer value between a lower and upper bound,\n * inclusive of both bounds.\n * Note that this uses Math.random and isn't secure. If you need to use\n * this for any kind of security purpose, find a better source of random.\n * @param min - The smallest integer value allowed.\n * @param max - The largest integer value allowed.\n */\nexport function getRandomIntegerInclusive(min, max) {\n    // Make sure inputs are integers.\n    min = Math.ceil(min);\n    max = Math.floor(max);\n    // Pick a random offset from zero to the size of the range.\n    // Since Math.random() can never return 1, we have to make the range one larger\n    // in order to be inclusive of the maximum value after we take the floor.\n    const offset = Math.floor(Math.random() * (max - min + 1));\n    return offset + min;\n}\n//# sourceMappingURL=random.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Helper to determine when an input is a generic JS object.\n * @returns true when input is an object type that is not null, Array, RegExp, or Date.\n */\nexport function isObject(input) {\n    return (typeof input === \"object\" &&\n        input !== null &&\n        !Array.isArray(input) &&\n        !(input instanceof RegExp) &&\n        !(input instanceof Date));\n}\n//# sourceMappingURL=object.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { isObject } from \"./object.js\";\n/**\n * Typeguard for an error object shape (has name and message)\n * @param e - Something caught by a catch clause.\n */\nexport function isError(e) {\n    if (isObject(e)) {\n        const hasName = typeof e.name === \"string\";\n        const hasMessage = typeof e.message === \"string\";\n        return hasName && hasMessage;\n    }\n    return false;\n}\n/**\n * Given what is thought to be an error object, return the message if possible.\n * If the message is missing, returns a stringified version of the input.\n * @param e - Something thrown from a try block\n * @returns The error message or a string of the input\n */\nexport function getErrorMessage(e) {\n    if (isError(e)) {\n        return e.message;\n    }\n    else {\n        let stringified;\n        try {\n            if (typeof e === \"object\" && e) {\n                stringified = JSON.stringify(e);\n            }\n            else {\n                stringified = String(e);\n            }\n        }\n        catch (err) {\n            stringified = \"[unable to stringify input]\";\n        }\n        return `Unknown error ${stringified}`;\n    }\n}\n//# sourceMappingURL=error.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nexport function uint8ArrayToString(bytes, format) {\n    switch (format) {\n        case \"utf-8\":\n            return uint8ArrayToUtf8String(bytes);\n        case \"base64\":\n            return uint8ArrayToBase64(bytes);\n        case \"base64url\":\n            return uint8ArrayToBase64Url(bytes);\n        case \"hex\":\n            return uint8ArrayToHexString(bytes);\n    }\n}\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nexport function stringToUint8Array(value, format) {\n    switch (format) {\n        case \"utf-8\":\n            return utf8StringToUint8Array(value);\n        case \"base64\":\n            return base64ToUint8Array(value);\n        case \"base64url\":\n            return base64UrlToUint8Array(value);\n        case \"hex\":\n            return hexStringToUint8Array(value);\n    }\n}\n/**\n * Decodes a Uint8Array into a Base64 string.\n * @internal\n */\nexport function uint8ArrayToBase64(bytes) {\n    return btoa([...bytes].map((x) => String.fromCharCode(x)).join(\"\"));\n}\n/**\n * Decodes a Uint8Array into a Base64Url string.\n * @internal\n */\nexport function uint8ArrayToBase64Url(bytes) {\n    return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\n/**\n * Decodes a Uint8Array into a javascript string.\n * @internal\n */\nexport function uint8ArrayToUtf8String(bytes) {\n    const decoder = new TextDecoder();\n    const dataString = decoder.decode(bytes);\n    return dataString;\n}\n/**\n * Decodes a Uint8Array into a hex string\n * @internal\n */\nexport function uint8ArrayToHexString(bytes) {\n    return [...bytes].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n}\n/**\n * Encodes a JavaScript string into a Uint8Array.\n * @internal\n */\nexport function utf8StringToUint8Array(value) {\n    return new TextEncoder().encode(value);\n}\n/**\n * Encodes a Base64 string into a Uint8Array.\n * @internal\n */\nexport function base64ToUint8Array(value) {\n    return new Uint8Array([...atob(value)].map((x) => x.charCodeAt(0)));\n}\n/**\n * Encodes a Base64Url string into a Uint8Array.\n * @internal\n */\nexport function base64UrlToUint8Array(value) {\n    const base64String = value.replace(/-/g, \"+\").replace(/_/g, \"/\");\n    return base64ToUint8Array(base64String);\n}\nconst hexDigits = new Set(\"0123456789abcdefABCDEF\");\n/**\n * Encodes a hex string into a Uint8Array\n * @internal\n */\nexport function hexStringToUint8Array(value) {\n    // If value has odd length, the last character will be ignored, consistent with NodeJS Buffer behavior\n    const bytes = new Uint8Array(value.length / 2);\n    for (let i = 0; i < value.length / 2; ++i) {\n        const highNibble = value[2 * i];\n        const lowNibble = value[2 * i + 1];\n        if (!hexDigits.has(highNibble) || !hexDigits.has(lowNibble)) {\n            // Replicate Node Buffer behavior by exiting early when we encounter an invalid byte\n            return bytes.slice(0, i);\n        }\n        bytes[i] = parseInt(`${highNibble}${lowNibble}`, 16);\n    }\n    return bytes;\n}\n//# sourceMappingURL=bytesEncoding.common.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function generateUUID() {\n    let uuid = \"\";\n    for (let i = 0; i < 32; i++) {\n        // Generate a random number between 0 and 15\n        const randomNumber = Math.floor(Math.random() * 16);\n        // Set the UUID version to 4 in the 13th position\n        if (i === 12) {\n            uuid += \"4\";\n        }\n        else if (i === 16) {\n            // Set the UUID variant to \"10\" in the 17th position\n            uuid += (randomNumber & 0x3) | 0x8;\n        }\n        else {\n            // Add a random hexadecimal digit to the UUID string\n            uuid += randomNumber.toString(16);\n        }\n        // Add hyphens to the UUID string at the appropriate positions\n        if (i === 7 || i === 11 || i === 15 || i === 19) {\n            uuid += \"-\";\n        }\n    }\n    return uuid;\n}\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID() {\n    return generateUUID();\n}\n//# sourceMappingURL=uuidUtils.common.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nvar _a;\nimport { generateUUID } from \"./uuidUtils.common.js\";\n// NOTE: This could be undefined if not used in a secure context\nconst uuidFunction = typeof ((_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.crypto) === null || _a === void 0 ? void 0 : _a.randomUUID) === \"function\"\n    ? globalThis.crypto.randomUUID.bind(globalThis.crypto)\n    : generateUUID;\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID() {\n    return uuidFunction();\n}\n//# sourceMappingURL=uuidUtils-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nvar _a, _b, _c, _d;\n/**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\nexport const isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\nexport const isWebWorker = typeof self === \"object\" &&\n    typeof (self === null || self === void 0 ? void 0 : self.importScripts) === \"function\" &&\n    (((_a = self.constructor) === null || _a === void 0 ? void 0 : _a.name) === \"DedicatedWorkerGlobalScope\" ||\n        ((_b = self.constructor) === null || _b === void 0 ? void 0 : _b.name) === \"ServiceWorkerGlobalScope\" ||\n        ((_c = self.constructor) === null || _c === void 0 ? void 0 : _c.name) === \"SharedWorkerGlobalScope\");\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\nexport const isDeno = typeof Deno !== \"undefined\" &&\n    typeof Deno.version !== \"undefined\" &&\n    typeof Deno.version.deno !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\nexport const isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n */\nexport const isNodeLike = typeof globalThis.process !== \"undefined\" &&\n    Boolean(globalThis.process.version) &&\n    Boolean((_d = globalThis.process.versions) === null || _d === void 0 ? void 0 : _d.node);\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n * @deprecated Use `isNodeLike` instead.\n */\nexport const isNode = isNodeLike;\n/**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\nexport const isNodeRuntime = isNodeLike && !isBun && !isDeno;\n/**\n * A constant that indicates whether the environment the code is running is in React-Native.\n */\n// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\nexport const isReactNative = typeof navigator !== \"undefined\" && (navigator === null || navigator === void 0 ? void 0 : navigator.product) === \"ReactNative\";\n//# sourceMappingURL=checkEnvironment.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Default key used to access the XML attributes.\n */\nexport const XML_ATTRKEY = \"$\";\n/**\n * Default key used to access the XML value content.\n */\nexport const XML_CHARKEY = \"_\";\n//# sourceMappingURL=xml.common.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/// <reference lib=\"dom\"/>\nimport { XML_ATTRKEY, XML_CHARKEY } from \"./xml.common.js\";\nif (!document || !DOMParser || !Node || !XMLSerializer) {\n    throw new Error(`This library depends on the following DOM objects: [\"document\", \"DOMParser\", \"Node\", \"XMLSerializer\"] to parse XML, but some of these are undefined. You may provide a polyfill to make these globally available in order to support your environment. For more information, please refer to https://aka.ms/azsdk/js/web-workers. `);\n}\n// Policy to make our code Trusted Types compliant at running time.\n//   https://github.com/w3c/webappsec-trusted-types\n// We are calling DOMParser.parseFromString() to parse XML payload from Azure services.\n// The parsed DOM object is not exposed to outside. Scripts are disabled when parsing\n// according to the spec.  There are no HTML/XSS security concerns on the usage of\n// parseFromString() here.\nlet ttPolicy;\ntry {\n    if (typeof self.trustedTypes !== \"undefined\") {\n        ttPolicy = self.trustedTypes.createPolicy(\"@azure/core-xml#xml.browser\", {\n            createHTML: (s) => s,\n        });\n    }\n}\ncatch (e) {\n    console.warn('Could not create trusted types policy \"@azure/core-xml#xml.browser\"');\n}\nconst doc = document.implementation.createDocument(null, null, null);\nconst parser = new DOMParser();\nexport function parseXML(str, opts = {}) {\n    var _a, _b, _c, _d, _e, _f;\n    try {\n        const updatedOptions = {\n            rootName: (_a = opts.rootName) !== null && _a !== void 0 ? _a : \"\",\n            includeRoot: (_b = opts.includeRoot) !== null && _b !== void 0 ? _b : false,\n            xmlCharKey: (_c = opts.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n            cdataPropName: (_d = opts.cdataPropName) !== null && _d !== void 0 ? _d : \"__cdata\",\n            stopNodes: (_e = opts.stopNodes) !== null && _e !== void 0 ? _e : [],\n        };\n        const dom = parser.parseFromString(((_f = ttPolicy === null || ttPolicy === void 0 ? void 0 : ttPolicy.createHTML(str)) !== null && _f !== void 0 ? _f : str), \"application/xml\");\n        throwIfError(dom);\n        let obj;\n        if (updatedOptions.includeRoot) {\n            obj = domToObject(dom, updatedOptions);\n        }\n        else {\n            obj = domToObject(dom.childNodes[0], updatedOptions);\n        }\n        return Promise.resolve(obj);\n    }\n    catch (err) {\n        return Promise.reject(err);\n    }\n}\nlet errorNS;\nfunction getErrorNamespace() {\n    var _a, _b;\n    if (errorNS === undefined) {\n        try {\n            const invalidXML = ((_a = ttPolicy === null || ttPolicy === void 0 ? void 0 : ttPolicy.createHTML(\"INVALID\")) !== null && _a !== void 0 ? _a : \"INVALID\");\n            errorNS =\n                (_b = parser.parseFromString(invalidXML, \"text/xml\").getElementsByTagName(\"parsererror\")[0]\n                    .namespaceURI) !== null && _b !== void 0 ? _b : \"\";\n        }\n        catch (ignored) {\n            // Most browsers will return a document containing <parsererror>, but IE will throw.\n            errorNS = \"\";\n        }\n    }\n    return errorNS;\n}\nfunction throwIfError(dom) {\n    const parserErrors = dom.getElementsByTagName(\"parsererror\");\n    if (parserErrors.length > 0 && getErrorNamespace()) {\n        for (let i = 0; i < parserErrors.length; i++) {\n            if (parserErrors[i].namespaceURI === errorNS) {\n                throw new Error(parserErrors[i].innerHTML);\n            }\n        }\n    }\n}\nfunction isElement(node) {\n    return !!node.attributes;\n}\n/**\n * Get the Element-typed version of the provided Node if the provided node is an element with\n * attributes. If it isn't, then undefined is returned.\n */\nfunction asElementWithAttributes(node) {\n    return isElement(node) && node.hasAttributes() ? node : undefined;\n}\nfunction domToObject(node, options) {\n    var _a;\n    let result = {};\n    const childNodeCount = node.childNodes.length;\n    const firstChildNode = node.childNodes[0];\n    const onlyChildTextValue = (firstChildNode &&\n        childNodeCount === 1 &&\n        firstChildNode.nodeType === Node.TEXT_NODE &&\n        firstChildNode.nodeValue) ||\n        undefined;\n    const elementWithAttributes = asElementWithAttributes(node);\n    if (elementWithAttributes) {\n        result[XML_ATTRKEY] = {};\n        for (let i = 0; i < elementWithAttributes.attributes.length; i++) {\n            const attr = elementWithAttributes.attributes[i];\n            result[XML_ATTRKEY][attr.nodeName] = attr.nodeValue;\n        }\n        if (onlyChildTextValue) {\n            result[options.xmlCharKey] = onlyChildTextValue;\n        }\n    }\n    else if (childNodeCount === 0) {\n        result = \"\";\n    }\n    else if (onlyChildTextValue) {\n        result = onlyChildTextValue;\n    }\n    if (!onlyChildTextValue) {\n        for (let i = 0; i < childNodeCount; i++) {\n            const child = node.childNodes[i];\n            // Check if CData\n            if ((child === null || child === void 0 ? void 0 : child.nodeType) === Node.CDATA_SECTION_NODE) {\n                // Already in the CDATA\n                result = child.textContent;\n            }\n            else if (((_a = child === null || child === void 0 ? void 0 : child.firstChild) === null || _a === void 0 ? void 0 : _a.nodeType) === Node.CDATA_SECTION_NODE) {\n                // Look if child is CDATA\n                result[child.nodeName] = child.textContent;\n            }\n            else if (child.nodeType !== Node.TEXT_NODE) {\n                // Ignore leading/trailing whitespace nodes\n                const childObject = domToObject(child, options);\n                if (!result[child.nodeName]) {\n                    result[child.nodeName] = childObject;\n                }\n                else if (Array.isArray(result[child.nodeName])) {\n                    result[child.nodeName].push(childObject);\n                }\n                else {\n                    result[child.nodeName] = [result[child.nodeName], childObject];\n                }\n            }\n        }\n    }\n    return result;\n}\nconst serializer = new XMLSerializer();\nexport function stringifyXML(content, opts = {}) {\n    var _a, _b, _c, _d, _e;\n    const updatedOptions = {\n        rootName: (_a = opts.rootName) !== null && _a !== void 0 ? _a : \"root\",\n        includeRoot: (_b = opts.includeRoot) !== null && _b !== void 0 ? _b : false,\n        xmlCharKey: (_c = opts.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n        cdataPropName: (_d = opts.cdataPropName) !== null && _d !== void 0 ? _d : \"__cdata\",\n        stopNodes: (_e = opts.stopNodes) !== null && _e !== void 0 ? _e : [],\n    };\n    const dom = buildNode(content, updatedOptions.rootName, updatedOptions)[0];\n    return ('<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>' +\n        serializer.serializeToString(dom).replace(/ xmlns=\"\"/g, \"\"));\n}\nfunction buildAttributes(attrs) {\n    const result = [];\n    for (const key of Object.keys(attrs)) {\n        const attr = doc.createAttribute(key);\n        attr.value = attrs[key].toString();\n        result.push(attr);\n    }\n    return result;\n}\nfunction buildNode(obj, elementName, options) {\n    var _a;\n    if (obj === undefined ||\n        obj === null ||\n        typeof obj === \"string\" ||\n        typeof obj === \"number\" ||\n        typeof obj === \"boolean\") {\n        const elem = doc.createElement(elementName);\n        elem.textContent = obj === undefined || obj === null ? \"\" : obj.toString();\n        return [elem];\n    }\n    else if (Array.isArray(obj)) {\n        const result = [];\n        for (const arrayElem of obj) {\n            for (const child of buildNode(arrayElem, elementName, options)) {\n                result.push(child);\n            }\n        }\n        return result;\n    }\n    else if (typeof obj === \"object\") {\n        let elem;\n        if ((_a = obj[XML_ATTRKEY]) === null || _a === void 0 ? void 0 : _a[\"xmlns\"]) {\n            elem = doc.createElementNS(obj[XML_ATTRKEY][\"xmlns\"], elementName);\n        }\n        else {\n            elem = doc.createElement(elementName);\n        }\n        for (const key of Object.keys(obj)) {\n            if (key === XML_ATTRKEY) {\n                for (const attr of buildAttributes(obj[key])) {\n                    elem.attributes.setNamedItem(attr);\n                }\n            }\n            else if (key === options.xmlCharKey) {\n                elem.textContent = obj[key].toString();\n            }\n            else if (key === options.cdataPropName) {\n                const cdataElement = doc.createCDATASection(obj[key].toString());\n                elem.appendChild(cdataElement);\n            }\n            else {\n                for (const child of buildNode(obj[key], key, options)) {\n                    elem.appendChild(child);\n                }\n            }\n        }\n        return [elem];\n    }\n    else {\n        throw new Error(`Illegal value passed to buildObject: ${obj}`);\n    }\n}\n//# sourceMappingURL=xml-browser.mjs.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { log } from \"./log.js\";\nconst debugEnvVariable = (typeof process !== \"undefined\" && process.env && process.env.DEBUG) || undefined;\nlet enabledString;\nlet enabledNamespaces = [];\nlet skippedNamespaces = [];\nconst debuggers = [];\nif (debugEnvVariable) {\n    enable(debugEnvVariable);\n}\nconst debugObj = Object.assign((namespace) => {\n    return createDebugger(namespace);\n}, {\n    enable,\n    enabled,\n    disable,\n    log,\n});\nfunction enable(namespaces) {\n    enabledString = namespaces;\n    enabledNamespaces = [];\n    skippedNamespaces = [];\n    const wildcard = /\\*/g;\n    const namespaceList = namespaces.split(\",\").map((ns) => ns.trim().replace(wildcard, \".*?\"));\n    for (const ns of namespaceList) {\n        if (ns.startsWith(\"-\")) {\n            skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`));\n        }\n        else {\n            enabledNamespaces.push(new RegExp(`^${ns}$`));\n        }\n    }\n    for (const instance of debuggers) {\n        instance.enabled = enabled(instance.namespace);\n    }\n}\nfunction enabled(namespace) {\n    if (namespace.endsWith(\"*\")) {\n        return true;\n    }\n    for (const skipped of skippedNamespaces) {\n        if (skipped.test(namespace)) {\n            return false;\n        }\n    }\n    for (const enabledNamespace of enabledNamespaces) {\n        if (enabledNamespace.test(namespace)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction disable() {\n    const result = enabledString || \"\";\n    enable(\"\");\n    return result;\n}\nfunction createDebugger(namespace) {\n    const newDebugger = Object.assign(debug, {\n        enabled: enabled(namespace),\n        destroy,\n        log: debugObj.log,\n        namespace,\n        extend,\n    });\n    function debug(...args) {\n        if (!newDebugger.enabled) {\n            return;\n        }\n        if (args.length > 0) {\n            args[0] = `${namespace} ${args[0]}`;\n        }\n        newDebugger.log(...args);\n    }\n    debuggers.push(newDebugger);\n    return newDebugger;\n}\nfunction destroy() {\n    const index = debuggers.indexOf(this);\n    if (index >= 0) {\n        debuggers.splice(index, 1);\n        return true;\n    }\n    return false;\n}\nfunction extend(namespace) {\n    const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n    newDebugger.log = this.log;\n    return newDebugger;\n}\nexport default debugObj;\n//# sourceMappingURL=debug.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport function log(...args) {\n    if (args.length > 0) {\n        const firstArg = String(args[0]);\n        if (firstArg.includes(\":error\")) {\n            console.error(...args);\n        }\n        else if (firstArg.includes(\":warning\")) {\n            console.warn(...args);\n        }\n        else if (firstArg.includes(\":info\")) {\n            console.info(...args);\n        }\n        else if (firstArg.includes(\":verbose\")) {\n            console.debug(...args);\n        }\n        else {\n            console.debug(...args);\n        }\n    }\n}\n//# sourceMappingURL=log.common.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport debug from \"./debug.js\";\nconst registeredLoggers = new Set();\nconst logLevelFromEnv = (typeof process !== \"undefined\" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;\nlet azureLogLevel;\n/**\n * The AzureLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\nexport const AzureLogger = debug(\"azure\");\nAzureLogger.log = (...args) => {\n    debug.log(...args);\n};\nconst AZURE_LOG_LEVELS = [\"verbose\", \"info\", \"warning\", \"error\"];\nif (logLevelFromEnv) {\n    // avoid calling setLogLevel because we don't want a mis-set environment variable to crash\n    if (isAzureLogLevel(logLevelFromEnv)) {\n        setLogLevel(logLevelFromEnv);\n    }\n    else {\n        console.error(`AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(\", \")}.`);\n    }\n}\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport function setLogLevel(level) {\n    if (level && !isAzureLogLevel(level)) {\n        throw new Error(`Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(\",\")}`);\n    }\n    azureLogLevel = level;\n    const enabledNamespaces = [];\n    for (const logger of registeredLoggers) {\n        if (shouldEnable(logger)) {\n            enabledNamespaces.push(logger.namespace);\n        }\n    }\n    debug.enable(enabledNamespaces.join(\",\"));\n}\n/**\n * Retrieves the currently specified log level.\n */\nexport function getLogLevel() {\n    return azureLogLevel;\n}\nconst levelMap = {\n    verbose: 400,\n    info: 300,\n    warning: 200,\n    error: 100,\n};\n/**\n * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nexport function createClientLogger(namespace) {\n    const clientRootLogger = AzureLogger.extend(namespace);\n    patchLogMethod(AzureLogger, clientRootLogger);\n    return {\n        error: createLogger(clientRootLogger, \"error\"),\n        warning: createLogger(clientRootLogger, \"warning\"),\n        info: createLogger(clientRootLogger, \"info\"),\n        verbose: createLogger(clientRootLogger, \"verbose\"),\n    };\n}\nfunction patchLogMethod(parent, child) {\n    child.log = (...args) => {\n        parent.log(...args);\n    };\n}\nfunction createLogger(parent, level) {\n    const logger = Object.assign(parent.extend(level), {\n        level,\n    });\n    patchLogMethod(parent, logger);\n    if (shouldEnable(logger)) {\n        const enabledNamespaces = debug.disable();\n        debug.enable(enabledNamespaces + \",\" + logger.namespace);\n    }\n    registeredLoggers.add(logger);\n    return logger;\n}\nfunction shouldEnable(logger) {\n    return Boolean(azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]);\n}\nfunction isAzureLogLevel(logLevel) {\n    return AZURE_LOG_LEVELS.includes(logLevel);\n}\n//# sourceMappingURL=index.js.map","/**\r\n * PhotoSwipe Dynamic Caption plugin v1.2.7\r\n * https://github.com/dimsemenov/photoswipe-dynamic-caption-plugin\r\n * \r\n * By https://dimsemenov.com\r\n */\r\n\r\nconst defaultOptions = {\r\n  captionContent: '.pswp-caption-content',\r\n  type: 'auto',\r\n  horizontalEdgeThreshold: 20,\r\n  mobileCaptionOverlapRatio: 0.3,\r\n  mobileLayoutBreakpoint: 600,\r\n  verticallyCenterImage: false\r\n};\r\n\r\nclass PhotoSwipeDynamicCaption {\r\n  constructor(lightbox, options) {\r\n    this.options = {\r\n      ...defaultOptions,\r\n      ...options\r\n    };\r\n\r\n    this.lightbox = lightbox;\r\n\r\n    this.lightbox.on('init', () => {\r\n      this.pswp = this.lightbox.pswp;\r\n      this.initCaption();\r\n    });\r\n  }\r\n\r\n  initCaption() {\r\n    const { pswp } = this;\r\n\r\n    pswp.on('change', () => {\r\n      // make sure caption is displayed after slides are switched\r\n      this.showCaption(this.pswp.currSlide);\r\n    });\r\n\r\n    pswp.on('calcSlideSize', (e) => this.onCalcSlideSize(e));\r\n\r\n    pswp.on('slideDestroy', (e) => {\r\n      if (e.slide.dynamicCaption) {\r\n        if (e.slide.dynamicCaption.element) {\r\n          e.slide.dynamicCaption.element.remove();\r\n        }\r\n        delete e.slide.dynamicCaption;\r\n      }\r\n    });\r\n\r\n    // hide caption if zoomed\r\n    pswp.on('zoomPanUpdate', ({ slide }) => {\r\n      if (pswp.opener.isOpen && slide.dynamicCaption) {\r\n        if (slide.currZoomLevel > slide.zoomLevels.initial) {\r\n          this.hideCaption(slide);\r\n        } else {\r\n          this.showCaption(slide);\r\n        }\r\n  \r\n        // move caption on vertical drag\r\n        if (slide.dynamicCaption.element) {\r\n          let captionYOffset = 0;\r\n          if (slide.currZoomLevel <= slide.zoomLevels.initial) {\r\n            const shiftedAmount = slide.pan.y - slide.bounds.center.y;\r\n            if (Math.abs(shiftedAmount) > 1) {\r\n              captionYOffset = shiftedAmount;\r\n            }\r\n          }\r\n\r\n          this.setCaptionYOffset(slide.dynamicCaption.element, captionYOffset);\r\n        }\r\n\r\n        this.adjustPanArea(slide, slide.currZoomLevel);\r\n      }\r\n    });\r\n\r\n    pswp.on('beforeZoomTo', (e) => {\r\n      this.adjustPanArea(pswp.currSlide, e.destZoomLevel);\r\n    });\r\n\r\n    // Stop default action of tap when tapping on the caption\r\n    pswp.on('tapAction', (e) => {\r\n      if (e.originalEvent.target.closest('.pswp__dynamic-caption')) {\r\n        e.preventDefault();\r\n      }\r\n    });\r\n  }\r\n\r\n  adjustPanArea(slide, zoomLevel) {\r\n    if (slide.dynamicCaption && slide.dynamicCaption.adjustedPanAreaSize) {\r\n      if (zoomLevel > slide.zoomLevels.initial) {\r\n        slide.panAreaSize.x = slide.dynamicCaption.originalPanAreaSize.x;\r\n        slide.panAreaSize.y = slide.dynamicCaption.originalPanAreaSize.y;\r\n      } else {\r\n        // Restore panAreaSize after we zoom back to initial position\r\n        slide.panAreaSize.x = slide.dynamicCaption.adjustedPanAreaSize.x;\r\n        slide.panAreaSize.y = slide.dynamicCaption.adjustedPanAreaSize.y;\r\n      }\r\n    }\r\n  }\r\n\r\n  useMobileLayout() {\r\n    const { mobileLayoutBreakpoint } = this.options;\r\n\r\n    if (typeof mobileLayoutBreakpoint === 'function') {\r\n      return mobileLayoutBreakpoint.call(this);\r\n    } else if (typeof mobileLayoutBreakpoint === 'number') {\r\n      if (window.innerWidth < mobileLayoutBreakpoint) {\r\n        return true;\r\n      }\r\n    }\r\n    \r\n    return false;\r\n  }\r\n\r\n  hideCaption(slide) {\r\n    if (slide.dynamicCaption && !slide.dynamicCaption.hidden) {\r\n      const captionElement = slide.dynamicCaption.element;\r\n\r\n      if (!captionElement) {\r\n        return;\r\n      }\r\n\r\n      slide.dynamicCaption.hidden = true;\r\n      captionElement.classList.add('pswp__dynamic-caption--faded');\r\n\r\n      // Disable caption visibility with the delay, so it's not interactable \r\n      if (slide.captionFadeTimeout) {\r\n        clearTimeout(slide.captionFadeTimeout);\r\n      }\r\n      slide.captionFadeTimeout = setTimeout(() => {\r\n        captionElement.style.visibility = 'hidden';\r\n        delete slide.captionFadeTimeout;\r\n      }, 400);\r\n    }\r\n  }\r\n\r\n  setCaptionYOffset(el, y) {\r\n    el.style.transform = `translateY(${y}px)`;\r\n  }\r\n\r\n  showCaption(slide) {\r\n    if (slide.dynamicCaption && slide.dynamicCaption.hidden) {\r\n      const captionElement = slide.dynamicCaption.element;\r\n\r\n      if (!captionElement) {\r\n        return;\r\n      }\r\n\r\n      slide.dynamicCaption.hidden = false;\r\n      captionElement.style.visibility = 'visible';\r\n      \r\n      clearTimeout(slide.captionFadeTimeout);\r\n      slide.captionFadeTimeout = setTimeout(() => {\r\n        captionElement.classList.remove('pswp__dynamic-caption--faded');\r\n        delete slide.captionFadeTimeout;;\r\n      }, 50);\r\n    }\r\n  }\r\n\r\n  setCaptionPosition(captionEl, x, y) {\r\n    const isOnHorizontalEdge = (x <= this.options.horizontalEdgeThreshold);\r\n    captionEl.classList[\r\n      isOnHorizontalEdge ? 'add' : 'remove'\r\n    ]('pswp__dynamic-caption--on-hor-edge');\r\n\r\n    captionEl.style.left = x + 'px';\r\n    captionEl.style.top = y + 'px';\r\n  }\r\n\r\n  setCaptionWidth(captionEl, width) {\r\n    if (!width) {\r\n      captionEl.style.removeProperty('width');\r\n    } else {\r\n      captionEl.style.width = width + 'px';\r\n    }\r\n  }\r\n\r\n  setCaptionType(captionEl, type) {\r\n    const prevType = captionEl.dataset.pswpCaptionType;\r\n    if (type !== prevType) {\r\n      captionEl.classList.add('pswp__dynamic-caption--' + type);\r\n      captionEl.classList.remove('pswp__dynamic-caption--' + prevType);\r\n      captionEl.dataset.pswpCaptionType = type;\r\n    }\r\n  }\r\n\r\n  updateCaptionPosition(slide) {\r\n    if (!slide.dynamicCaption || !slide.dynamicCaption.type || !slide.dynamicCaption.element) {\r\n      return;\r\n    }\r\n\r\n    if (slide.dynamicCaption.type === 'mobile') {\r\n      this.setCaptionType(\r\n        slide.dynamicCaption.element, \r\n        slide.dynamicCaption.type\r\n      );\r\n      \r\n      slide.dynamicCaption.element.style.removeProperty('left');\r\n      slide.dynamicCaption.element.style.removeProperty('top');\r\n      this.setCaptionWidth(slide.dynamicCaption.element, false);\r\n      return;\r\n    }\r\n\r\n    const zoomLevel = slide.zoomLevels.initial;\r\n    const imageWidth = Math.ceil(slide.width * zoomLevel);\r\n    const imageHeight = Math.ceil(slide.height * zoomLevel);\r\n    \r\n    this.setCaptionType(slide.dynamicCaption.element, slide.dynamicCaption.type);\r\n    if (slide.dynamicCaption.type === 'aside') {\r\n      this.setCaptionPosition(\r\n        slide.dynamicCaption.element,\r\n        slide.bounds.center.x + imageWidth,\r\n        slide.bounds.center.y\r\n      );\r\n      this.setCaptionWidth(slide.dynamicCaption.element, false);\r\n    } else if (slide.dynamicCaption.type === 'below') {\r\n      this.setCaptionPosition(\r\n        slide.dynamicCaption.element,\r\n        slide.bounds.center.x,\r\n        slide.bounds.center.y + imageHeight\r\n      );\r\n      this.setCaptionWidth(slide.dynamicCaption.element, imageWidth);\r\n    }\r\n  }\r\n\r\n  onCalcSlideSize(e) {\r\n    const { slide } = e;\r\n    let captionSize;\r\n    let useMobileVersion;\r\n\r\n    if (!slide.dynamicCaption) {\r\n      slide.dynamicCaption = {\r\n        element: undefined,\r\n        type: false,\r\n        hidden: false\r\n      };\r\n\r\n      const captionHTML = this.getCaptionHTML(slide);\r\n\r\n      if (!captionHTML) {\r\n        return;\r\n      }\r\n\r\n      slide.dynamicCaption.element = document.createElement('div');\r\n      slide.dynamicCaption.element.className = 'pswp__dynamic-caption pswp__hide-on-close';\r\n      slide.dynamicCaption.element.innerHTML = captionHTML;\r\n\r\n      this.pswp.dispatch('dynamicCaptionUpdateHTML', { \r\n        captionElement: slide.dynamicCaption.element,\r\n        slide\r\n      });\r\n\r\n      slide.holderElement.appendChild(slide.dynamicCaption.element);\r\n    }\r\n\r\n    if (!slide.dynamicCaption.element) {\r\n      return;\r\n    }\r\n\r\n    this.storeOriginalPanAreaSize(slide);\r\n\r\n    slide.bounds.update(slide.zoomLevels.initial);\r\n    \r\n    if (this.useMobileLayout()) {\r\n      slide.dynamicCaption.type = 'mobile';\r\n      useMobileVersion = true;\r\n    } else {\r\n      if (this.options.type === 'auto') {\r\n        if (slide.bounds.center.x > slide.bounds.center.y) {\r\n          slide.dynamicCaption.type = 'aside';\r\n        } else {\r\n          slide.dynamicCaption.type = 'below';\r\n        }\r\n      } else {\r\n        slide.dynamicCaption.type = this.options.type;\r\n      }\r\n    } \r\n\r\n    const imageWidth = Math.ceil(slide.width * slide.zoomLevels.initial);\r\n    const imageHeight = Math.ceil(slide.height * slide.zoomLevels.initial);\r\n\r\n    this.setCaptionType(\r\n      slide.dynamicCaption.element, \r\n      slide.dynamicCaption.type\r\n    );\r\n\r\n    if (slide.dynamicCaption.type === 'aside') {\r\n      this.setCaptionWidth(slide.dynamicCaption.element, false);\r\n      captionSize = this.measureCaptionSize(slide.dynamicCaption.element, e.slide);\r\n\r\n      const captionWidth = captionSize.x;      \r\n\r\n      const horizontalEnding = imageWidth + slide.bounds.center.x;\r\n      const horizontalLeftover = (slide.panAreaSize.x - horizontalEnding);\r\n\r\n      if (horizontalLeftover <= captionWidth) {\r\n        slide.panAreaSize.x -= captionWidth;\r\n        this.recalculateZoomLevelAndBounds(slide);\r\n      } else {\r\n        // do nothing, caption will fit aside without any adjustments\r\n      }\r\n    } else if (slide.dynamicCaption.type === 'below' || useMobileVersion) {\r\n      this.setCaptionWidth(\r\n        slide.dynamicCaption.element, \r\n        useMobileVersion ? this.pswp.viewportSize.x : imageWidth\r\n      );\r\n\r\n      captionSize = this.measureCaptionSize(slide.dynamicCaption.element, e.slide);\r\n      const captionHeight = captionSize.y;\r\n\r\n      if (this.options.verticallyCenterImage) {\r\n        slide.panAreaSize.y -= captionHeight;\r\n        this.recalculateZoomLevelAndBounds(slide);\r\n      } else {\r\n        // Lift up the image only by caption height\r\n\r\n        // vertical ending of the image\r\n        const verticalEnding = imageHeight + slide.bounds.center.y;\r\n\r\n        // height between bottom of the screen and ending of the image\r\n        // (before any adjustments applied) \r\n        const verticalLeftover = slide.panAreaSize.y - verticalEnding;\r\n        const initialPanAreaHeight = slide.panAreaSize.y;\r\n\r\n        if (verticalLeftover <= captionHeight) {\r\n          // lift up the image to give more space for caption\r\n          slide.panAreaSize.y -= Math.min((captionHeight - verticalLeftover) * 2, captionHeight);\r\n\r\n          // we reduce viewport size, thus we need to update zoom level and pan bounds\r\n          this.recalculateZoomLevelAndBounds(slide);\r\n\r\n          const maxPositionX = slide.panAreaSize.x * this.options.mobileCaptionOverlapRatio / 2;\r\n\r\n          // Do not reduce viewport height if too few space available\r\n          if (useMobileVersion \r\n              && slide.bounds.center.x > maxPositionX) {\r\n            // Restore the default position\r\n            slide.panAreaSize.y = initialPanAreaHeight;\r\n            this.recalculateZoomLevelAndBounds(slide);\r\n          }\r\n        }\r\n      }\r\n    } else {\r\n      // mobile\r\n    }\r\n\r\n    this.storeAdjustedPanAreaSize(slide);\r\n    this.updateCaptionPosition(slide);\r\n  }\r\n\r\n  measureCaptionSize(captionEl, slide) {\r\n    const rect = captionEl.getBoundingClientRect();\r\n    const event = this.pswp.dispatch('dynamicCaptionMeasureSize', {\r\n      captionEl,\r\n      slide,\r\n      captionSize: {\r\n        x: rect.width,\r\n        y: rect.height\r\n      }\r\n    });\r\n    return event.captionSize;\r\n  }\r\n\r\n  recalculateZoomLevelAndBounds(slide) {\r\n    slide.zoomLevels.update(slide.width, slide.height, slide.panAreaSize);\r\n    slide.bounds.update(slide.zoomLevels.initial);\r\n  }\r\n\r\n  storeAdjustedPanAreaSize(slide) {\r\n    if (slide.dynamicCaption) {\r\n      if (!slide.dynamicCaption.adjustedPanAreaSize) {\r\n        slide.dynamicCaption.adjustedPanAreaSize = {};\r\n      }\r\n      slide.dynamicCaption.adjustedPanAreaSize.x = slide.panAreaSize.x;\r\n      slide.dynamicCaption.adjustedPanAreaSize.y = slide.panAreaSize.y;\r\n    }\r\n  }\r\n\r\n  storeOriginalPanAreaSize(slide) {\r\n    if (slide.dynamicCaption) {\r\n      if (!slide.dynamicCaption.originalPanAreaSize) {\r\n        slide.dynamicCaption.originalPanAreaSize = {};\r\n      }\r\n      slide.dynamicCaption.originalPanAreaSize.x = slide.panAreaSize.x;\r\n      slide.dynamicCaption.originalPanAreaSize.y = slide.panAreaSize.y;\r\n    }\r\n  }\r\n\r\n  getCaptionHTML(slide) {\r\n    if (typeof this.options.captionContent === 'function') {\r\n      return this.options.captionContent.call(this, slide);\r\n    }\r\n\r\n    const currSlideElement = slide.data.element;\r\n    let captionHTML = '';\r\n    if (currSlideElement) {\r\n      const hiddenCaption = currSlideElement.querySelector(this.options.captionContent);\r\n      if (hiddenCaption) {\r\n        // get caption from element with class pswp-caption-content\r\n        captionHTML = hiddenCaption.innerHTML;\r\n      } else {\r\n        const img = currSlideElement.querySelector('img');\r\n        if (img) {\r\n          // get caption from alt attribute\r\n          captionHTML = img.getAttribute('alt');\r\n        }\r\n      }\r\n    }\r\n    return captionHTML;\r\n  }\r\n}\r\n\r\nexport default PhotoSwipeDynamicCaption;\r\n","/*!\n  * PhotoSwipe Lightbox 5.4.4 - https://photoswipe.com\n  * (c) 2024 Dmytro Semenov\n  */\n/** @typedef {import('../photoswipe.js').Point} Point */\n\n/**\r\n * @template {keyof HTMLElementTagNameMap} T\r\n * @param {string} className\r\n * @param {T} tagName\r\n * @param {Node} [appendToEl]\r\n * @returns {HTMLElementTagNameMap[T]}\r\n */\nfunction createElement(className, tagName, appendToEl) {\n  const el = document.createElement(tagName);\n\n  if (className) {\n    el.className = className;\n  }\n\n  if (appendToEl) {\n    appendToEl.appendChild(el);\n  }\n\n  return el;\n}\n/**\r\n * Get transform string\r\n *\r\n * @param {number} x\r\n * @param {number} [y]\r\n * @param {number} [scale]\r\n * @returns {string}\r\n */\n\nfunction toTransformString(x, y, scale) {\n  let propValue = `translate3d(${x}px,${y || 0}px,0)`;\n\n  if (scale !== undefined) {\n    propValue += ` scale3d(${scale},${scale},1)`;\n  }\n\n  return propValue;\n}\n/**\r\n * Apply width and height CSS properties to element\r\n *\r\n * @param {HTMLElement} el\r\n * @param {string | number} w\r\n * @param {string | number} h\r\n */\n\nfunction setWidthHeight(el, w, h) {\n  el.style.width = typeof w === 'number' ? `${w}px` : w;\n  el.style.height = typeof h === 'number' ? `${h}px` : h;\n}\n/** @typedef {LOAD_STATE[keyof LOAD_STATE]} LoadState */\n\n/** @type {{ IDLE: 'idle'; LOADING: 'loading'; LOADED: 'loaded'; ERROR: 'error' }} */\n\nconst LOAD_STATE = {\n  IDLE: 'idle',\n  LOADING: 'loading',\n  LOADED: 'loaded',\n  ERROR: 'error'\n};\n/**\r\n * Check if click or keydown event was dispatched\r\n * with a special key or via mouse wheel.\r\n *\r\n * @param {MouseEvent | KeyboardEvent} e\r\n * @returns {boolean}\r\n */\n\nfunction specialKeyUsed(e) {\n  return 'button' in e && e.button === 1 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey;\n}\n/**\r\n * Parse `gallery` or `children` options.\r\n *\r\n * @param {import('../photoswipe.js').ElementProvider} [option]\r\n * @param {string} [legacySelector]\r\n * @param {HTMLElement | Document} [parent]\r\n * @returns HTMLElement[]\r\n */\n\nfunction getElementsFromOption(option, legacySelector, parent = document) {\n  /** @type {HTMLElement[]} */\n  let elements = [];\n\n  if (option instanceof Element) {\n    elements = [option];\n  } else if (option instanceof NodeList || Array.isArray(option)) {\n    elements = Array.from(option);\n  } else {\n    const selector = typeof option === 'string' ? option : legacySelector;\n\n    if (selector) {\n      elements = Array.from(parent.querySelectorAll(selector));\n    }\n  }\n\n  return elements;\n}\n/**\r\n * Check if variable is PhotoSwipe class\r\n *\r\n * @param {any} fn\r\n * @returns {boolean}\r\n */\n\nfunction isPswpClass(fn) {\n  return typeof fn === 'function' && fn.prototype && fn.prototype.goTo;\n}\n/**\r\n * Check if browser is Safari\r\n *\r\n * @returns {boolean}\r\n */\n\nfunction isSafari() {\n  return !!(navigator.vendor && navigator.vendor.match(/apple/i));\n}\n\n/** @typedef {import('../lightbox/lightbox.js').default} PhotoSwipeLightbox */\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {import('../photoswipe.js').PhotoSwipeOptions} PhotoSwipeOptions */\n\n/** @typedef {import('../photoswipe.js').DataSource} DataSource */\n\n/** @typedef {import('../ui/ui-element.js').UIElementData} UIElementData */\n\n/** @typedef {import('../slide/content.js').default} ContentDefault */\n\n/** @typedef {import('../slide/slide.js').default} Slide */\n\n/** @typedef {import('../slide/slide.js').SlideData} SlideData */\n\n/** @typedef {import('../slide/zoom-level.js').default} ZoomLevel */\n\n/** @typedef {import('../slide/get-thumb-bounds.js').Bounds} Bounds */\n\n/**\r\n * Allow adding an arbitrary props to the Content\r\n * https://photoswipe.com/custom-content/#using-webp-image-format\r\n * @typedef {ContentDefault & Record<string, any>} Content\r\n */\n\n/** @typedef {{ x?: number; y?: number }} Point */\n\n/**\r\n * @typedef {Object} PhotoSwipeEventsMap https://photoswipe.com/events/\r\n *\r\n *\r\n * https://photoswipe.com/adding-ui-elements/\r\n *\r\n * @prop {undefined} uiRegister\r\n * @prop {{ data: UIElementData }} uiElementCreate\r\n *\r\n *\r\n * https://photoswipe.com/events/#initialization-events\r\n *\r\n * @prop {undefined} beforeOpen\r\n * @prop {undefined} firstUpdate\r\n * @prop {undefined} initialLayout\r\n * @prop {undefined} change\r\n * @prop {undefined} afterInit\r\n * @prop {undefined} bindEvents\r\n *\r\n *\r\n * https://photoswipe.com/events/#opening-or-closing-transition-events\r\n *\r\n * @prop {undefined} openingAnimationStart\r\n * @prop {undefined} openingAnimationEnd\r\n * @prop {undefined} closingAnimationStart\r\n * @prop {undefined} closingAnimationEnd\r\n *\r\n *\r\n * https://photoswipe.com/events/#closing-events\r\n *\r\n * @prop {undefined} close\r\n * @prop {undefined} destroy\r\n *\r\n *\r\n * https://photoswipe.com/events/#pointer-and-gesture-events\r\n *\r\n * @prop {{ originalEvent: PointerEvent }} pointerDown\r\n * @prop {{ originalEvent: PointerEvent }} pointerMove\r\n * @prop {{ originalEvent: PointerEvent }} pointerUp\r\n * @prop {{ bgOpacity: number }} pinchClose can be default prevented\r\n * @prop {{ panY: number }} verticalDrag can be default prevented\r\n *\r\n *\r\n * https://photoswipe.com/events/#slide-content-events\r\n *\r\n * @prop {{ content: Content }} contentInit\r\n * @prop {{ content: Content; isLazy: boolean }} contentLoad can be default prevented\r\n * @prop {{ content: Content; isLazy: boolean }} contentLoadImage can be default prevented\r\n * @prop {{ content: Content; slide: Slide; isError?: boolean }} loadComplete\r\n * @prop {{ content: Content; slide: Slide }} loadError\r\n * @prop {{ content: Content; width: number; height: number }} contentResize can be default prevented\r\n * @prop {{ content: Content; width: number; height: number; slide: Slide }} imageSizeChange\r\n * @prop {{ content: Content }} contentLazyLoad can be default prevented\r\n * @prop {{ content: Content }} contentAppend can be default prevented\r\n * @prop {{ content: Content }} contentActivate can be default prevented\r\n * @prop {{ content: Content }} contentDeactivate can be default prevented\r\n * @prop {{ content: Content }} contentRemove can be default prevented\r\n * @prop {{ content: Content }} contentDestroy can be default prevented\r\n *\r\n *\r\n * undocumented\r\n *\r\n * @prop {{ point: Point; originalEvent: PointerEvent }} imageClickAction can be default prevented\r\n * @prop {{ point: Point; originalEvent: PointerEvent }} bgClickAction can be default prevented\r\n * @prop {{ point: Point; originalEvent: PointerEvent }} tapAction can be default prevented\r\n * @prop {{ point: Point; originalEvent: PointerEvent }} doubleTapAction can be default prevented\r\n *\r\n * @prop {{ originalEvent: KeyboardEvent }} keydown can be default prevented\r\n * @prop {{ x: number; dragging: boolean }} moveMainScroll\r\n * @prop {{ slide: Slide }} firstZoomPan\r\n * @prop {{ slide: Slide | undefined, data: SlideData, index: number }} gettingData\r\n * @prop {undefined} beforeResize\r\n * @prop {undefined} resize\r\n * @prop {undefined} viewportSize\r\n * @prop {undefined} updateScrollOffset\r\n * @prop {{ slide: Slide }} slideInit\r\n * @prop {{ slide: Slide }} afterSetContent\r\n * @prop {{ slide: Slide }} slideLoad\r\n * @prop {{ slide: Slide }} appendHeavy can be default prevented\r\n * @prop {{ slide: Slide }} appendHeavyContent\r\n * @prop {{ slide: Slide }} slideActivate\r\n * @prop {{ slide: Slide }} slideDeactivate\r\n * @prop {{ slide: Slide }} slideDestroy\r\n * @prop {{ destZoomLevel: number, centerPoint: Point | undefined, transitionDuration: number | false | undefined }} beforeZoomTo\r\n * @prop {{ slide: Slide }} zoomPanUpdate\r\n * @prop {{ slide: Slide }} initialZoomPan\r\n * @prop {{ slide: Slide }} calcSlideSize\r\n * @prop {undefined} resolutionChanged\r\n * @prop {{ originalEvent: WheelEvent }} wheel can be default prevented\r\n * @prop {{ content: Content }} contentAppendImage can be default prevented\r\n * @prop {{ index: number; itemData: SlideData }} lazyLoadSlide can be default prevented\r\n * @prop {undefined} lazyLoad\r\n * @prop {{ slide: Slide }} calcBounds\r\n * @prop {{ zoomLevels: ZoomLevel, slideData: SlideData }} zoomLevelsUpdate\r\n *\r\n *\r\n * legacy\r\n *\r\n * @prop {undefined} init\r\n * @prop {undefined} initialZoomIn\r\n * @prop {undefined} initialZoomOut\r\n * @prop {undefined} initialZoomInEnd\r\n * @prop {undefined} initialZoomOutEnd\r\n * @prop {{ dataSource: DataSource | undefined, numItems: number }} numItems\r\n * @prop {{ itemData: SlideData; index: number }} itemData\r\n * @prop {{ index: number, itemData: SlideData, instance: PhotoSwipe }} thumbBounds\r\n */\n\n/**\r\n * @typedef {Object} PhotoSwipeFiltersMap https://photoswipe.com/filters/\r\n *\r\n * @prop {(numItems: number, dataSource: DataSource | undefined) => number} numItems\r\n * Modify the total amount of slides. Example on Data sources page.\r\n * https://photoswipe.com/filters/#numitems\r\n *\r\n * @prop {(itemData: SlideData, index: number) => SlideData} itemData\r\n * Modify slide item data. Example on Data sources page.\r\n * https://photoswipe.com/filters/#itemdata\r\n *\r\n * @prop {(itemData: SlideData, element: HTMLElement, linkEl: HTMLAnchorElement) => SlideData} domItemData\r\n * Modify item data when it's parsed from DOM element. Example on Data sources page.\r\n * https://photoswipe.com/filters/#domitemdata\r\n *\r\n * @prop {(clickedIndex: number, e: MouseEvent, instance: PhotoSwipeLightbox) => number} clickedIndex\r\n * Modify clicked gallery item index.\r\n * https://photoswipe.com/filters/#clickedindex\r\n *\r\n * @prop {(placeholderSrc: string | false, content: Content) => string | false} placeholderSrc\r\n * Modify placeholder image source.\r\n * https://photoswipe.com/filters/#placeholdersrc\r\n *\r\n * @prop {(isContentLoading: boolean, content: Content) => boolean} isContentLoading\r\n * Modify if the content is currently loading.\r\n * https://photoswipe.com/filters/#iscontentloading\r\n *\r\n * @prop {(isContentZoomable: boolean, content: Content) => boolean} isContentZoomable\r\n * Modify if the content can be zoomed.\r\n * https://photoswipe.com/filters/#iscontentzoomable\r\n *\r\n * @prop {(useContentPlaceholder: boolean, content: Content) => boolean} useContentPlaceholder\r\n * Modify if the placeholder should be used for the content.\r\n * https://photoswipe.com/filters/#usecontentplaceholder\r\n *\r\n * @prop {(isKeepingPlaceholder: boolean, content: Content) => boolean} isKeepingPlaceholder\r\n * Modify if the placeholder should be kept after the content is loaded.\r\n * https://photoswipe.com/filters/#iskeepingplaceholder\r\n *\r\n *\r\n * @prop {(contentErrorElement: HTMLElement, content: Content) => HTMLElement} contentErrorElement\r\n * Modify an element when the content has error state (for example, if image cannot be loaded).\r\n * https://photoswipe.com/filters/#contenterrorelement\r\n *\r\n * @prop {(element: HTMLElement, data: UIElementData) => HTMLElement} uiElement\r\n * Modify a UI element that's being created.\r\n * https://photoswipe.com/filters/#uielement\r\n *\r\n * @prop {(thumbnail: HTMLElement | null | undefined, itemData: SlideData, index: number) => HTMLElement} thumbEl\r\n * Modify the thumbnail element from which opening zoom animation starts or ends.\r\n * https://photoswipe.com/filters/#thumbel\r\n *\r\n * @prop {(thumbBounds: Bounds | undefined, itemData: SlideData, index: number) => Bounds} thumbBounds\r\n * Modify the thumbnail bounds from which opening zoom animation starts or ends.\r\n * https://photoswipe.com/filters/#thumbbounds\r\n *\r\n * @prop {(srcsetSizesWidth: number, content: Content) => number} srcsetSizesWidth\r\n *\r\n * @prop {(preventPointerEvent: boolean, event: PointerEvent, pointerType: string) => boolean} preventPointerEvent\r\n *\r\n */\n\n/**\r\n * @template {keyof PhotoSwipeFiltersMap} T\r\n * @typedef {{ fn: PhotoSwipeFiltersMap[T], priority: number }} Filter\r\n */\n\n/**\r\n * @template {keyof PhotoSwipeEventsMap} T\r\n * @typedef {PhotoSwipeEventsMap[T] extends undefined ? PhotoSwipeEvent<T> : PhotoSwipeEvent<T> & PhotoSwipeEventsMap[T]} AugmentedEvent\r\n */\n\n/**\r\n * @template {keyof PhotoSwipeEventsMap} T\r\n * @typedef {(event: AugmentedEvent<T>) => void} EventCallback\r\n */\n\n/**\r\n * Base PhotoSwipe event object\r\n *\r\n * @template {keyof PhotoSwipeEventsMap} T\r\n */\nclass PhotoSwipeEvent {\n  /**\r\n   * @param {T} type\r\n   * @param {PhotoSwipeEventsMap[T]} [details]\r\n   */\n  constructor(type, details) {\n    this.type = type;\n    this.defaultPrevented = false;\n\n    if (details) {\n      Object.assign(this, details);\n    }\n  }\n\n  preventDefault() {\n    this.defaultPrevented = true;\n  }\n\n}\n/**\r\n * PhotoSwipe base class that can listen and dispatch for events.\r\n * Shared by PhotoSwipe Core and PhotoSwipe Lightbox, extended by base.js\r\n */\n\n\nclass Eventable {\n  constructor() {\n    /**\r\n     * @type {{ [T in keyof PhotoSwipeEventsMap]?: ((event: AugmentedEvent<T>) => void)[] }}\r\n     */\n    this._listeners = {};\n    /**\r\n     * @type {{ [T in keyof PhotoSwipeFiltersMap]?: Filter<T>[] }}\r\n     */\n\n    this._filters = {};\n    /** @type {PhotoSwipe | undefined} */\n\n    this.pswp = undefined;\n    /** @type {PhotoSwipeOptions | undefined} */\n\n    this.options = undefined;\n  }\n  /**\r\n   * @template {keyof PhotoSwipeFiltersMap} T\r\n   * @param {T} name\r\n   * @param {PhotoSwipeFiltersMap[T]} fn\r\n   * @param {number} priority\r\n   */\n\n\n  addFilter(name, fn, priority = 100) {\n    var _this$_filters$name, _this$_filters$name2, _this$pswp;\n\n    if (!this._filters[name]) {\n      this._filters[name] = [];\n    }\n\n    (_this$_filters$name = this._filters[name]) === null || _this$_filters$name === void 0 || _this$_filters$name.push({\n      fn,\n      priority\n    });\n    (_this$_filters$name2 = this._filters[name]) === null || _this$_filters$name2 === void 0 || _this$_filters$name2.sort((f1, f2) => f1.priority - f2.priority);\n    (_this$pswp = this.pswp) === null || _this$pswp === void 0 || _this$pswp.addFilter(name, fn, priority);\n  }\n  /**\r\n   * @template {keyof PhotoSwipeFiltersMap} T\r\n   * @param {T} name\r\n   * @param {PhotoSwipeFiltersMap[T]} fn\r\n   */\n\n\n  removeFilter(name, fn) {\n    if (this._filters[name]) {\n      // @ts-expect-error\n      this._filters[name] = this._filters[name].filter(filter => filter.fn !== fn);\n    }\n\n    if (this.pswp) {\n      this.pswp.removeFilter(name, fn);\n    }\n  }\n  /**\r\n   * @template {keyof PhotoSwipeFiltersMap} T\r\n   * @param {T} name\r\n   * @param {Parameters<PhotoSwipeFiltersMap[T]>} args\r\n   * @returns {Parameters<PhotoSwipeFiltersMap[T]>[0]}\r\n   */\n\n\n  applyFilters(name, ...args) {\n    var _this$_filters$name3;\n\n    (_this$_filters$name3 = this._filters[name]) === null || _this$_filters$name3 === void 0 || _this$_filters$name3.forEach(filter => {\n      // @ts-expect-error\n      args[0] = filter.fn.apply(this, args);\n    });\n    return args[0];\n  }\n  /**\r\n   * @template {keyof PhotoSwipeEventsMap} T\r\n   * @param {T} name\r\n   * @param {EventCallback<T>} fn\r\n   */\n\n\n  on(name, fn) {\n    var _this$_listeners$name, _this$pswp2;\n\n    if (!this._listeners[name]) {\n      this._listeners[name] = [];\n    }\n\n    (_this$_listeners$name = this._listeners[name]) === null || _this$_listeners$name === void 0 || _this$_listeners$name.push(fn); // When binding events to lightbox,\n    // also bind events to PhotoSwipe Core,\n    // if it's open.\n\n    (_this$pswp2 = this.pswp) === null || _this$pswp2 === void 0 || _this$pswp2.on(name, fn);\n  }\n  /**\r\n   * @template {keyof PhotoSwipeEventsMap} T\r\n   * @param {T} name\r\n   * @param {EventCallback<T>} fn\r\n   */\n\n\n  off(name, fn) {\n    var _this$pswp3;\n\n    if (this._listeners[name]) {\n      // @ts-expect-error\n      this._listeners[name] = this._listeners[name].filter(listener => fn !== listener);\n    }\n\n    (_this$pswp3 = this.pswp) === null || _this$pswp3 === void 0 || _this$pswp3.off(name, fn);\n  }\n  /**\r\n   * @template {keyof PhotoSwipeEventsMap} T\r\n   * @param {T} name\r\n   * @param {PhotoSwipeEventsMap[T]} [details]\r\n   * @returns {AugmentedEvent<T>}\r\n   */\n\n\n  dispatch(name, details) {\n    var _this$_listeners$name2;\n\n    if (this.pswp) {\n      return this.pswp.dispatch(name, details);\n    }\n\n    const event =\n    /** @type {AugmentedEvent<T>} */\n    new PhotoSwipeEvent(name, details);\n    (_this$_listeners$name2 = this._listeners[name]) === null || _this$_listeners$name2 === void 0 || _this$_listeners$name2.forEach(listener => {\n      listener.call(this, event);\n    });\n    return event;\n  }\n\n}\n\nclass Placeholder {\n  /**\r\n   * @param {string | false} imageSrc\r\n   * @param {HTMLElement} container\r\n   */\n  constructor(imageSrc, container) {\n    // Create placeholder\n    // (stretched thumbnail or simple div behind the main image)\n\n    /** @type {HTMLImageElement | HTMLDivElement | null} */\n    this.element = createElement('pswp__img pswp__img--placeholder', imageSrc ? 'img' : 'div', container);\n\n    if (imageSrc) {\n      const imgEl =\n      /** @type {HTMLImageElement} */\n      this.element;\n      imgEl.decoding = 'async';\n      imgEl.alt = '';\n      imgEl.src = imageSrc;\n      imgEl.setAttribute('role', 'presentation');\n    }\n\n    this.element.setAttribute('aria-hidden', 'true');\n  }\n  /**\r\n   * @param {number} width\r\n   * @param {number} height\r\n   */\n\n\n  setDisplayedSize(width, height) {\n    if (!this.element) {\n      return;\n    }\n\n    if (this.element.tagName === 'IMG') {\n      // Use transform scale() to modify img placeholder size\n      // (instead of changing width/height directly).\n      // This helps with performance, specifically in iOS15 Safari.\n      setWidthHeight(this.element, 250, 'auto');\n      this.element.style.transformOrigin = '0 0';\n      this.element.style.transform = toTransformString(0, 0, width / 250);\n    } else {\n      setWidthHeight(this.element, width, height);\n    }\n  }\n\n  destroy() {\n    var _this$element;\n\n    if ((_this$element = this.element) !== null && _this$element !== void 0 && _this$element.parentNode) {\n      this.element.remove();\n    }\n\n    this.element = null;\n  }\n\n}\n\n/** @typedef {import('./slide.js').default} Slide */\n\n/** @typedef {import('./slide.js').SlideData} SlideData */\n\n/** @typedef {import('../core/base.js').default} PhotoSwipeBase */\n\n/** @typedef {import('../util/util.js').LoadState} LoadState */\n\nclass Content {\n  /**\r\n   * @param {SlideData} itemData Slide data\r\n   * @param {PhotoSwipeBase} instance PhotoSwipe or PhotoSwipeLightbox instance\r\n   * @param {number} index\r\n   */\n  constructor(itemData, instance, index) {\n    this.instance = instance;\n    this.data = itemData;\n    this.index = index;\n    /** @type {HTMLImageElement | HTMLDivElement | undefined} */\n\n    this.element = undefined;\n    /** @type {Placeholder | undefined} */\n\n    this.placeholder = undefined;\n    /** @type {Slide | undefined} */\n\n    this.slide = undefined;\n    this.displayedImageWidth = 0;\n    this.displayedImageHeight = 0;\n    this.width = Number(this.data.w) || Number(this.data.width) || 0;\n    this.height = Number(this.data.h) || Number(this.data.height) || 0;\n    this.isAttached = false;\n    this.hasSlide = false;\n    this.isDecoding = false;\n    /** @type {LoadState} */\n\n    this.state = LOAD_STATE.IDLE;\n\n    if (this.data.type) {\n      this.type = this.data.type;\n    } else if (this.data.src) {\n      this.type = 'image';\n    } else {\n      this.type = 'html';\n    }\n\n    this.instance.dispatch('contentInit', {\n      content: this\n    });\n  }\n\n  removePlaceholder() {\n    if (this.placeholder && !this.keepPlaceholder()) {\n      // With delay, as image might be loaded, but not rendered\n      setTimeout(() => {\n        if (this.placeholder) {\n          this.placeholder.destroy();\n          this.placeholder = undefined;\n        }\n      }, 1000);\n    }\n  }\n  /**\r\n   * Preload content\r\n   *\r\n   * @param {boolean} isLazy\r\n   * @param {boolean} [reload]\r\n   */\n\n\n  load(isLazy, reload) {\n    if (this.slide && this.usePlaceholder()) {\n      if (!this.placeholder) {\n        const placeholderSrc = this.instance.applyFilters('placeholderSrc', // use  image-based placeholder only for the first slide,\n        // as rendering (even small stretched thumbnail) is an expensive operation\n        this.data.msrc && this.slide.isFirstSlide ? this.data.msrc : false, this);\n        this.placeholder = new Placeholder(placeholderSrc, this.slide.container);\n      } else {\n        const placeholderEl = this.placeholder.element; // Add placeholder to DOM if it was already created\n\n        if (placeholderEl && !placeholderEl.parentElement) {\n          this.slide.container.prepend(placeholderEl);\n        }\n      }\n    }\n\n    if (this.element && !reload) {\n      return;\n    }\n\n    if (this.instance.dispatch('contentLoad', {\n      content: this,\n      isLazy\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (this.isImageContent()) {\n      this.element = createElement('pswp__img', 'img'); // Start loading only after width is defined, as sizes might depend on it.\n      // Due to Safari feature, we must define sizes before srcset.\n\n      if (this.displayedImageWidth) {\n        this.loadImage(isLazy);\n      }\n    } else {\n      this.element = createElement('pswp__content', 'div');\n      this.element.innerHTML = this.data.html || '';\n    }\n\n    if (reload && this.slide) {\n      this.slide.updateContentSize(true);\n    }\n  }\n  /**\r\n   * Preload image\r\n   *\r\n   * @param {boolean} isLazy\r\n   */\n\n\n  loadImage(isLazy) {\n    var _this$data$src, _this$data$alt;\n\n    if (!this.isImageContent() || !this.element || this.instance.dispatch('contentLoadImage', {\n      content: this,\n      isLazy\n    }).defaultPrevented) {\n      return;\n    }\n\n    const imageElement =\n    /** @type HTMLImageElement */\n    this.element;\n    this.updateSrcsetSizes();\n\n    if (this.data.srcset) {\n      imageElement.srcset = this.data.srcset;\n    }\n\n    imageElement.src = (_this$data$src = this.data.src) !== null && _this$data$src !== void 0 ? _this$data$src : '';\n    imageElement.alt = (_this$data$alt = this.data.alt) !== null && _this$data$alt !== void 0 ? _this$data$alt : '';\n    this.state = LOAD_STATE.LOADING;\n\n    if (imageElement.complete) {\n      this.onLoaded();\n    } else {\n      imageElement.onload = () => {\n        this.onLoaded();\n      };\n\n      imageElement.onerror = () => {\n        this.onError();\n      };\n    }\n  }\n  /**\r\n   * Assign slide to content\r\n   *\r\n   * @param {Slide} slide\r\n   */\n\n\n  setSlide(slide) {\n    this.slide = slide;\n    this.hasSlide = true;\n    this.instance = slide.pswp; // todo: do we need to unset slide?\n  }\n  /**\r\n   * Content load success handler\r\n   */\n\n\n  onLoaded() {\n    this.state = LOAD_STATE.LOADED;\n\n    if (this.slide && this.element) {\n      this.instance.dispatch('loadComplete', {\n        slide: this.slide,\n        content: this\n      }); // if content is reloaded\n\n      if (this.slide.isActive && this.slide.heavyAppended && !this.element.parentNode) {\n        this.append();\n        this.slide.updateContentSize(true);\n      }\n\n      if (this.state === LOAD_STATE.LOADED || this.state === LOAD_STATE.ERROR) {\n        this.removePlaceholder();\n      }\n    }\n  }\n  /**\r\n   * Content load error handler\r\n   */\n\n\n  onError() {\n    this.state = LOAD_STATE.ERROR;\n\n    if (this.slide) {\n      this.displayError();\n      this.instance.dispatch('loadComplete', {\n        slide: this.slide,\n        isError: true,\n        content: this\n      });\n      this.instance.dispatch('loadError', {\n        slide: this.slide,\n        content: this\n      });\n    }\n  }\n  /**\r\n   * @returns {Boolean} If the content is currently loading\r\n   */\n\n\n  isLoading() {\n    return this.instance.applyFilters('isContentLoading', this.state === LOAD_STATE.LOADING, this);\n  }\n  /**\r\n   * @returns {Boolean} If the content is in error state\r\n   */\n\n\n  isError() {\n    return this.state === LOAD_STATE.ERROR;\n  }\n  /**\r\n   * @returns {boolean} If the content is image\r\n   */\n\n\n  isImageContent() {\n    return this.type === 'image';\n  }\n  /**\r\n   * Update content size\r\n   *\r\n   * @param {Number} width\r\n   * @param {Number} height\r\n   */\n\n\n  setDisplayedSize(width, height) {\n    if (!this.element) {\n      return;\n    }\n\n    if (this.placeholder) {\n      this.placeholder.setDisplayedSize(width, height);\n    }\n\n    if (this.instance.dispatch('contentResize', {\n      content: this,\n      width,\n      height\n    }).defaultPrevented) {\n      return;\n    }\n\n    setWidthHeight(this.element, width, height);\n\n    if (this.isImageContent() && !this.isError()) {\n      const isInitialSizeUpdate = !this.displayedImageWidth && width;\n      this.displayedImageWidth = width;\n      this.displayedImageHeight = height;\n\n      if (isInitialSizeUpdate) {\n        this.loadImage(false);\n      } else {\n        this.updateSrcsetSizes();\n      }\n\n      if (this.slide) {\n        this.instance.dispatch('imageSizeChange', {\n          slide: this.slide,\n          width,\n          height,\n          content: this\n        });\n      }\n    }\n  }\n  /**\r\n   * @returns {boolean} If the content can be zoomed\r\n   */\n\n\n  isZoomable() {\n    return this.instance.applyFilters('isContentZoomable', this.isImageContent() && this.state !== LOAD_STATE.ERROR, this);\n  }\n  /**\r\n   * Update image srcset sizes attribute based on width and height\r\n   */\n\n\n  updateSrcsetSizes() {\n    // Handle srcset sizes attribute.\n    //\n    // Never lower quality, if it was increased previously.\n    // Chrome does this automatically, Firefox and Safari do not,\n    // so we store largest used size in dataset.\n    if (!this.isImageContent() || !this.element || !this.data.srcset) {\n      return;\n    }\n\n    const image =\n    /** @type HTMLImageElement */\n    this.element;\n    const sizesWidth = this.instance.applyFilters('srcsetSizesWidth', this.displayedImageWidth, this);\n\n    if (!image.dataset.largestUsedSize || sizesWidth > parseInt(image.dataset.largestUsedSize, 10)) {\n      image.sizes = sizesWidth + 'px';\n      image.dataset.largestUsedSize = String(sizesWidth);\n    }\n  }\n  /**\r\n   * @returns {boolean} If content should use a placeholder (from msrc by default)\r\n   */\n\n\n  usePlaceholder() {\n    return this.instance.applyFilters('useContentPlaceholder', this.isImageContent(), this);\n  }\n  /**\r\n   * Preload content with lazy-loading param\r\n   */\n\n\n  lazyLoad() {\n    if (this.instance.dispatch('contentLazyLoad', {\n      content: this\n    }).defaultPrevented) {\n      return;\n    }\n\n    this.load(true);\n  }\n  /**\r\n   * @returns {boolean} If placeholder should be kept after content is loaded\r\n   */\n\n\n  keepPlaceholder() {\n    return this.instance.applyFilters('isKeepingPlaceholder', this.isLoading(), this);\n  }\n  /**\r\n   * Destroy the content\r\n   */\n\n\n  destroy() {\n    this.hasSlide = false;\n    this.slide = undefined;\n\n    if (this.instance.dispatch('contentDestroy', {\n      content: this\n    }).defaultPrevented) {\n      return;\n    }\n\n    this.remove();\n\n    if (this.placeholder) {\n      this.placeholder.destroy();\n      this.placeholder = undefined;\n    }\n\n    if (this.isImageContent() && this.element) {\n      this.element.onload = null;\n      this.element.onerror = null;\n      this.element = undefined;\n    }\n  }\n  /**\r\n   * Display error message\r\n   */\n\n\n  displayError() {\n    if (this.slide) {\n      var _this$instance$option, _this$instance$option2;\n\n      let errorMsgEl = createElement('pswp__error-msg', 'div');\n      errorMsgEl.innerText = (_this$instance$option = (_this$instance$option2 = this.instance.options) === null || _this$instance$option2 === void 0 ? void 0 : _this$instance$option2.errorMsg) !== null && _this$instance$option !== void 0 ? _this$instance$option : '';\n      errorMsgEl =\n      /** @type {HTMLDivElement} */\n      this.instance.applyFilters('contentErrorElement', errorMsgEl, this);\n      this.element = createElement('pswp__content pswp__error-msg-container', 'div');\n      this.element.appendChild(errorMsgEl);\n      this.slide.container.innerText = '';\n      this.slide.container.appendChild(this.element);\n      this.slide.updateContentSize(true);\n      this.removePlaceholder();\n    }\n  }\n  /**\r\n   * Append the content\r\n   */\n\n\n  append() {\n    if (this.isAttached || !this.element) {\n      return;\n    }\n\n    this.isAttached = true;\n\n    if (this.state === LOAD_STATE.ERROR) {\n      this.displayError();\n      return;\n    }\n\n    if (this.instance.dispatch('contentAppend', {\n      content: this\n    }).defaultPrevented) {\n      return;\n    }\n\n    const supportsDecode = ('decode' in this.element);\n\n    if (this.isImageContent()) {\n      // Use decode() on nearby slides\n      //\n      // Nearby slide images are in DOM and not hidden via display:none.\n      // However, they are placed offscreen (to the left and right side).\n      //\n      // Some browsers do not composite the image until it's actually visible,\n      // using decode() helps.\n      //\n      // You might ask \"why dont you just decode() and then append all images\",\n      // that's because I want to show image before it's fully loaded,\n      // as browser can render parts of image while it is loading.\n      // We do not do this in Safari due to partial loading bug.\n      if (supportsDecode && this.slide && (!this.slide.isActive || isSafari())) {\n        this.isDecoding = true; // purposefully using finally instead of then,\n        // as if srcset sizes changes dynamically - it may cause decode error\n\n        /** @type {HTMLImageElement} */\n\n        this.element.decode().catch(() => {}).finally(() => {\n          this.isDecoding = false;\n          this.appendImage();\n        });\n      } else {\n        this.appendImage();\n      }\n    } else if (this.slide && !this.element.parentNode) {\n      this.slide.container.appendChild(this.element);\n    }\n  }\n  /**\r\n   * Activate the slide,\r\n   * active slide is generally the current one,\r\n   * meaning the user can see it.\r\n   */\n\n\n  activate() {\n    if (this.instance.dispatch('contentActivate', {\n      content: this\n    }).defaultPrevented || !this.slide) {\n      return;\n    }\n\n    if (this.isImageContent() && this.isDecoding && !isSafari()) {\n      // add image to slide when it becomes active,\n      // even if it's not finished decoding\n      this.appendImage();\n    } else if (this.isError()) {\n      this.load(false, true); // try to reload\n    }\n\n    if (this.slide.holderElement) {\n      this.slide.holderElement.setAttribute('aria-hidden', 'false');\n    }\n  }\n  /**\r\n   * Deactivate the content\r\n   */\n\n\n  deactivate() {\n    this.instance.dispatch('contentDeactivate', {\n      content: this\n    });\n\n    if (this.slide && this.slide.holderElement) {\n      this.slide.holderElement.setAttribute('aria-hidden', 'true');\n    }\n  }\n  /**\r\n   * Remove the content from DOM\r\n   */\n\n\n  remove() {\n    this.isAttached = false;\n\n    if (this.instance.dispatch('contentRemove', {\n      content: this\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (this.element && this.element.parentNode) {\n      this.element.remove();\n    }\n\n    if (this.placeholder && this.placeholder.element) {\n      this.placeholder.element.remove();\n    }\n  }\n  /**\r\n   * Append the image content to slide container\r\n   */\n\n\n  appendImage() {\n    if (!this.isAttached) {\n      return;\n    }\n\n    if (this.instance.dispatch('contentAppendImage', {\n      content: this\n    }).defaultPrevented) {\n      return;\n    } // ensure that element exists and is not already appended\n\n\n    if (this.slide && this.element && !this.element.parentNode) {\n      this.slide.container.appendChild(this.element);\n    }\n\n    if (this.state === LOAD_STATE.LOADED || this.state === LOAD_STATE.ERROR) {\n      this.removePlaceholder();\n    }\n  }\n\n}\n\n/** @typedef {import('../photoswipe.js').PhotoSwipeOptions} PhotoSwipeOptions */\n\n/** @typedef {import('../core/base.js').default} PhotoSwipeBase */\n\n/** @typedef {import('../photoswipe.js').Point} Point */\n\n/** @typedef {import('../slide/slide.js').SlideData} SlideData */\n\n/**\r\n * @param {PhotoSwipeOptions} options\r\n * @param {PhotoSwipeBase} pswp\r\n * @returns {Point}\r\n */\nfunction getViewportSize(options, pswp) {\n  if (options.getViewportSizeFn) {\n    const newViewportSize = options.getViewportSizeFn(options, pswp);\n\n    if (newViewportSize) {\n      return newViewportSize;\n    }\n  }\n\n  return {\n    x: document.documentElement.clientWidth,\n    // TODO: height on mobile is very incosistent due to toolbar\n    // find a way to improve this\n    //\n    // document.documentElement.clientHeight - doesn't seem to work well\n    y: window.innerHeight\n  };\n}\n/**\r\n * Parses padding option.\r\n * Supported formats:\r\n *\r\n * // Object\r\n * padding: {\r\n *  top: 0,\r\n *  bottom: 0,\r\n *  left: 0,\r\n *  right: 0\r\n * }\r\n *\r\n * // A function that returns the object\r\n * paddingFn: (viewportSize, itemData, index) => {\r\n *  return {\r\n *    top: 0,\r\n *    bottom: 0,\r\n *    left: 0,\r\n *    right: 0\r\n *  };\r\n * }\r\n *\r\n * // Legacy variant\r\n * paddingLeft: 0,\r\n * paddingRight: 0,\r\n * paddingTop: 0,\r\n * paddingBottom: 0,\r\n *\r\n * @param {'left' | 'top' | 'bottom' | 'right'} prop\r\n * @param {PhotoSwipeOptions} options PhotoSwipe options\r\n * @param {Point} viewportSize PhotoSwipe viewport size, for example: { x:800, y:600 }\r\n * @param {SlideData} itemData Data about the slide\r\n * @param {number} index Slide index\r\n * @returns {number}\r\n */\n\nfunction parsePaddingOption(prop, options, viewportSize, itemData, index) {\n  let paddingValue = 0;\n\n  if (options.paddingFn) {\n    paddingValue = options.paddingFn(viewportSize, itemData, index)[prop];\n  } else if (options.padding) {\n    paddingValue = options.padding[prop];\n  } else {\n    const legacyPropName = 'padding' + prop[0].toUpperCase() + prop.slice(1); // @ts-expect-error\n\n    if (options[legacyPropName]) {\n      // @ts-expect-error\n      paddingValue = options[legacyPropName];\n    }\n  }\n\n  return Number(paddingValue) || 0;\n}\n/**\r\n * @param {PhotoSwipeOptions} options\r\n * @param {Point} viewportSize\r\n * @param {SlideData} itemData\r\n * @param {number} index\r\n * @returns {Point}\r\n */\n\nfunction getPanAreaSize(options, viewportSize, itemData, index) {\n  return {\n    x: viewportSize.x - parsePaddingOption('left', options, viewportSize, itemData, index) - parsePaddingOption('right', options, viewportSize, itemData, index),\n    y: viewportSize.y - parsePaddingOption('top', options, viewportSize, itemData, index) - parsePaddingOption('bottom', options, viewportSize, itemData, index)\n  };\n}\n\nconst MAX_IMAGE_WIDTH = 4000;\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {import('../photoswipe.js').PhotoSwipeOptions} PhotoSwipeOptions */\n\n/** @typedef {import('../photoswipe.js').Point} Point */\n\n/** @typedef {import('../slide/slide.js').SlideData} SlideData */\n\n/** @typedef {'fit' | 'fill' | number | ((zoomLevelObject: ZoomLevel) => number)} ZoomLevelOption */\n\n/**\r\n * Calculates zoom levels for specific slide.\r\n * Depends on viewport size and image size.\r\n */\n\nclass ZoomLevel {\n  /**\r\n   * @param {PhotoSwipeOptions} options PhotoSwipe options\r\n   * @param {SlideData} itemData Slide data\r\n   * @param {number} index Slide index\r\n   * @param {PhotoSwipe} [pswp] PhotoSwipe instance, can be undefined if not initialized yet\r\n   */\n  constructor(options, itemData, index, pswp) {\n    this.pswp = pswp;\n    this.options = options;\n    this.itemData = itemData;\n    this.index = index;\n    /** @type { Point | null } */\n\n    this.panAreaSize = null;\n    /** @type { Point | null } */\n\n    this.elementSize = null;\n    this.fit = 1;\n    this.fill = 1;\n    this.vFill = 1;\n    this.initial = 1;\n    this.secondary = 1;\n    this.max = 1;\n    this.min = 1;\n  }\n  /**\r\n   * Calculate initial, secondary and maximum zoom level for the specified slide.\r\n   *\r\n   * It should be called when either image or viewport size changes.\r\n   *\r\n   * @param {number} maxWidth\r\n   * @param {number} maxHeight\r\n   * @param {Point} panAreaSize\r\n   */\n\n\n  update(maxWidth, maxHeight, panAreaSize) {\n    /** @type {Point} */\n    const elementSize = {\n      x: maxWidth,\n      y: maxHeight\n    };\n    this.elementSize = elementSize;\n    this.panAreaSize = panAreaSize;\n    const hRatio = panAreaSize.x / elementSize.x;\n    const vRatio = panAreaSize.y / elementSize.y;\n    this.fit = Math.min(1, hRatio < vRatio ? hRatio : vRatio);\n    this.fill = Math.min(1, hRatio > vRatio ? hRatio : vRatio); // zoom.vFill defines zoom level of the image\n    // when it has 100% of viewport vertical space (height)\n\n    this.vFill = Math.min(1, vRatio);\n    this.initial = this._getInitial();\n    this.secondary = this._getSecondary();\n    this.max = Math.max(this.initial, this.secondary, this._getMax());\n    this.min = Math.min(this.fit, this.initial, this.secondary);\n\n    if (this.pswp) {\n      this.pswp.dispatch('zoomLevelsUpdate', {\n        zoomLevels: this,\n        slideData: this.itemData\n      });\n    }\n  }\n  /**\r\n   * Parses user-defined zoom option.\r\n   *\r\n   * @private\r\n   * @param {'initial' | 'secondary' | 'max'} optionPrefix Zoom level option prefix (initial, secondary, max)\r\n   * @returns { number | undefined }\r\n   */\n\n\n  _parseZoomLevelOption(optionPrefix) {\n    const optionName =\n    /** @type {'initialZoomLevel' | 'secondaryZoomLevel' | 'maxZoomLevel'} */\n    optionPrefix + 'ZoomLevel';\n    const optionValue = this.options[optionName];\n\n    if (!optionValue) {\n      return;\n    }\n\n    if (typeof optionValue === 'function') {\n      return optionValue(this);\n    }\n\n    if (optionValue === 'fill') {\n      return this.fill;\n    }\n\n    if (optionValue === 'fit') {\n      return this.fit;\n    }\n\n    return Number(optionValue);\n  }\n  /**\r\n   * Get zoom level to which image will be zoomed after double-tap gesture,\r\n   * or when user clicks on zoom icon,\r\n   * or mouse-click on image itself.\r\n   * If you return 1 image will be zoomed to its original size.\r\n   *\r\n   * @private\r\n   * @return {number}\r\n   */\n\n\n  _getSecondary() {\n    let currZoomLevel = this._parseZoomLevelOption('secondary');\n\n    if (currZoomLevel) {\n      return currZoomLevel;\n    } // 3x of \"fit\" state, but not larger than original\n\n\n    currZoomLevel = Math.min(1, this.fit * 3);\n\n    if (this.elementSize && currZoomLevel * this.elementSize.x > MAX_IMAGE_WIDTH) {\n      currZoomLevel = MAX_IMAGE_WIDTH / this.elementSize.x;\n    }\n\n    return currZoomLevel;\n  }\n  /**\r\n   * Get initial image zoom level.\r\n   *\r\n   * @private\r\n   * @return {number}\r\n   */\n\n\n  _getInitial() {\n    return this._parseZoomLevelOption('initial') || this.fit;\n  }\n  /**\r\n   * Maximum zoom level when user zooms\r\n   * via zoom/pinch gesture,\r\n   * via cmd/ctrl-wheel or via trackpad.\r\n   *\r\n   * @private\r\n   * @return {number}\r\n   */\n\n\n  _getMax() {\n    // max zoom level is x4 from \"fit state\",\n    // used for zoom gesture and ctrl/trackpad zoom\n    return this._parseZoomLevelOption('max') || Math.max(1, this.fit * 4);\n  }\n\n}\n\n/**\r\n * Lazy-load an image\r\n * This function is used both by Lightbox and PhotoSwipe core,\r\n * thus it can be called before dialog is opened.\r\n *\r\n * @param {SlideData} itemData Data about the slide\r\n * @param {PhotoSwipeBase} instance PhotoSwipe or PhotoSwipeLightbox instance\r\n * @param {number} index\r\n * @returns {Content} Image that is being decoded or false.\r\n */\n\nfunction lazyLoadData(itemData, instance, index) {\n  const content = instance.createContentFromData(itemData, index);\n  /** @type {ZoomLevel | undefined} */\n\n  let zoomLevel;\n  const {\n    options\n  } = instance; // We need to know dimensions of the image to preload it,\n  // as it might use srcset, and we need to define sizes\n\n  if (options) {\n    zoomLevel = new ZoomLevel(options, itemData, -1);\n    let viewportSize;\n\n    if (instance.pswp) {\n      viewportSize = instance.pswp.viewportSize;\n    } else {\n      viewportSize = getViewportSize(options, instance);\n    }\n\n    const panAreaSize = getPanAreaSize(options, viewportSize, itemData, index);\n    zoomLevel.update(content.width, content.height, panAreaSize);\n  }\n\n  content.lazyLoad();\n\n  if (zoomLevel) {\n    content.setDisplayedSize(Math.ceil(content.width * zoomLevel.initial), Math.ceil(content.height * zoomLevel.initial));\n  }\n\n  return content;\n}\n/**\r\n * Lazy-loads specific slide.\r\n * This function is used both by Lightbox and PhotoSwipe core,\r\n * thus it can be called before dialog is opened.\r\n *\r\n * By default, it loads image based on viewport size and initial zoom level.\r\n *\r\n * @param {number} index Slide index\r\n * @param {PhotoSwipeBase} instance PhotoSwipe or PhotoSwipeLightbox eventable instance\r\n * @returns {Content | undefined}\r\n */\n\nfunction lazyLoadSlide(index, instance) {\n  const itemData = instance.getItemData(index);\n\n  if (instance.dispatch('lazyLoadSlide', {\n    index,\n    itemData\n  }).defaultPrevented) {\n    return;\n  }\n\n  return lazyLoadData(itemData, instance, index);\n}\n\n/** @typedef {import(\"../photoswipe.js\").default} PhotoSwipe */\n\n/** @typedef {import(\"../slide/slide.js\").SlideData} SlideData */\n\n/**\r\n * PhotoSwipe base class that can retrieve data about every slide.\r\n * Shared by PhotoSwipe Core and PhotoSwipe Lightbox\r\n */\n\nclass PhotoSwipeBase extends Eventable {\n  /**\r\n   * Get total number of slides\r\n   *\r\n   * @returns {number}\r\n   */\n  getNumItems() {\n    var _this$options;\n\n    let numItems = 0;\n    const dataSource = (_this$options = this.options) === null || _this$options === void 0 ? void 0 : _this$options.dataSource;\n\n    if (dataSource && 'length' in dataSource) {\n      // may be an array or just object with length property\n      numItems = dataSource.length;\n    } else if (dataSource && 'gallery' in dataSource) {\n      // query DOM elements\n      if (!dataSource.items) {\n        dataSource.items = this._getGalleryDOMElements(dataSource.gallery);\n      }\n\n      if (dataSource.items) {\n        numItems = dataSource.items.length;\n      }\n    } // legacy event, before filters were introduced\n\n\n    const event = this.dispatch('numItems', {\n      dataSource,\n      numItems\n    });\n    return this.applyFilters('numItems', event.numItems, dataSource);\n  }\n  /**\r\n   * @param {SlideData} slideData\r\n   * @param {number} index\r\n   * @returns {Content}\r\n   */\n\n\n  createContentFromData(slideData, index) {\n    return new Content(slideData, this, index);\n  }\n  /**\r\n   * Get item data by index.\r\n   *\r\n   * \"item data\" should contain normalized information that PhotoSwipe needs to generate a slide.\r\n   * For example, it may contain properties like\r\n   * `src`, `srcset`, `w`, `h`, which will be used to generate a slide with image.\r\n   *\r\n   * @param {number} index\r\n   * @returns {SlideData}\r\n   */\n\n\n  getItemData(index) {\n    var _this$options2;\n\n    const dataSource = (_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.dataSource;\n    /** @type {SlideData | HTMLElement} */\n\n    let dataSourceItem = {};\n\n    if (Array.isArray(dataSource)) {\n      // Datasource is an array of elements\n      dataSourceItem = dataSource[index];\n    } else if (dataSource && 'gallery' in dataSource) {\n      // dataSource has gallery property,\n      // thus it was created by Lightbox, based on\n      // gallery and children options\n      // query DOM elements\n      if (!dataSource.items) {\n        dataSource.items = this._getGalleryDOMElements(dataSource.gallery);\n      }\n\n      dataSourceItem = dataSource.items[index];\n    }\n\n    let itemData = dataSourceItem;\n\n    if (itemData instanceof Element) {\n      itemData = this._domElementToItemData(itemData);\n    } // Dispatching the itemData event,\n    // it's a legacy verion before filters were introduced\n\n\n    const event = this.dispatch('itemData', {\n      itemData: itemData || {},\n      index\n    });\n    return this.applyFilters('itemData', event.itemData, index);\n  }\n  /**\r\n   * Get array of gallery DOM elements,\r\n   * based on childSelector and gallery element.\r\n   *\r\n   * @param {HTMLElement} galleryElement\r\n   * @returns {HTMLElement[]}\r\n   */\n\n\n  _getGalleryDOMElements(galleryElement) {\n    var _this$options3, _this$options4;\n\n    if ((_this$options3 = this.options) !== null && _this$options3 !== void 0 && _this$options3.children || (_this$options4 = this.options) !== null && _this$options4 !== void 0 && _this$options4.childSelector) {\n      return getElementsFromOption(this.options.children, this.options.childSelector, galleryElement) || [];\n    }\n\n    return [galleryElement];\n  }\n  /**\r\n   * Converts DOM element to item data object.\r\n   *\r\n   * @param {HTMLElement} element DOM element\r\n   * @returns {SlideData}\r\n   */\n\n\n  _domElementToItemData(element) {\n    /** @type {SlideData} */\n    const itemData = {\n      element\n    };\n    const linkEl =\n    /** @type {HTMLAnchorElement} */\n    element.tagName === 'A' ? element : element.querySelector('a');\n\n    if (linkEl) {\n      // src comes from data-pswp-src attribute,\n      // if it's empty link href is used\n      itemData.src = linkEl.dataset.pswpSrc || linkEl.href;\n\n      if (linkEl.dataset.pswpSrcset) {\n        itemData.srcset = linkEl.dataset.pswpSrcset;\n      }\n\n      itemData.width = linkEl.dataset.pswpWidth ? parseInt(linkEl.dataset.pswpWidth, 10) : 0;\n      itemData.height = linkEl.dataset.pswpHeight ? parseInt(linkEl.dataset.pswpHeight, 10) : 0; // support legacy w & h properties\n\n      itemData.w = itemData.width;\n      itemData.h = itemData.height;\n\n      if (linkEl.dataset.pswpType) {\n        itemData.type = linkEl.dataset.pswpType;\n      }\n\n      const thumbnailEl = element.querySelector('img');\n\n      if (thumbnailEl) {\n        var _thumbnailEl$getAttri;\n\n        // msrc is URL to placeholder image that's displayed before large image is loaded\n        // by default it's displayed only for the first slide\n        itemData.msrc = thumbnailEl.currentSrc || thumbnailEl.src;\n        itemData.alt = (_thumbnailEl$getAttri = thumbnailEl.getAttribute('alt')) !== null && _thumbnailEl$getAttri !== void 0 ? _thumbnailEl$getAttri : '';\n      }\n\n      if (linkEl.dataset.pswpCropped || linkEl.dataset.cropped) {\n        itemData.thumbCropped = true;\n      }\n    }\n\n    return this.applyFilters('domItemData', itemData, element, linkEl);\n  }\n  /**\r\n   * Lazy-load by slide data\r\n   *\r\n   * @param {SlideData} itemData Data about the slide\r\n   * @param {number} index\r\n   * @returns {Content} Image that is being decoded or false.\r\n   */\n\n\n  lazyLoadData(itemData, index) {\n    return lazyLoadData(itemData, this, index);\n  }\n\n}\n\n/**\r\n * @template T\r\n * @typedef {import('../types.js').Type<T>} Type<T>\r\n */\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {import('../photoswipe.js').PhotoSwipeOptions} PhotoSwipeOptions */\n\n/** @typedef {import('../photoswipe.js').DataSource} DataSource */\n\n/** @typedef {import('../photoswipe.js').Point} Point */\n\n/** @typedef {import('../slide/content.js').default} Content */\n\n/** @typedef {import('../core/eventable.js').PhotoSwipeEventsMap} PhotoSwipeEventsMap */\n\n/** @typedef {import('../core/eventable.js').PhotoSwipeFiltersMap} PhotoSwipeFiltersMap */\n\n/**\r\n * @template {keyof PhotoSwipeEventsMap} T\r\n * @typedef {import('../core/eventable.js').EventCallback<T>} EventCallback<T>\r\n */\n\n/**\r\n * PhotoSwipe Lightbox\r\n *\r\n * - If user has unsupported browser it falls back to default browser action (just opens URL)\r\n * - Binds click event to links that should open PhotoSwipe\r\n * - parses DOM strcture for PhotoSwipe (retrieves large image URLs and sizes)\r\n * - Initializes PhotoSwipe\r\n *\r\n *\r\n * Loader options use the same object as PhotoSwipe, and supports such options:\r\n *\r\n * gallery - Element | Element[] | NodeList | string selector for the gallery element\r\n * children - Element | Element[] | NodeList | string selector for the gallery children\r\n *\r\n */\n\nclass PhotoSwipeLightbox extends PhotoSwipeBase {\n  /**\r\n   * @param {PhotoSwipeOptions} [options]\r\n   */\n  constructor(options) {\n    super();\n    /** @type {PhotoSwipeOptions} */\n\n    this.options = options || {};\n    this._uid = 0;\n    this.shouldOpen = false;\n    /**\r\n     * @private\r\n     * @type {Content | undefined}\r\n     */\n\n    this._preloadedContent = undefined;\n    this.onThumbnailsClick = this.onThumbnailsClick.bind(this);\n  }\n  /**\r\n   * Initialize lightbox, should be called only once.\r\n   * It's not included in the main constructor, so you may bind events before it.\r\n   */\n\n\n  init() {\n    // Bind click events to each gallery\n    getElementsFromOption(this.options.gallery, this.options.gallerySelector).forEach(galleryElement => {\n      galleryElement.addEventListener('click', this.onThumbnailsClick, false);\n    });\n  }\n  /**\r\n   * @param {MouseEvent} e\r\n   */\n\n\n  onThumbnailsClick(e) {\n    // Exit and allow default browser action if:\n    if (specialKeyUsed(e) // ... if clicked with a special key (ctrl/cmd...)\n    || window.pswp) {\n      // ... if PhotoSwipe is already open\n      return;\n    } // If both clientX and clientY are 0 or not defined,\n    // the event is likely triggered by keyboard,\n    // so we do not pass the initialPoint\n    //\n    // Note that some screen readers emulate the mouse position,\n    // so it's not the ideal way to detect them.\n    //\n\n    /** @type {Point | null} */\n\n\n    let initialPoint = {\n      x: e.clientX,\n      y: e.clientY\n    };\n\n    if (!initialPoint.x && !initialPoint.y) {\n      initialPoint = null;\n    }\n\n    let clickedIndex = this.getClickedIndex(e);\n    clickedIndex = this.applyFilters('clickedIndex', clickedIndex, e, this);\n    /** @type {DataSource} */\n\n    const dataSource = {\n      gallery:\n      /** @type {HTMLElement} */\n      e.currentTarget\n    };\n\n    if (clickedIndex >= 0) {\n      e.preventDefault();\n      this.loadAndOpen(clickedIndex, dataSource, initialPoint);\n    }\n  }\n  /**\r\n   * Get index of gallery item that was clicked.\r\n   *\r\n   * @param {MouseEvent} e click event\r\n   * @returns {number}\r\n   */\n\n\n  getClickedIndex(e) {\n    // legacy option\n    if (this.options.getClickedIndexFn) {\n      return this.options.getClickedIndexFn.call(this, e);\n    }\n\n    const clickedTarget =\n    /** @type {HTMLElement} */\n    e.target;\n    const childElements = getElementsFromOption(this.options.children, this.options.childSelector,\n    /** @type {HTMLElement} */\n    e.currentTarget);\n    const clickedChildIndex = childElements.findIndex(child => child === clickedTarget || child.contains(clickedTarget));\n\n    if (clickedChildIndex !== -1) {\n      return clickedChildIndex;\n    } else if (this.options.children || this.options.childSelector) {\n      // click wasn't on a child element\n      return -1;\n    } // There is only one item (which is the gallery)\n\n\n    return 0;\n  }\n  /**\r\n   * Load and open PhotoSwipe\r\n   *\r\n   * @param {number} index\r\n   * @param {DataSource} [dataSource]\r\n   * @param {Point | null} [initialPoint]\r\n   * @returns {boolean}\r\n   */\n\n\n  loadAndOpen(index, dataSource, initialPoint) {\n    // Check if the gallery is already open\n    if (window.pswp || !this.options) {\n      return false;\n    } // Use the first gallery element if dataSource is not provided\n\n\n    if (!dataSource && this.options.gallery && this.options.children) {\n      const galleryElements = getElementsFromOption(this.options.gallery);\n\n      if (galleryElements[0]) {\n        dataSource = {\n          gallery: galleryElements[0]\n        };\n      }\n    } // set initial index\n\n\n    this.options.index = index; // define options for PhotoSwipe constructor\n\n    this.options.initialPointerPos = initialPoint;\n    this.shouldOpen = true;\n    this.preload(index, dataSource);\n    return true;\n  }\n  /**\r\n   * Load the main module and the slide content by index\r\n   *\r\n   * @param {number} index\r\n   * @param {DataSource} [dataSource]\r\n   */\n\n\n  preload(index, dataSource) {\n    const {\n      options\n    } = this;\n\n    if (dataSource) {\n      options.dataSource = dataSource;\n    } // Add the main module\n\n    /** @type {Promise<Type<PhotoSwipe>>[]} */\n\n\n    const promiseArray = [];\n    const pswpModuleType = typeof options.pswpModule;\n\n    if (isPswpClass(options.pswpModule)) {\n      promiseArray.push(Promise.resolve(\n      /** @type {Type<PhotoSwipe>} */\n      options.pswpModule));\n    } else if (pswpModuleType === 'string') {\n      throw new Error('pswpModule as string is no longer supported');\n    } else if (pswpModuleType === 'function') {\n      promiseArray.push(\n      /** @type {() => Promise<Type<PhotoSwipe>>} */\n      options.pswpModule());\n    } else {\n      throw new Error('pswpModule is not valid');\n    } // Add custom-defined promise, if any\n\n\n    if (typeof options.openPromise === 'function') {\n      // allow developers to perform some task before opening\n      promiseArray.push(options.openPromise());\n    }\n\n    if (options.preloadFirstSlide !== false && index >= 0) {\n      this._preloadedContent = lazyLoadSlide(index, this);\n    } // Wait till all promises resolve and open PhotoSwipe\n\n\n    const uid = ++this._uid;\n    Promise.all(promiseArray).then(iterableModules => {\n      if (this.shouldOpen) {\n        const mainModule = iterableModules[0];\n\n        this._openPhotoswipe(mainModule, uid);\n      }\n    });\n  }\n  /**\r\n   * @private\r\n   * @param {Type<PhotoSwipe> | { default: Type<PhotoSwipe> }} module\r\n   * @param {number} uid\r\n   */\n\n\n  _openPhotoswipe(module, uid) {\n    // Cancel opening if UID doesn't match the current one\n    // (if user clicked on another gallery item before current was loaded).\n    //\n    // Or if shouldOpen flag is set to false\n    // (developer may modify it via public API)\n    if (uid !== this._uid && this.shouldOpen) {\n      return;\n    }\n\n    this.shouldOpen = false; // PhotoSwipe is already open\n\n    if (window.pswp) {\n      return;\n    }\n    /**\r\n     * Pass data to PhotoSwipe and open init\r\n     *\r\n     * @type {PhotoSwipe}\r\n     */\n\n\n    const pswp = typeof module === 'object' ? new module.default(this.options) // eslint-disable-line\n    : new module(this.options); // eslint-disable-line\n\n    this.pswp = pswp;\n    window.pswp = pswp; // map listeners from Lightbox to PhotoSwipe Core\n\n    /** @type {(keyof PhotoSwipeEventsMap)[]} */\n\n    Object.keys(this._listeners).forEach(name => {\n      var _this$_listeners$name;\n\n      (_this$_listeners$name = this._listeners[name]) === null || _this$_listeners$name === void 0 || _this$_listeners$name.forEach(fn => {\n        pswp.on(name,\n        /** @type {EventCallback<typeof name>} */\n        fn);\n      });\n    }); // same with filters\n\n    /** @type {(keyof PhotoSwipeFiltersMap)[]} */\n\n    Object.keys(this._filters).forEach(name => {\n      var _this$_filters$name;\n\n      (_this$_filters$name = this._filters[name]) === null || _this$_filters$name === void 0 || _this$_filters$name.forEach(filter => {\n        pswp.addFilter(name, filter.fn, filter.priority);\n      });\n    });\n\n    if (this._preloadedContent) {\n      pswp.contentLoader.addToCache(this._preloadedContent);\n      this._preloadedContent = undefined;\n    }\n\n    pswp.on('destroy', () => {\n      // clean up public variables\n      this.pswp = undefined;\n      delete window.pswp;\n    });\n    pswp.init();\n  }\n  /**\r\n   * Unbinds all events, closes PhotoSwipe if it's open.\r\n   */\n\n\n  destroy() {\n    var _this$pswp;\n\n    (_this$pswp = this.pswp) === null || _this$pswp === void 0 || _this$pswp.destroy();\n    this.shouldOpen = false;\n    this._listeners = {};\n    getElementsFromOption(this.options.gallery, this.options.gallerySelector).forEach(galleryElement => {\n      galleryElement.removeEventListener('click', this.onThumbnailsClick, false);\n    });\n  }\n\n}\n\nexport { PhotoSwipeLightbox as default };\n//# sourceMappingURL=photoswipe-lightbox.esm.js.map\n","/*!\n  * PhotoSwipe 5.4.4 - https://photoswipe.com\n  * (c) 2024 Dmytro Semenov\n  */\n/** @typedef {import('../photoswipe.js').Point} Point */\n\n/**\r\n * @template {keyof HTMLElementTagNameMap} T\r\n * @param {string} className\r\n * @param {T} tagName\r\n * @param {Node} [appendToEl]\r\n * @returns {HTMLElementTagNameMap[T]}\r\n */\nfunction createElement(className, tagName, appendToEl) {\n  const el = document.createElement(tagName);\n\n  if (className) {\n    el.className = className;\n  }\n\n  if (appendToEl) {\n    appendToEl.appendChild(el);\n  }\n\n  return el;\n}\n/**\r\n * @param {Point} p1\r\n * @param {Point} p2\r\n * @returns {Point}\r\n */\n\nfunction equalizePoints(p1, p2) {\n  p1.x = p2.x;\n  p1.y = p2.y;\n\n  if (p2.id !== undefined) {\n    p1.id = p2.id;\n  }\n\n  return p1;\n}\n/**\r\n * @param {Point} p\r\n */\n\nfunction roundPoint(p) {\n  p.x = Math.round(p.x);\n  p.y = Math.round(p.y);\n}\n/**\r\n * Returns distance between two points.\r\n *\r\n * @param {Point} p1\r\n * @param {Point} p2\r\n * @returns {number}\r\n */\n\nfunction getDistanceBetween(p1, p2) {\n  const x = Math.abs(p1.x - p2.x);\n  const y = Math.abs(p1.y - p2.y);\n  return Math.sqrt(x * x + y * y);\n}\n/**\r\n * Whether X and Y positions of points are equal\r\n *\r\n * @param {Point} p1\r\n * @param {Point} p2\r\n * @returns {boolean}\r\n */\n\nfunction pointsEqual(p1, p2) {\n  return p1.x === p2.x && p1.y === p2.y;\n}\n/**\r\n * The float result between the min and max values.\r\n *\r\n * @param {number} val\r\n * @param {number} min\r\n * @param {number} max\r\n * @returns {number}\r\n */\n\nfunction clamp(val, min, max) {\n  return Math.min(Math.max(val, min), max);\n}\n/**\r\n * Get transform string\r\n *\r\n * @param {number} x\r\n * @param {number} [y]\r\n * @param {number} [scale]\r\n * @returns {string}\r\n */\n\nfunction toTransformString(x, y, scale) {\n  let propValue = `translate3d(${x}px,${y || 0}px,0)`;\n\n  if (scale !== undefined) {\n    propValue += ` scale3d(${scale},${scale},1)`;\n  }\n\n  return propValue;\n}\n/**\r\n * Apply transform:translate(x, y) scale(scale) to element\r\n *\r\n * @param {HTMLElement} el\r\n * @param {number} x\r\n * @param {number} [y]\r\n * @param {number} [scale]\r\n */\n\nfunction setTransform(el, x, y, scale) {\n  el.style.transform = toTransformString(x, y, scale);\n}\nconst defaultCSSEasing = 'cubic-bezier(.4,0,.22,1)';\n/**\r\n * Apply CSS transition to element\r\n *\r\n * @param {HTMLElement} el\r\n * @param {string} [prop] CSS property to animate\r\n * @param {number} [duration] in ms\r\n * @param {string} [ease] CSS easing function\r\n */\n\nfunction setTransitionStyle(el, prop, duration, ease) {\n  // inOut: 'cubic-bezier(.4, 0, .22, 1)', // for \"toggle state\" transitions\n  // out: 'cubic-bezier(0, 0, .22, 1)', // for \"show\" transitions\n  // in: 'cubic-bezier(.4, 0, 1, 1)'// for \"hide\" transitions\n  el.style.transition = prop ? `${prop} ${duration}ms ${ease || defaultCSSEasing}` : 'none';\n}\n/**\r\n * Apply width and height CSS properties to element\r\n *\r\n * @param {HTMLElement} el\r\n * @param {string | number} w\r\n * @param {string | number} h\r\n */\n\nfunction setWidthHeight(el, w, h) {\n  el.style.width = typeof w === 'number' ? `${w}px` : w;\n  el.style.height = typeof h === 'number' ? `${h}px` : h;\n}\n/**\r\n * @param {HTMLElement} el\r\n */\n\nfunction removeTransitionStyle(el) {\n  setTransitionStyle(el);\n}\n/**\r\n * @param {HTMLImageElement} img\r\n * @returns {Promise<HTMLImageElement | void>}\r\n */\n\nfunction decodeImage(img) {\n  if ('decode' in img) {\n    return img.decode().catch(() => {});\n  }\n\n  if (img.complete) {\n    return Promise.resolve(img);\n  }\n\n  return new Promise((resolve, reject) => {\n    img.onload = () => resolve(img);\n\n    img.onerror = reject;\n  });\n}\n/** @typedef {LOAD_STATE[keyof LOAD_STATE]} LoadState */\n\n/** @type {{ IDLE: 'idle'; LOADING: 'loading'; LOADED: 'loaded'; ERROR: 'error' }} */\n\nconst LOAD_STATE = {\n  IDLE: 'idle',\n  LOADING: 'loading',\n  LOADED: 'loaded',\n  ERROR: 'error'\n};\n/**\r\n * Check if click or keydown event was dispatched\r\n * with a special key or via mouse wheel.\r\n *\r\n * @param {MouseEvent | KeyboardEvent} e\r\n * @returns {boolean}\r\n */\n\nfunction specialKeyUsed(e) {\n  return 'button' in e && e.button === 1 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey;\n}\n/**\r\n * Parse `gallery` or `children` options.\r\n *\r\n * @param {import('../photoswipe.js').ElementProvider} [option]\r\n * @param {string} [legacySelector]\r\n * @param {HTMLElement | Document} [parent]\r\n * @returns HTMLElement[]\r\n */\n\nfunction getElementsFromOption(option, legacySelector, parent = document) {\n  /** @type {HTMLElement[]} */\n  let elements = [];\n\n  if (option instanceof Element) {\n    elements = [option];\n  } else if (option instanceof NodeList || Array.isArray(option)) {\n    elements = Array.from(option);\n  } else {\n    const selector = typeof option === 'string' ? option : legacySelector;\n\n    if (selector) {\n      elements = Array.from(parent.querySelectorAll(selector));\n    }\n  }\n\n  return elements;\n}\n/**\r\n * Check if browser is Safari\r\n *\r\n * @returns {boolean}\r\n */\n\nfunction isSafari() {\n  return !!(navigator.vendor && navigator.vendor.match(/apple/i));\n}\n\n// Detect passive event listener support\nlet supportsPassive = false;\n/* eslint-disable */\n\ntry {\n  /* @ts-ignore */\n  window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n    get: () => {\n      supportsPassive = true;\n    }\n  }));\n} catch (e) {}\n/* eslint-enable */\n\n/**\r\n * @typedef {Object} PoolItem\r\n * @prop {HTMLElement | Window | Document | undefined | null} target\r\n * @prop {string} type\r\n * @prop {EventListenerOrEventListenerObject} listener\r\n * @prop {boolean} [passive]\r\n */\n\n\nclass DOMEvents {\n  constructor() {\n    /**\r\n     * @type {PoolItem[]}\r\n     * @private\r\n     */\n    this._pool = [];\n  }\n  /**\r\n   * Adds event listeners\r\n   *\r\n   * @param {PoolItem['target']} target\r\n   * @param {PoolItem['type']} type Can be multiple, separated by space.\r\n   * @param {PoolItem['listener']} listener\r\n   * @param {PoolItem['passive']} [passive]\r\n   */\n\n\n  add(target, type, listener, passive) {\n    this._toggleListener(target, type, listener, passive);\n  }\n  /**\r\n   * Removes event listeners\r\n   *\r\n   * @param {PoolItem['target']} target\r\n   * @param {PoolItem['type']} type\r\n   * @param {PoolItem['listener']} listener\r\n   * @param {PoolItem['passive']} [passive]\r\n   */\n\n\n  remove(target, type, listener, passive) {\n    this._toggleListener(target, type, listener, passive, true);\n  }\n  /**\r\n   * Removes all bound events\r\n   */\n\n\n  removeAll() {\n    this._pool.forEach(poolItem => {\n      this._toggleListener(poolItem.target, poolItem.type, poolItem.listener, poolItem.passive, true, true);\n    });\n\n    this._pool = [];\n  }\n  /**\r\n   * Adds or removes event\r\n   *\r\n   * @private\r\n   * @param {PoolItem['target']} target\r\n   * @param {PoolItem['type']} type\r\n   * @param {PoolItem['listener']} listener\r\n   * @param {PoolItem['passive']} [passive]\r\n   * @param {boolean} [unbind] Whether the event should be added or removed\r\n   * @param {boolean} [skipPool] Whether events pool should be skipped\r\n   */\n\n\n  _toggleListener(target, type, listener, passive, unbind, skipPool) {\n    if (!target) {\n      return;\n    }\n\n    const methodName = unbind ? 'removeEventListener' : 'addEventListener';\n    const types = type.split(' ');\n    types.forEach(eType => {\n      if (eType) {\n        // Events pool is used to easily unbind all events when PhotoSwipe is closed,\n        // so developer doesn't need to do this manually\n        if (!skipPool) {\n          if (unbind) {\n            // Remove from the events pool\n            this._pool = this._pool.filter(poolItem => {\n              return poolItem.type !== eType || poolItem.listener !== listener || poolItem.target !== target;\n            });\n          } else {\n            // Add to the events pool\n            this._pool.push({\n              target,\n              type: eType,\n              listener,\n              passive\n            });\n          }\n        } // most PhotoSwipe events call preventDefault,\n        // and we do not need browser to scroll the page\n\n\n        const eventOptions = supportsPassive ? {\n          passive: passive || false\n        } : false;\n        target[methodName](eType, listener, eventOptions);\n      }\n    });\n  }\n\n}\n\n/** @typedef {import('../photoswipe.js').PhotoSwipeOptions} PhotoSwipeOptions */\n\n/** @typedef {import('../core/base.js').default} PhotoSwipeBase */\n\n/** @typedef {import('../photoswipe.js').Point} Point */\n\n/** @typedef {import('../slide/slide.js').SlideData} SlideData */\n\n/**\r\n * @param {PhotoSwipeOptions} options\r\n * @param {PhotoSwipeBase} pswp\r\n * @returns {Point}\r\n */\nfunction getViewportSize(options, pswp) {\n  if (options.getViewportSizeFn) {\n    const newViewportSize = options.getViewportSizeFn(options, pswp);\n\n    if (newViewportSize) {\n      return newViewportSize;\n    }\n  }\n\n  return {\n    x: document.documentElement.clientWidth,\n    // TODO: height on mobile is very incosistent due to toolbar\n    // find a way to improve this\n    //\n    // document.documentElement.clientHeight - doesn't seem to work well\n    y: window.innerHeight\n  };\n}\n/**\r\n * Parses padding option.\r\n * Supported formats:\r\n *\r\n * // Object\r\n * padding: {\r\n *  top: 0,\r\n *  bottom: 0,\r\n *  left: 0,\r\n *  right: 0\r\n * }\r\n *\r\n * // A function that returns the object\r\n * paddingFn: (viewportSize, itemData, index) => {\r\n *  return {\r\n *    top: 0,\r\n *    bottom: 0,\r\n *    left: 0,\r\n *    right: 0\r\n *  };\r\n * }\r\n *\r\n * // Legacy variant\r\n * paddingLeft: 0,\r\n * paddingRight: 0,\r\n * paddingTop: 0,\r\n * paddingBottom: 0,\r\n *\r\n * @param {'left' | 'top' | 'bottom' | 'right'} prop\r\n * @param {PhotoSwipeOptions} options PhotoSwipe options\r\n * @param {Point} viewportSize PhotoSwipe viewport size, for example: { x:800, y:600 }\r\n * @param {SlideData} itemData Data about the slide\r\n * @param {number} index Slide index\r\n * @returns {number}\r\n */\n\nfunction parsePaddingOption(prop, options, viewportSize, itemData, index) {\n  let paddingValue = 0;\n\n  if (options.paddingFn) {\n    paddingValue = options.paddingFn(viewportSize, itemData, index)[prop];\n  } else if (options.padding) {\n    paddingValue = options.padding[prop];\n  } else {\n    const legacyPropName = 'padding' + prop[0].toUpperCase() + prop.slice(1); // @ts-expect-error\n\n    if (options[legacyPropName]) {\n      // @ts-expect-error\n      paddingValue = options[legacyPropName];\n    }\n  }\n\n  return Number(paddingValue) || 0;\n}\n/**\r\n * @param {PhotoSwipeOptions} options\r\n * @param {Point} viewportSize\r\n * @param {SlideData} itemData\r\n * @param {number} index\r\n * @returns {Point}\r\n */\n\nfunction getPanAreaSize(options, viewportSize, itemData, index) {\n  return {\n    x: viewportSize.x - parsePaddingOption('left', options, viewportSize, itemData, index) - parsePaddingOption('right', options, viewportSize, itemData, index),\n    y: viewportSize.y - parsePaddingOption('top', options, viewportSize, itemData, index) - parsePaddingOption('bottom', options, viewportSize, itemData, index)\n  };\n}\n\n/** @typedef {import('./slide.js').default} Slide */\n\n/** @typedef {Record<Axis, number>} Point */\n\n/** @typedef {'x' | 'y'} Axis */\n\n/**\r\n * Calculates minimum, maximum and initial (center) bounds of a slide\r\n */\n\nclass PanBounds {\n  /**\r\n   * @param {Slide} slide\r\n   */\n  constructor(slide) {\n    this.slide = slide;\n    this.currZoomLevel = 1;\n    this.center =\n    /** @type {Point} */\n    {\n      x: 0,\n      y: 0\n    };\n    this.max =\n    /** @type {Point} */\n    {\n      x: 0,\n      y: 0\n    };\n    this.min =\n    /** @type {Point} */\n    {\n      x: 0,\n      y: 0\n    };\n  }\n  /**\r\n   * _getItemBounds\r\n   *\r\n   * @param {number} currZoomLevel\r\n   */\n\n\n  update(currZoomLevel) {\n    this.currZoomLevel = currZoomLevel;\n\n    if (!this.slide.width) {\n      this.reset();\n    } else {\n      this._updateAxis('x');\n\n      this._updateAxis('y');\n\n      this.slide.pswp.dispatch('calcBounds', {\n        slide: this.slide\n      });\n    }\n  }\n  /**\r\n   * _calculateItemBoundsForAxis\r\n   *\r\n   * @param {Axis} axis\r\n   */\n\n\n  _updateAxis(axis) {\n    const {\n      pswp\n    } = this.slide;\n    const elSize = this.slide[axis === 'x' ? 'width' : 'height'] * this.currZoomLevel;\n    const paddingProp = axis === 'x' ? 'left' : 'top';\n    const padding = parsePaddingOption(paddingProp, pswp.options, pswp.viewportSize, this.slide.data, this.slide.index);\n    const panAreaSize = this.slide.panAreaSize[axis]; // Default position of element.\n    // By default, it is center of viewport:\n\n    this.center[axis] = Math.round((panAreaSize - elSize) / 2) + padding; // maximum pan position\n\n    this.max[axis] = elSize > panAreaSize ? Math.round(panAreaSize - elSize) + padding : this.center[axis]; // minimum pan position\n\n    this.min[axis] = elSize > panAreaSize ? padding : this.center[axis];\n  } // _getZeroBounds\n\n\n  reset() {\n    this.center.x = 0;\n    this.center.y = 0;\n    this.max.x = 0;\n    this.max.y = 0;\n    this.min.x = 0;\n    this.min.y = 0;\n  }\n  /**\r\n   * Correct pan position if it's beyond the bounds\r\n   *\r\n   * @param {Axis} axis x or y\r\n   * @param {number} panOffset\r\n   * @returns {number}\r\n   */\n\n\n  correctPan(axis, panOffset) {\n    // checkPanBounds\n    return clamp(panOffset, this.max[axis], this.min[axis]);\n  }\n\n}\n\nconst MAX_IMAGE_WIDTH = 4000;\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {import('../photoswipe.js').PhotoSwipeOptions} PhotoSwipeOptions */\n\n/** @typedef {import('../photoswipe.js').Point} Point */\n\n/** @typedef {import('../slide/slide.js').SlideData} SlideData */\n\n/** @typedef {'fit' | 'fill' | number | ((zoomLevelObject: ZoomLevel) => number)} ZoomLevelOption */\n\n/**\r\n * Calculates zoom levels for specific slide.\r\n * Depends on viewport size and image size.\r\n */\n\nclass ZoomLevel {\n  /**\r\n   * @param {PhotoSwipeOptions} options PhotoSwipe options\r\n   * @param {SlideData} itemData Slide data\r\n   * @param {number} index Slide index\r\n   * @param {PhotoSwipe} [pswp] PhotoSwipe instance, can be undefined if not initialized yet\r\n   */\n  constructor(options, itemData, index, pswp) {\n    this.pswp = pswp;\n    this.options = options;\n    this.itemData = itemData;\n    this.index = index;\n    /** @type { Point | null } */\n\n    this.panAreaSize = null;\n    /** @type { Point | null } */\n\n    this.elementSize = null;\n    this.fit = 1;\n    this.fill = 1;\n    this.vFill = 1;\n    this.initial = 1;\n    this.secondary = 1;\n    this.max = 1;\n    this.min = 1;\n  }\n  /**\r\n   * Calculate initial, secondary and maximum zoom level for the specified slide.\r\n   *\r\n   * It should be called when either image or viewport size changes.\r\n   *\r\n   * @param {number} maxWidth\r\n   * @param {number} maxHeight\r\n   * @param {Point} panAreaSize\r\n   */\n\n\n  update(maxWidth, maxHeight, panAreaSize) {\n    /** @type {Point} */\n    const elementSize = {\n      x: maxWidth,\n      y: maxHeight\n    };\n    this.elementSize = elementSize;\n    this.panAreaSize = panAreaSize;\n    const hRatio = panAreaSize.x / elementSize.x;\n    const vRatio = panAreaSize.y / elementSize.y;\n    this.fit = Math.min(1, hRatio < vRatio ? hRatio : vRatio);\n    this.fill = Math.min(1, hRatio > vRatio ? hRatio : vRatio); // zoom.vFill defines zoom level of the image\n    // when it has 100% of viewport vertical space (height)\n\n    this.vFill = Math.min(1, vRatio);\n    this.initial = this._getInitial();\n    this.secondary = this._getSecondary();\n    this.max = Math.max(this.initial, this.secondary, this._getMax());\n    this.min = Math.min(this.fit, this.initial, this.secondary);\n\n    if (this.pswp) {\n      this.pswp.dispatch('zoomLevelsUpdate', {\n        zoomLevels: this,\n        slideData: this.itemData\n      });\n    }\n  }\n  /**\r\n   * Parses user-defined zoom option.\r\n   *\r\n   * @private\r\n   * @param {'initial' | 'secondary' | 'max'} optionPrefix Zoom level option prefix (initial, secondary, max)\r\n   * @returns { number | undefined }\r\n   */\n\n\n  _parseZoomLevelOption(optionPrefix) {\n    const optionName =\n    /** @type {'initialZoomLevel' | 'secondaryZoomLevel' | 'maxZoomLevel'} */\n    optionPrefix + 'ZoomLevel';\n    const optionValue = this.options[optionName];\n\n    if (!optionValue) {\n      return;\n    }\n\n    if (typeof optionValue === 'function') {\n      return optionValue(this);\n    }\n\n    if (optionValue === 'fill') {\n      return this.fill;\n    }\n\n    if (optionValue === 'fit') {\n      return this.fit;\n    }\n\n    return Number(optionValue);\n  }\n  /**\r\n   * Get zoom level to which image will be zoomed after double-tap gesture,\r\n   * or when user clicks on zoom icon,\r\n   * or mouse-click on image itself.\r\n   * If you return 1 image will be zoomed to its original size.\r\n   *\r\n   * @private\r\n   * @return {number}\r\n   */\n\n\n  _getSecondary() {\n    let currZoomLevel = this._parseZoomLevelOption('secondary');\n\n    if (currZoomLevel) {\n      return currZoomLevel;\n    } // 3x of \"fit\" state, but not larger than original\n\n\n    currZoomLevel = Math.min(1, this.fit * 3);\n\n    if (this.elementSize && currZoomLevel * this.elementSize.x > MAX_IMAGE_WIDTH) {\n      currZoomLevel = MAX_IMAGE_WIDTH / this.elementSize.x;\n    }\n\n    return currZoomLevel;\n  }\n  /**\r\n   * Get initial image zoom level.\r\n   *\r\n   * @private\r\n   * @return {number}\r\n   */\n\n\n  _getInitial() {\n    return this._parseZoomLevelOption('initial') || this.fit;\n  }\n  /**\r\n   * Maximum zoom level when user zooms\r\n   * via zoom/pinch gesture,\r\n   * via cmd/ctrl-wheel or via trackpad.\r\n   *\r\n   * @private\r\n   * @return {number}\r\n   */\n\n\n  _getMax() {\n    // max zoom level is x4 from \"fit state\",\n    // used for zoom gesture and ctrl/trackpad zoom\n    return this._parseZoomLevelOption('max') || Math.max(1, this.fit * 4);\n  }\n\n}\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n/**\r\n * Renders and allows to control a single slide\r\n */\n\nclass Slide {\n  /**\r\n   * @param {SlideData} data\r\n   * @param {number} index\r\n   * @param {PhotoSwipe} pswp\r\n   */\n  constructor(data, index, pswp) {\n    this.data = data;\n    this.index = index;\n    this.pswp = pswp;\n    this.isActive = index === pswp.currIndex;\n    this.currentResolution = 0;\n    /** @type {Point} */\n\n    this.panAreaSize = {\n      x: 0,\n      y: 0\n    };\n    /** @type {Point} */\n\n    this.pan = {\n      x: 0,\n      y: 0\n    };\n    this.isFirstSlide = this.isActive && !pswp.opener.isOpen;\n    this.zoomLevels = new ZoomLevel(pswp.options, data, index, pswp);\n    this.pswp.dispatch('gettingData', {\n      slide: this,\n      data: this.data,\n      index\n    });\n    this.content = this.pswp.contentLoader.getContentBySlide(this);\n    this.container = createElement('pswp__zoom-wrap', 'div');\n    /** @type {HTMLElement | null} */\n\n    this.holderElement = null;\n    this.currZoomLevel = 1;\n    /** @type {number} */\n\n    this.width = this.content.width;\n    /** @type {number} */\n\n    this.height = this.content.height;\n    this.heavyAppended = false;\n    this.bounds = new PanBounds(this);\n    this.prevDisplayedWidth = -1;\n    this.prevDisplayedHeight = -1;\n    this.pswp.dispatch('slideInit', {\n      slide: this\n    });\n  }\n  /**\r\n   * If this slide is active/current/visible\r\n   *\r\n   * @param {boolean} isActive\r\n   */\n\n\n  setIsActive(isActive) {\n    if (isActive && !this.isActive) {\n      // slide just became active\n      this.activate();\n    } else if (!isActive && this.isActive) {\n      // slide just became non-active\n      this.deactivate();\n    }\n  }\n  /**\r\n   * Appends slide content to DOM\r\n   *\r\n   * @param {HTMLElement} holderElement\r\n   */\n\n\n  append(holderElement) {\n    this.holderElement = holderElement;\n    this.container.style.transformOrigin = '0 0'; // Slide appended to DOM\n\n    if (!this.data) {\n      return;\n    }\n\n    this.calculateSize();\n    this.load();\n    this.updateContentSize();\n    this.appendHeavy();\n    this.holderElement.appendChild(this.container);\n    this.zoomAndPanToInitial();\n    this.pswp.dispatch('firstZoomPan', {\n      slide: this\n    });\n    this.applyCurrentZoomPan();\n    this.pswp.dispatch('afterSetContent', {\n      slide: this\n    });\n\n    if (this.isActive) {\n      this.activate();\n    }\n  }\n\n  load() {\n    this.content.load(false);\n    this.pswp.dispatch('slideLoad', {\n      slide: this\n    });\n  }\n  /**\r\n   * Append \"heavy\" DOM elements\r\n   *\r\n   * This may depend on a type of slide,\r\n   * but generally these are large images.\r\n   */\n\n\n  appendHeavy() {\n    const {\n      pswp\n    } = this;\n    const appendHeavyNearby = true; // todo\n    // Avoid appending heavy elements during animations\n\n    if (this.heavyAppended || !pswp.opener.isOpen || pswp.mainScroll.isShifted() || !this.isActive && !appendHeavyNearby) {\n      return;\n    }\n\n    if (this.pswp.dispatch('appendHeavy', {\n      slide: this\n    }).defaultPrevented) {\n      return;\n    }\n\n    this.heavyAppended = true;\n    this.content.append();\n    this.pswp.dispatch('appendHeavyContent', {\n      slide: this\n    });\n  }\n  /**\r\n   * Triggered when this slide is active (selected).\r\n   *\r\n   * If it's part of opening/closing transition -\r\n   * activate() will trigger after the transition is ended.\r\n   */\n\n\n  activate() {\n    this.isActive = true;\n    this.appendHeavy();\n    this.content.activate();\n    this.pswp.dispatch('slideActivate', {\n      slide: this\n    });\n  }\n  /**\r\n   * Triggered when this slide becomes inactive.\r\n   *\r\n   * Slide can become inactive only after it was active.\r\n   */\n\n\n  deactivate() {\n    this.isActive = false;\n    this.content.deactivate();\n\n    if (this.currZoomLevel !== this.zoomLevels.initial) {\n      // allow filtering\n      this.calculateSize();\n    } // reset zoom level\n\n\n    this.currentResolution = 0;\n    this.zoomAndPanToInitial();\n    this.applyCurrentZoomPan();\n    this.updateContentSize();\n    this.pswp.dispatch('slideDeactivate', {\n      slide: this\n    });\n  }\n  /**\r\n   * The slide should destroy itself, it will never be used again.\r\n   * (unbind all events and destroy internal components)\r\n   */\n\n\n  destroy() {\n    this.content.hasSlide = false;\n    this.content.remove();\n    this.container.remove();\n    this.pswp.dispatch('slideDestroy', {\n      slide: this\n    });\n  }\n\n  resize() {\n    if (this.currZoomLevel === this.zoomLevels.initial || !this.isActive) {\n      // Keep initial zoom level if it was before the resize,\n      // as well as when this slide is not active\n      // Reset position and scale to original state\n      this.calculateSize();\n      this.currentResolution = 0;\n      this.zoomAndPanToInitial();\n      this.applyCurrentZoomPan();\n      this.updateContentSize();\n    } else {\n      // readjust pan position if it's beyond the bounds\n      this.calculateSize();\n      this.bounds.update(this.currZoomLevel);\n      this.panTo(this.pan.x, this.pan.y);\n    }\n  }\n  /**\r\n   * Apply size to current slide content,\r\n   * based on the current resolution and scale.\r\n   *\r\n   * @param {boolean} [force] if size should be updated even if dimensions weren't changed\r\n   */\n\n\n  updateContentSize(force) {\n    // Use initial zoom level\n    // if resolution is not defined (user didn't zoom yet)\n    const scaleMultiplier = this.currentResolution || this.zoomLevels.initial;\n\n    if (!scaleMultiplier) {\n      return;\n    }\n\n    const width = Math.round(this.width * scaleMultiplier) || this.pswp.viewportSize.x;\n    const height = Math.round(this.height * scaleMultiplier) || this.pswp.viewportSize.y;\n\n    if (!this.sizeChanged(width, height) && !force) {\n      return;\n    }\n\n    this.content.setDisplayedSize(width, height);\n  }\n  /**\r\n   * @param {number} width\r\n   * @param {number} height\r\n   */\n\n\n  sizeChanged(width, height) {\n    if (width !== this.prevDisplayedWidth || height !== this.prevDisplayedHeight) {\n      this.prevDisplayedWidth = width;\n      this.prevDisplayedHeight = height;\n      return true;\n    }\n\n    return false;\n  }\n  /** @returns {HTMLImageElement | HTMLDivElement | null | undefined} */\n\n\n  getPlaceholderElement() {\n    var _this$content$placeho;\n\n    return (_this$content$placeho = this.content.placeholder) === null || _this$content$placeho === void 0 ? void 0 : _this$content$placeho.element;\n  }\n  /**\r\n   * Zoom current slide image to...\r\n   *\r\n   * @param {number} destZoomLevel Destination zoom level.\r\n   * @param {Point} [centerPoint]\r\n   * Transform origin center point, or false if viewport center should be used.\r\n   * @param {number | false} [transitionDuration] Transition duration, may be set to 0.\r\n   * @param {boolean} [ignoreBounds] Minimum and maximum zoom levels will be ignored.\r\n   */\n\n\n  zoomTo(destZoomLevel, centerPoint, transitionDuration, ignoreBounds) {\n    const {\n      pswp\n    } = this;\n\n    if (!this.isZoomable() || pswp.mainScroll.isShifted()) {\n      return;\n    }\n\n    pswp.dispatch('beforeZoomTo', {\n      destZoomLevel,\n      centerPoint,\n      transitionDuration\n    }); // stop all pan and zoom transitions\n\n    pswp.animations.stopAllPan(); // if (!centerPoint) {\n    //   centerPoint = pswp.getViewportCenterPoint();\n    // }\n\n    const prevZoomLevel = this.currZoomLevel;\n\n    if (!ignoreBounds) {\n      destZoomLevel = clamp(destZoomLevel, this.zoomLevels.min, this.zoomLevels.max);\n    } // if (transitionDuration === undefined) {\n    //   transitionDuration = this.pswp.options.zoomAnimationDuration;\n    // }\n\n\n    this.setZoomLevel(destZoomLevel);\n    this.pan.x = this.calculateZoomToPanOffset('x', centerPoint, prevZoomLevel);\n    this.pan.y = this.calculateZoomToPanOffset('y', centerPoint, prevZoomLevel);\n    roundPoint(this.pan);\n\n    const finishTransition = () => {\n      this._setResolution(destZoomLevel);\n\n      this.applyCurrentZoomPan();\n    };\n\n    if (!transitionDuration) {\n      finishTransition();\n    } else {\n      pswp.animations.startTransition({\n        isPan: true,\n        name: 'zoomTo',\n        target: this.container,\n        transform: this.getCurrentTransform(),\n        onComplete: finishTransition,\n        duration: transitionDuration,\n        easing: pswp.options.easing\n      });\n    }\n  }\n  /**\r\n   * @param {Point} [centerPoint]\r\n   */\n\n\n  toggleZoom(centerPoint) {\n    this.zoomTo(this.currZoomLevel === this.zoomLevels.initial ? this.zoomLevels.secondary : this.zoomLevels.initial, centerPoint, this.pswp.options.zoomAnimationDuration);\n  }\n  /**\r\n   * Updates zoom level property and recalculates new pan bounds,\r\n   * unlike zoomTo it does not apply transform (use applyCurrentZoomPan)\r\n   *\r\n   * @param {number} currZoomLevel\r\n   */\n\n\n  setZoomLevel(currZoomLevel) {\n    this.currZoomLevel = currZoomLevel;\n    this.bounds.update(this.currZoomLevel);\n  }\n  /**\r\n   * Get pan position after zoom at a given `point`.\r\n   *\r\n   * Always call setZoomLevel(newZoomLevel) beforehand to recalculate\r\n   * pan bounds according to the new zoom level.\r\n   *\r\n   * @param {'x' | 'y'} axis\r\n   * @param {Point} [point]\r\n   * point based on which zoom is performed, usually refers to the current mouse position,\r\n   * if false - viewport center will be used.\r\n   * @param {number} [prevZoomLevel] Zoom level before new zoom was applied.\r\n   * @returns {number}\r\n   */\n\n\n  calculateZoomToPanOffset(axis, point, prevZoomLevel) {\n    const totalPanDistance = this.bounds.max[axis] - this.bounds.min[axis];\n\n    if (totalPanDistance === 0) {\n      return this.bounds.center[axis];\n    }\n\n    if (!point) {\n      point = this.pswp.getViewportCenterPoint();\n    }\n\n    if (!prevZoomLevel) {\n      prevZoomLevel = this.zoomLevels.initial;\n    }\n\n    const zoomFactor = this.currZoomLevel / prevZoomLevel;\n    return this.bounds.correctPan(axis, (this.pan[axis] - point[axis]) * zoomFactor + point[axis]);\n  }\n  /**\r\n   * Apply pan and keep it within bounds.\r\n   *\r\n   * @param {number} panX\r\n   * @param {number} panY\r\n   */\n\n\n  panTo(panX, panY) {\n    this.pan.x = this.bounds.correctPan('x', panX);\n    this.pan.y = this.bounds.correctPan('y', panY);\n    this.applyCurrentZoomPan();\n  }\n  /**\r\n   * If the slide in the current state can be panned by the user\r\n   * @returns {boolean}\r\n   */\n\n\n  isPannable() {\n    return Boolean(this.width) && this.currZoomLevel > this.zoomLevels.fit;\n  }\n  /**\r\n   * If the slide can be zoomed\r\n   * @returns {boolean}\r\n   */\n\n\n  isZoomable() {\n    return Boolean(this.width) && this.content.isZoomable();\n  }\n  /**\r\n   * Apply transform and scale based on\r\n   * the current pan position (this.pan) and zoom level (this.currZoomLevel)\r\n   */\n\n\n  applyCurrentZoomPan() {\n    this._applyZoomTransform(this.pan.x, this.pan.y, this.currZoomLevel);\n\n    if (this === this.pswp.currSlide) {\n      this.pswp.dispatch('zoomPanUpdate', {\n        slide: this\n      });\n    }\n  }\n\n  zoomAndPanToInitial() {\n    this.currZoomLevel = this.zoomLevels.initial; // pan according to the zoom level\n\n    this.bounds.update(this.currZoomLevel);\n    equalizePoints(this.pan, this.bounds.center);\n    this.pswp.dispatch('initialZoomPan', {\n      slide: this\n    });\n  }\n  /**\r\n   * Set translate and scale based on current resolution\r\n   *\r\n   * @param {number} x\r\n   * @param {number} y\r\n   * @param {number} zoom\r\n   * @private\r\n   */\n\n\n  _applyZoomTransform(x, y, zoom) {\n    zoom /= this.currentResolution || this.zoomLevels.initial;\n    setTransform(this.container, x, y, zoom);\n  }\n\n  calculateSize() {\n    const {\n      pswp\n    } = this;\n    equalizePoints(this.panAreaSize, getPanAreaSize(pswp.options, pswp.viewportSize, this.data, this.index));\n    this.zoomLevels.update(this.width, this.height, this.panAreaSize);\n    pswp.dispatch('calcSlideSize', {\n      slide: this\n    });\n  }\n  /** @returns {string} */\n\n\n  getCurrentTransform() {\n    const scale = this.currZoomLevel / (this.currentResolution || this.zoomLevels.initial);\n    return toTransformString(this.pan.x, this.pan.y, scale);\n  }\n  /**\r\n   * Set resolution and re-render the image.\r\n   *\r\n   * For example, if the real image size is 2000x1500,\r\n   * and resolution is 0.5 - it will be rendered as 1000x750.\r\n   *\r\n   * Image with zoom level 2 and resolution 0.5 is\r\n   * the same as image with zoom level 1 and resolution 1.\r\n   *\r\n   * Used to optimize animations and make\r\n   * sure that browser renders image in the highest quality.\r\n   * Also used by responsive images to load the correct one.\r\n   *\r\n   * @param {number} newResolution\r\n   */\n\n\n  _setResolution(newResolution) {\n    if (newResolution === this.currentResolution) {\n      return;\n    }\n\n    this.currentResolution = newResolution;\n    this.updateContentSize();\n    this.pswp.dispatch('resolutionChanged');\n  }\n\n}\n\n/** @typedef {import('../photoswipe.js').Point} Point */\n\n/** @typedef {import('./gestures.js').default} Gestures */\n\nconst PAN_END_FRICTION = 0.35;\nconst VERTICAL_DRAG_FRICTION = 0.6; // 1 corresponds to the third of viewport height\n\nconst MIN_RATIO_TO_CLOSE = 0.4; // Minimum speed required to navigate\n// to next or previous slide\n\nconst MIN_NEXT_SLIDE_SPEED = 0.5;\n/**\r\n * @param {number} initialVelocity\r\n * @param {number} decelerationRate\r\n * @returns {number}\r\n */\n\nfunction project(initialVelocity, decelerationRate) {\n  return initialVelocity * decelerationRate / (1 - decelerationRate);\n}\n/**\r\n * Handles single pointer dragging\r\n */\n\n\nclass DragHandler {\n  /**\r\n   * @param {Gestures} gestures\r\n   */\n  constructor(gestures) {\n    this.gestures = gestures;\n    this.pswp = gestures.pswp;\n    /** @type {Point} */\n\n    this.startPan = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  start() {\n    if (this.pswp.currSlide) {\n      equalizePoints(this.startPan, this.pswp.currSlide.pan);\n    }\n\n    this.pswp.animations.stopAll();\n  }\n\n  change() {\n    const {\n      p1,\n      prevP1,\n      dragAxis\n    } = this.gestures;\n    const {\n      currSlide\n    } = this.pswp;\n\n    if (dragAxis === 'y' && this.pswp.options.closeOnVerticalDrag && currSlide && currSlide.currZoomLevel <= currSlide.zoomLevels.fit && !this.gestures.isMultitouch) {\n      // Handle vertical drag to close\n      const panY = currSlide.pan.y + (p1.y - prevP1.y);\n\n      if (!this.pswp.dispatch('verticalDrag', {\n        panY\n      }).defaultPrevented) {\n        this._setPanWithFriction('y', panY, VERTICAL_DRAG_FRICTION);\n\n        const bgOpacity = 1 - Math.abs(this._getVerticalDragRatio(currSlide.pan.y));\n        this.pswp.applyBgOpacity(bgOpacity);\n        currSlide.applyCurrentZoomPan();\n      }\n    } else {\n      const mainScrollChanged = this._panOrMoveMainScroll('x');\n\n      if (!mainScrollChanged) {\n        this._panOrMoveMainScroll('y');\n\n        if (currSlide) {\n          roundPoint(currSlide.pan);\n          currSlide.applyCurrentZoomPan();\n        }\n      }\n    }\n  }\n\n  end() {\n    const {\n      velocity\n    } = this.gestures;\n    const {\n      mainScroll,\n      currSlide\n    } = this.pswp;\n    let indexDiff = 0;\n    this.pswp.animations.stopAll(); // Handle main scroll if it's shifted\n\n    if (mainScroll.isShifted()) {\n      // Position of the main scroll relative to the viewport\n      const mainScrollShiftDiff = mainScroll.x - mainScroll.getCurrSlideX(); // Ratio between 0 and 1:\n      // 0 - slide is not visible at all,\n      // 0.5 - half of the slide is visible\n      // 1 - slide is fully visible\n\n      const currentSlideVisibilityRatio = mainScrollShiftDiff / this.pswp.viewportSize.x; // Go next slide.\n      //\n      // - if velocity and its direction is matched,\n      //   and we see at least tiny part of the next slide\n      //\n      // - or if we see less than 50% of the current slide\n      //   and velocity is close to 0\n      //\n\n      if (velocity.x < -MIN_NEXT_SLIDE_SPEED && currentSlideVisibilityRatio < 0 || velocity.x < 0.1 && currentSlideVisibilityRatio < -0.5) {\n        // Go to next slide\n        indexDiff = 1;\n        velocity.x = Math.min(velocity.x, 0);\n      } else if (velocity.x > MIN_NEXT_SLIDE_SPEED && currentSlideVisibilityRatio > 0 || velocity.x > -0.1 && currentSlideVisibilityRatio > 0.5) {\n        // Go to prev slide\n        indexDiff = -1;\n        velocity.x = Math.max(velocity.x, 0);\n      }\n\n      mainScroll.moveIndexBy(indexDiff, true, velocity.x);\n    } // Restore zoom level\n\n\n    if (currSlide && currSlide.currZoomLevel > currSlide.zoomLevels.max || this.gestures.isMultitouch) {\n      this.gestures.zoomLevels.correctZoomPan(true);\n    } else {\n      // we run two animations instead of one,\n      // as each axis has own pan boundaries and thus different spring function\n      // (correctZoomPan does not have this functionality,\n      //  it animates all properties with single timing function)\n      this._finishPanGestureForAxis('x');\n\n      this._finishPanGestureForAxis('y');\n    }\n  }\n  /**\r\n   * @private\r\n   * @param {'x' | 'y'} axis\r\n   */\n\n\n  _finishPanGestureForAxis(axis) {\n    const {\n      velocity\n    } = this.gestures;\n    const {\n      currSlide\n    } = this.pswp;\n\n    if (!currSlide) {\n      return;\n    }\n\n    const {\n      pan,\n      bounds\n    } = currSlide;\n    const panPos = pan[axis];\n    const restoreBgOpacity = this.pswp.bgOpacity < 1 && axis === 'y'; // 0.995 means - scroll view loses 0.5% of its velocity per millisecond\n    // Increasing this number will reduce travel distance\n\n    const decelerationRate = 0.995; // 0.99\n    // Pan position if there is no bounds\n\n    const projectedPosition = panPos + project(velocity[axis], decelerationRate);\n\n    if (restoreBgOpacity) {\n      const vDragRatio = this._getVerticalDragRatio(panPos);\n\n      const projectedVDragRatio = this._getVerticalDragRatio(projectedPosition); // If we are above and moving upwards,\n      // or if we are below and moving downwards\n\n\n      if (vDragRatio < 0 && projectedVDragRatio < -MIN_RATIO_TO_CLOSE || vDragRatio > 0 && projectedVDragRatio > MIN_RATIO_TO_CLOSE) {\n        this.pswp.close();\n        return;\n      }\n    } // Pan position with corrected bounds\n\n\n    const correctedPanPosition = bounds.correctPan(axis, projectedPosition); // Exit if pan position should not be changed\n    // or if speed it too low\n\n    if (panPos === correctedPanPosition) {\n      return;\n    } // Overshoot if the final position is out of pan bounds\n\n\n    const dampingRatio = correctedPanPosition === projectedPosition ? 1 : 0.82;\n    const initialBgOpacity = this.pswp.bgOpacity;\n    const totalPanDist = correctedPanPosition - panPos;\n    this.pswp.animations.startSpring({\n      name: 'panGesture' + axis,\n      isPan: true,\n      start: panPos,\n      end: correctedPanPosition,\n      velocity: velocity[axis],\n      dampingRatio,\n      onUpdate: pos => {\n        // Animate opacity of background relative to Y pan position of an image\n        if (restoreBgOpacity && this.pswp.bgOpacity < 1) {\n          // 0 - start of animation, 1 - end of animation\n          const animationProgressRatio = 1 - (correctedPanPosition - pos) / totalPanDist; // We clamp opacity to keep it between 0 and 1.\n          // As progress ratio can be larger than 1 due to overshoot,\n          // and we do not want to bounce opacity.\n\n          this.pswp.applyBgOpacity(clamp(initialBgOpacity + (1 - initialBgOpacity) * animationProgressRatio, 0, 1));\n        }\n\n        pan[axis] = Math.floor(pos);\n        currSlide.applyCurrentZoomPan();\n      }\n    });\n  }\n  /**\r\n   * Update position of the main scroll,\r\n   * or/and update pan position of the current slide.\r\n   *\r\n   * Should return true if it changes (or can change) main scroll.\r\n   *\r\n   * @private\r\n   * @param {'x' | 'y'} axis\r\n   * @returns {boolean}\r\n   */\n\n\n  _panOrMoveMainScroll(axis) {\n    const {\n      p1,\n      dragAxis,\n      prevP1,\n      isMultitouch\n    } = this.gestures;\n    const {\n      currSlide,\n      mainScroll\n    } = this.pswp;\n    const delta = p1[axis] - prevP1[axis];\n    const newMainScrollX = mainScroll.x + delta;\n\n    if (!delta || !currSlide) {\n      return false;\n    } // Always move main scroll if image can not be panned\n\n\n    if (axis === 'x' && !currSlide.isPannable() && !isMultitouch) {\n      mainScroll.moveTo(newMainScrollX, true);\n      return true; // changed main scroll\n    }\n\n    const {\n      bounds\n    } = currSlide;\n    const newPan = currSlide.pan[axis] + delta;\n\n    if (this.pswp.options.allowPanToNext && dragAxis === 'x' && axis === 'x' && !isMultitouch) {\n      const currSlideMainScrollX = mainScroll.getCurrSlideX(); // Position of the main scroll relative to the viewport\n\n      const mainScrollShiftDiff = mainScroll.x - currSlideMainScrollX;\n      const isLeftToRight = delta > 0;\n      const isRightToLeft = !isLeftToRight;\n\n      if (newPan > bounds.min[axis] && isLeftToRight) {\n        // Panning from left to right, beyond the left edge\n        // Wether the image was at minimum pan position (or less)\n        // when this drag gesture started.\n        // Minimum pan position refers to the left edge of the image.\n        const wasAtMinPanPosition = bounds.min[axis] <= this.startPan[axis];\n\n        if (wasAtMinPanPosition) {\n          mainScroll.moveTo(newMainScrollX, true);\n          return true;\n        } else {\n          this._setPanWithFriction(axis, newPan); //currSlide.pan[axis] = newPan;\n\n        }\n      } else if (newPan < bounds.max[axis] && isRightToLeft) {\n        // Paning from right to left, beyond the right edge\n        // Maximum pan position refers to the right edge of the image.\n        const wasAtMaxPanPosition = this.startPan[axis] <= bounds.max[axis];\n\n        if (wasAtMaxPanPosition) {\n          mainScroll.moveTo(newMainScrollX, true);\n          return true;\n        } else {\n          this._setPanWithFriction(axis, newPan); //currSlide.pan[axis] = newPan;\n\n        }\n      } else {\n        // If main scroll is shifted\n        if (mainScrollShiftDiff !== 0) {\n          // If main scroll is shifted right\n          if (mainScrollShiftDiff > 0\n          /*&& isRightToLeft*/\n          ) {\n            mainScroll.moveTo(Math.max(newMainScrollX, currSlideMainScrollX), true);\n            return true;\n          } else if (mainScrollShiftDiff < 0\n          /*&& isLeftToRight*/\n          ) {\n            // Main scroll is shifted left (Position is less than 0 comparing to the viewport 0)\n            mainScroll.moveTo(Math.min(newMainScrollX, currSlideMainScrollX), true);\n            return true;\n          }\n        } else {\n          // We are within pan bounds, so just pan\n          this._setPanWithFriction(axis, newPan);\n        }\n      }\n    } else {\n      if (axis === 'y') {\n        // Do not pan vertically if main scroll is shifted o\n        if (!mainScroll.isShifted() && bounds.min.y !== bounds.max.y) {\n          this._setPanWithFriction(axis, newPan);\n        }\n      } else {\n        this._setPanWithFriction(axis, newPan);\n      }\n    }\n\n    return false;\n  } // If we move above - the ratio is negative\n  // If we move below the ratio is positive\n\n  /**\r\n   * Relation between pan Y position and third of viewport height.\r\n   *\r\n   * When we are at initial position (center bounds) - the ratio is 0,\r\n   * if position is shifted upwards - the ratio is negative,\r\n   * if position is shifted downwards - the ratio is positive.\r\n   *\r\n   * @private\r\n   * @param {number} panY The current pan Y position.\r\n   * @returns {number}\r\n   */\n\n\n  _getVerticalDragRatio(panY) {\n    var _this$pswp$currSlide$, _this$pswp$currSlide;\n\n    return (panY - ((_this$pswp$currSlide$ = (_this$pswp$currSlide = this.pswp.currSlide) === null || _this$pswp$currSlide === void 0 ? void 0 : _this$pswp$currSlide.bounds.center.y) !== null && _this$pswp$currSlide$ !== void 0 ? _this$pswp$currSlide$ : 0)) / (this.pswp.viewportSize.y / 3);\n  }\n  /**\r\n   * Set pan position of the current slide.\r\n   * Apply friction if the position is beyond the pan bounds,\r\n   * or if custom friction is defined.\r\n   *\r\n   * @private\r\n   * @param {'x' | 'y'} axis\r\n   * @param {number} potentialPan\r\n   * @param {number} [customFriction] (0.1 - 1)\r\n   */\n\n\n  _setPanWithFriction(axis, potentialPan, customFriction) {\n    const {\n      currSlide\n    } = this.pswp;\n\n    if (!currSlide) {\n      return;\n    }\n\n    const {\n      pan,\n      bounds\n    } = currSlide;\n    const correctedPan = bounds.correctPan(axis, potentialPan); // If we are out of pan bounds\n\n    if (correctedPan !== potentialPan || customFriction) {\n      const delta = Math.round(potentialPan - pan[axis]);\n      pan[axis] += delta * (customFriction || PAN_END_FRICTION);\n    } else {\n      pan[axis] = potentialPan;\n    }\n  }\n\n}\n\n/** @typedef {import('../photoswipe.js').Point} Point */\n\n/** @typedef {import('./gestures.js').default} Gestures */\n\nconst UPPER_ZOOM_FRICTION = 0.05;\nconst LOWER_ZOOM_FRICTION = 0.15;\n/**\r\n * Get center point between two points\r\n *\r\n * @param {Point} p\r\n * @param {Point} p1\r\n * @param {Point} p2\r\n * @returns {Point}\r\n */\n\nfunction getZoomPointsCenter(p, p1, p2) {\n  p.x = (p1.x + p2.x) / 2;\n  p.y = (p1.y + p2.y) / 2;\n  return p;\n}\n\nclass ZoomHandler {\n  /**\r\n   * @param {Gestures} gestures\r\n   */\n  constructor(gestures) {\n    this.gestures = gestures;\n    /**\r\n     * @private\r\n     * @type {Point}\r\n     */\n\n    this._startPan = {\n      x: 0,\n      y: 0\n    };\n    /**\r\n     * @private\r\n     * @type {Point}\r\n     */\n\n    this._startZoomPoint = {\n      x: 0,\n      y: 0\n    };\n    /**\r\n     * @private\r\n     * @type {Point}\r\n     */\n\n    this._zoomPoint = {\n      x: 0,\n      y: 0\n    };\n    /** @private */\n\n    this._wasOverFitZoomLevel = false;\n    /** @private */\n\n    this._startZoomLevel = 1;\n  }\n\n  start() {\n    const {\n      currSlide\n    } = this.gestures.pswp;\n\n    if (currSlide) {\n      this._startZoomLevel = currSlide.currZoomLevel;\n      equalizePoints(this._startPan, currSlide.pan);\n    }\n\n    this.gestures.pswp.animations.stopAllPan();\n    this._wasOverFitZoomLevel = false;\n  }\n\n  change() {\n    const {\n      p1,\n      startP1,\n      p2,\n      startP2,\n      pswp\n    } = this.gestures;\n    const {\n      currSlide\n    } = pswp;\n\n    if (!currSlide) {\n      return;\n    }\n\n    const minZoomLevel = currSlide.zoomLevels.min;\n    const maxZoomLevel = currSlide.zoomLevels.max;\n\n    if (!currSlide.isZoomable() || pswp.mainScroll.isShifted()) {\n      return;\n    }\n\n    getZoomPointsCenter(this._startZoomPoint, startP1, startP2);\n    getZoomPointsCenter(this._zoomPoint, p1, p2);\n\n    let currZoomLevel = 1 / getDistanceBetween(startP1, startP2) * getDistanceBetween(p1, p2) * this._startZoomLevel; // slightly over the zoom.fit\n\n\n    if (currZoomLevel > currSlide.zoomLevels.initial + currSlide.zoomLevels.initial / 15) {\n      this._wasOverFitZoomLevel = true;\n    }\n\n    if (currZoomLevel < minZoomLevel) {\n      if (pswp.options.pinchToClose && !this._wasOverFitZoomLevel && this._startZoomLevel <= currSlide.zoomLevels.initial) {\n        // fade out background if zooming out\n        const bgOpacity = 1 - (minZoomLevel - currZoomLevel) / (minZoomLevel / 1.2);\n\n        if (!pswp.dispatch('pinchClose', {\n          bgOpacity\n        }).defaultPrevented) {\n          pswp.applyBgOpacity(bgOpacity);\n        }\n      } else {\n        // Apply the friction if zoom level is below the min\n        currZoomLevel = minZoomLevel - (minZoomLevel - currZoomLevel) * LOWER_ZOOM_FRICTION;\n      }\n    } else if (currZoomLevel > maxZoomLevel) {\n      // Apply the friction if zoom level is above the max\n      currZoomLevel = maxZoomLevel + (currZoomLevel - maxZoomLevel) * UPPER_ZOOM_FRICTION;\n    }\n\n    currSlide.pan.x = this._calculatePanForZoomLevel('x', currZoomLevel);\n    currSlide.pan.y = this._calculatePanForZoomLevel('y', currZoomLevel);\n    currSlide.setZoomLevel(currZoomLevel);\n    currSlide.applyCurrentZoomPan();\n  }\n\n  end() {\n    const {\n      pswp\n    } = this.gestures;\n    const {\n      currSlide\n    } = pswp;\n\n    if ((!currSlide || currSlide.currZoomLevel < currSlide.zoomLevels.initial) && !this._wasOverFitZoomLevel && pswp.options.pinchToClose) {\n      pswp.close();\n    } else {\n      this.correctZoomPan();\n    }\n  }\n  /**\r\n   * @private\r\n   * @param {'x' | 'y'} axis\r\n   * @param {number} currZoomLevel\r\n   * @returns {number}\r\n   */\n\n\n  _calculatePanForZoomLevel(axis, currZoomLevel) {\n    const zoomFactor = currZoomLevel / this._startZoomLevel;\n    return this._zoomPoint[axis] - (this._startZoomPoint[axis] - this._startPan[axis]) * zoomFactor;\n  }\n  /**\r\n   * Correct currZoomLevel and pan if they are\r\n   * beyond minimum or maximum values.\r\n   * With animation.\r\n   *\r\n   * @param {boolean} [ignoreGesture]\r\n   * Wether gesture coordinates should be ignored when calculating destination pan position.\r\n   */\n\n\n  correctZoomPan(ignoreGesture) {\n    const {\n      pswp\n    } = this.gestures;\n    const {\n      currSlide\n    } = pswp;\n\n    if (!(currSlide !== null && currSlide !== void 0 && currSlide.isZoomable())) {\n      return;\n    }\n\n    if (this._zoomPoint.x === 0) {\n      ignoreGesture = true;\n    }\n\n    const prevZoomLevel = currSlide.currZoomLevel;\n    /** @type {number} */\n\n    let destinationZoomLevel;\n    let currZoomLevelNeedsChange = true;\n\n    if (prevZoomLevel < currSlide.zoomLevels.initial) {\n      destinationZoomLevel = currSlide.zoomLevels.initial; // zoom to min\n    } else if (prevZoomLevel > currSlide.zoomLevels.max) {\n      destinationZoomLevel = currSlide.zoomLevels.max; // zoom to max\n    } else {\n      currZoomLevelNeedsChange = false;\n      destinationZoomLevel = prevZoomLevel;\n    }\n\n    const initialBgOpacity = pswp.bgOpacity;\n    const restoreBgOpacity = pswp.bgOpacity < 1;\n    const initialPan = equalizePoints({\n      x: 0,\n      y: 0\n    }, currSlide.pan);\n    let destinationPan = equalizePoints({\n      x: 0,\n      y: 0\n    }, initialPan);\n\n    if (ignoreGesture) {\n      this._zoomPoint.x = 0;\n      this._zoomPoint.y = 0;\n      this._startZoomPoint.x = 0;\n      this._startZoomPoint.y = 0;\n      this._startZoomLevel = prevZoomLevel;\n      equalizePoints(this._startPan, initialPan);\n    }\n\n    if (currZoomLevelNeedsChange) {\n      destinationPan = {\n        x: this._calculatePanForZoomLevel('x', destinationZoomLevel),\n        y: this._calculatePanForZoomLevel('y', destinationZoomLevel)\n      };\n    } // set zoom level, so pan bounds are updated according to it\n\n\n    currSlide.setZoomLevel(destinationZoomLevel);\n    destinationPan = {\n      x: currSlide.bounds.correctPan('x', destinationPan.x),\n      y: currSlide.bounds.correctPan('y', destinationPan.y)\n    }; // return zoom level and its bounds to initial\n\n    currSlide.setZoomLevel(prevZoomLevel);\n    const panNeedsChange = !pointsEqual(destinationPan, initialPan);\n\n    if (!panNeedsChange && !currZoomLevelNeedsChange && !restoreBgOpacity) {\n      // update resolution after gesture\n      currSlide._setResolution(destinationZoomLevel);\n\n      currSlide.applyCurrentZoomPan(); // nothing to animate\n\n      return;\n    }\n\n    pswp.animations.stopAllPan();\n    pswp.animations.startSpring({\n      isPan: true,\n      start: 0,\n      end: 1000,\n      velocity: 0,\n      dampingRatio: 1,\n      naturalFrequency: 40,\n      onUpdate: now => {\n        now /= 1000; // 0 - start, 1 - end\n\n        if (panNeedsChange || currZoomLevelNeedsChange) {\n          if (panNeedsChange) {\n            currSlide.pan.x = initialPan.x + (destinationPan.x - initialPan.x) * now;\n            currSlide.pan.y = initialPan.y + (destinationPan.y - initialPan.y) * now;\n          }\n\n          if (currZoomLevelNeedsChange) {\n            const newZoomLevel = prevZoomLevel + (destinationZoomLevel - prevZoomLevel) * now;\n            currSlide.setZoomLevel(newZoomLevel);\n          }\n\n          currSlide.applyCurrentZoomPan();\n        } // Restore background opacity\n\n\n        if (restoreBgOpacity && pswp.bgOpacity < 1) {\n          // We clamp opacity to keep it between 0 and 1.\n          // As progress ratio can be larger than 1 due to overshoot,\n          // and we do not want to bounce opacity.\n          pswp.applyBgOpacity(clamp(initialBgOpacity + (1 - initialBgOpacity) * now, 0, 1));\n        }\n      },\n      onComplete: () => {\n        // update resolution after transition ends\n        currSlide._setResolution(destinationZoomLevel);\n\n        currSlide.applyCurrentZoomPan();\n      }\n    });\n  }\n\n}\n\n/**\r\n * @template {string} T\r\n * @template {string} P\r\n * @typedef {import('../types.js').AddPostfix<T, P>} AddPostfix<T, P>\r\n */\n\n/** @typedef {import('./gestures.js').default} Gestures */\n\n/** @typedef {import('../photoswipe.js').Point} Point */\n\n/** @typedef {'imageClick' | 'bgClick' | 'tap' | 'doubleTap'} Actions */\n\n/**\r\n * Whether the tap was performed on the main slide\r\n * (rather than controls or caption).\r\n *\r\n * @param {PointerEvent} event\r\n * @returns {boolean}\r\n */\nfunction didTapOnMainContent(event) {\n  return !!\n  /** @type {HTMLElement} */\n  event.target.closest('.pswp__container');\n}\n/**\r\n * Tap, double-tap handler.\r\n */\n\n\nclass TapHandler {\n  /**\r\n   * @param {Gestures} gestures\r\n   */\n  constructor(gestures) {\n    this.gestures = gestures;\n  }\n  /**\r\n   * @param {Point} point\r\n   * @param {PointerEvent} originalEvent\r\n   */\n\n\n  click(point, originalEvent) {\n    const targetClassList =\n    /** @type {HTMLElement} */\n    originalEvent.target.classList;\n    const isImageClick = targetClassList.contains('pswp__img');\n    const isBackgroundClick = targetClassList.contains('pswp__item') || targetClassList.contains('pswp__zoom-wrap');\n\n    if (isImageClick) {\n      this._doClickOrTapAction('imageClick', point, originalEvent);\n    } else if (isBackgroundClick) {\n      this._doClickOrTapAction('bgClick', point, originalEvent);\n    }\n  }\n  /**\r\n   * @param {Point} point\r\n   * @param {PointerEvent} originalEvent\r\n   */\n\n\n  tap(point, originalEvent) {\n    if (didTapOnMainContent(originalEvent)) {\n      this._doClickOrTapAction('tap', point, originalEvent);\n    }\n  }\n  /**\r\n   * @param {Point} point\r\n   * @param {PointerEvent} originalEvent\r\n   */\n\n\n  doubleTap(point, originalEvent) {\n    if (didTapOnMainContent(originalEvent)) {\n      this._doClickOrTapAction('doubleTap', point, originalEvent);\n    }\n  }\n  /**\r\n   * @private\r\n   * @param {Actions} actionName\r\n   * @param {Point} point\r\n   * @param {PointerEvent} originalEvent\r\n   */\n\n\n  _doClickOrTapAction(actionName, point, originalEvent) {\n    var _this$gestures$pswp$e;\n\n    const {\n      pswp\n    } = this.gestures;\n    const {\n      currSlide\n    } = pswp;\n    const actionFullName =\n    /** @type {AddPostfix<Actions, 'Action'>} */\n    actionName + 'Action';\n    const optionValue = pswp.options[actionFullName];\n\n    if (pswp.dispatch(actionFullName, {\n      point,\n      originalEvent\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (typeof optionValue === 'function') {\n      optionValue.call(pswp, point, originalEvent);\n      return;\n    }\n\n    switch (optionValue) {\n      case 'close':\n      case 'next':\n        pswp[optionValue]();\n        break;\n\n      case 'zoom':\n        currSlide === null || currSlide === void 0 || currSlide.toggleZoom(point);\n        break;\n\n      case 'zoom-or-close':\n        // by default click zooms current image,\n        // if it can not be zoomed - gallery will be closed\n        if (currSlide !== null && currSlide !== void 0 && currSlide.isZoomable() && currSlide.zoomLevels.secondary !== currSlide.zoomLevels.initial) {\n          currSlide.toggleZoom(point);\n        } else if (pswp.options.clickToCloseNonZoomable) {\n          pswp.close();\n        }\n\n        break;\n\n      case 'toggle-controls':\n        (_this$gestures$pswp$e = this.gestures.pswp.element) === null || _this$gestures$pswp$e === void 0 || _this$gestures$pswp$e.classList.toggle('pswp--ui-visible'); // if (_controlsVisible) {\n        //   _ui.hideControls();\n        // } else {\n        //   _ui.showControls();\n        // }\n\n        break;\n    }\n  }\n\n}\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {import('../photoswipe.js').Point} Point */\n// How far should user should drag\n// until we can determine that the gesture is swipe and its direction\n\nconst AXIS_SWIPE_HYSTERISIS = 10; //const PAN_END_FRICTION = 0.35;\n\nconst DOUBLE_TAP_DELAY = 300; // ms\n\nconst MIN_TAP_DISTANCE = 25; // px\n\n/**\r\n * Gestures class bind touch, pointer or mouse events\r\n * and emits drag to drag-handler and zoom events zoom-handler.\r\n *\r\n * Drag and zoom events are emited in requestAnimationFrame,\r\n * and only when one of pointers was actually changed.\r\n */\n\nclass Gestures {\n  /**\r\n   * @param {PhotoSwipe} pswp\r\n   */\n  constructor(pswp) {\n    this.pswp = pswp;\n    /** @type {'x' | 'y' | null} */\n\n    this.dragAxis = null; // point objects are defined once and reused\n    // PhotoSwipe keeps track only of two pointers, others are ignored\n\n    /** @type {Point} */\n\n    this.p1 = {\n      x: 0,\n      y: 0\n    }; // the first pressed pointer\n\n    /** @type {Point} */\n\n    this.p2 = {\n      x: 0,\n      y: 0\n    }; // the second pressed pointer\n\n    /** @type {Point} */\n\n    this.prevP1 = {\n      x: 0,\n      y: 0\n    };\n    /** @type {Point} */\n\n    this.prevP2 = {\n      x: 0,\n      y: 0\n    };\n    /** @type {Point} */\n\n    this.startP1 = {\n      x: 0,\n      y: 0\n    };\n    /** @type {Point} */\n\n    this.startP2 = {\n      x: 0,\n      y: 0\n    };\n    /** @type {Point} */\n\n    this.velocity = {\n      x: 0,\n      y: 0\n    };\n    /** @type {Point}\r\n     * @private\r\n     */\n\n    this._lastStartP1 = {\n      x: 0,\n      y: 0\n    };\n    /** @type {Point}\r\n     * @private\r\n     */\n\n    this._intervalP1 = {\n      x: 0,\n      y: 0\n    };\n    /** @private */\n\n    this._numActivePoints = 0;\n    /** @type {Point[]}\r\n     * @private\r\n     */\n\n    this._ongoingPointers = [];\n    /** @private */\n\n    this._touchEventEnabled = 'ontouchstart' in window;\n    /** @private */\n\n    this._pointerEventEnabled = !!window.PointerEvent;\n    this.supportsTouch = this._touchEventEnabled || this._pointerEventEnabled && navigator.maxTouchPoints > 1;\n    /** @private */\n\n    this._numActivePoints = 0;\n    /** @private */\n\n    this._intervalTime = 0;\n    /** @private */\n\n    this._velocityCalculated = false;\n    this.isMultitouch = false;\n    this.isDragging = false;\n    this.isZooming = false;\n    /** @type {number | null} */\n\n    this.raf = null;\n    /** @type {NodeJS.Timeout | null}\r\n     * @private\r\n     */\n\n    this._tapTimer = null;\n\n    if (!this.supportsTouch) {\n      // disable pan to next slide for non-touch devices\n      pswp.options.allowPanToNext = false;\n    }\n\n    this.drag = new DragHandler(this);\n    this.zoomLevels = new ZoomHandler(this);\n    this.tapHandler = new TapHandler(this);\n    pswp.on('bindEvents', () => {\n      pswp.events.add(pswp.scrollWrap, 'click',\n      /** @type EventListener */\n      this._onClick.bind(this));\n\n      if (this._pointerEventEnabled) {\n        this._bindEvents('pointer', 'down', 'up', 'cancel');\n      } else if (this._touchEventEnabled) {\n        this._bindEvents('touch', 'start', 'end', 'cancel'); // In previous versions we also bound mouse event here,\n        // in case device supports both touch and mouse events,\n        // but newer versions of browsers now support PointerEvent.\n        // on iOS10 if you bind touchmove/end after touchstart,\n        // and you don't preventDefault touchstart (which PhotoSwipe does),\n        // preventDefault will have no effect on touchmove and touchend.\n        // Unless you bind it previously.\n\n\n        if (pswp.scrollWrap) {\n          pswp.scrollWrap.ontouchmove = () => {};\n\n          pswp.scrollWrap.ontouchend = () => {};\n        }\n      } else {\n        this._bindEvents('mouse', 'down', 'up');\n      }\n    });\n  }\n  /**\r\n   * @private\r\n   * @param {'mouse' | 'touch' | 'pointer'} pref\r\n   * @param {'down' | 'start'} down\r\n   * @param {'up' | 'end'} up\r\n   * @param {'cancel'} [cancel]\r\n   */\n\n\n  _bindEvents(pref, down, up, cancel) {\n    const {\n      pswp\n    } = this;\n    const {\n      events\n    } = pswp;\n    const cancelEvent = cancel ? pref + cancel : '';\n    events.add(pswp.scrollWrap, pref + down,\n    /** @type EventListener */\n    this.onPointerDown.bind(this));\n    events.add(window, pref + 'move',\n    /** @type EventListener */\n    this.onPointerMove.bind(this));\n    events.add(window, pref + up,\n    /** @type EventListener */\n    this.onPointerUp.bind(this));\n\n    if (cancelEvent) {\n      events.add(pswp.scrollWrap, cancelEvent,\n      /** @type EventListener */\n      this.onPointerUp.bind(this));\n    }\n  }\n  /**\r\n   * @param {PointerEvent} e\r\n   */\n\n\n  onPointerDown(e) {\n    // We do not call preventDefault for touch events\n    // to allow browser to show native dialog on longpress\n    // (the one that allows to save image or open it in new tab).\n    //\n    // Desktop Safari allows to drag images when preventDefault isn't called on mousedown,\n    // even though preventDefault IS called on mousemove. That's why we preventDefault mousedown.\n    const isMousePointer = e.type === 'mousedown' || e.pointerType === 'mouse'; // Allow dragging only via left mouse button.\n    // http://www.quirksmode.org/js/events_properties.html\n    // https://developer.mozilla.org/en-US/docs/Web/API/event.button\n\n    if (isMousePointer && e.button > 0) {\n      return;\n    }\n\n    const {\n      pswp\n    } = this; // if PhotoSwipe is opening or closing\n\n    if (!pswp.opener.isOpen) {\n      e.preventDefault();\n      return;\n    }\n\n    if (pswp.dispatch('pointerDown', {\n      originalEvent: e\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (isMousePointer) {\n      pswp.mouseDetected(); // preventDefault mouse event to prevent\n      // browser image drag feature\n\n      this._preventPointerEventBehaviour(e, 'down');\n    }\n\n    pswp.animations.stopAll();\n\n    this._updatePoints(e, 'down');\n\n    if (this._numActivePoints === 1) {\n      this.dragAxis = null; // we need to store initial point to determine the main axis,\n      // drag is activated only after the axis is determined\n\n      equalizePoints(this.startP1, this.p1);\n    }\n\n    if (this._numActivePoints > 1) {\n      // Tap or double tap should not trigger if more than one pointer\n      this._clearTapTimer();\n\n      this.isMultitouch = true;\n    } else {\n      this.isMultitouch = false;\n    }\n  }\n  /**\r\n   * @param {PointerEvent} e\r\n   */\n\n\n  onPointerMove(e) {\n    this._preventPointerEventBehaviour(e, 'move');\n\n    if (!this._numActivePoints) {\n      return;\n    }\n\n    this._updatePoints(e, 'move');\n\n    if (this.pswp.dispatch('pointerMove', {\n      originalEvent: e\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (this._numActivePoints === 1 && !this.isDragging) {\n      if (!this.dragAxis) {\n        this._calculateDragDirection();\n      } // Drag axis was detected, emit drag.start\n\n\n      if (this.dragAxis && !this.isDragging) {\n        if (this.isZooming) {\n          this.isZooming = false;\n          this.zoomLevels.end();\n        }\n\n        this.isDragging = true;\n\n        this._clearTapTimer(); // Tap can not trigger after drag\n        // Adjust starting point\n\n\n        this._updateStartPoints();\n\n        this._intervalTime = Date.now(); //this._startTime = this._intervalTime;\n\n        this._velocityCalculated = false;\n        equalizePoints(this._intervalP1, this.p1);\n        this.velocity.x = 0;\n        this.velocity.y = 0;\n        this.drag.start();\n\n        this._rafStopLoop();\n\n        this._rafRenderLoop();\n      }\n    } else if (this._numActivePoints > 1 && !this.isZooming) {\n      this._finishDrag();\n\n      this.isZooming = true; // Adjust starting points\n\n      this._updateStartPoints();\n\n      this.zoomLevels.start();\n\n      this._rafStopLoop();\n\n      this._rafRenderLoop();\n    }\n  }\n  /**\r\n   * @private\r\n   */\n\n\n  _finishDrag() {\n    if (this.isDragging) {\n      this.isDragging = false; // Try to calculate velocity,\n      // if it wasn't calculated yet in drag.change\n\n      if (!this._velocityCalculated) {\n        this._updateVelocity(true);\n      }\n\n      this.drag.end();\n      this.dragAxis = null;\n    }\n  }\n  /**\r\n   * @param {PointerEvent} e\r\n   */\n\n\n  onPointerUp(e) {\n    if (!this._numActivePoints) {\n      return;\n    }\n\n    this._updatePoints(e, 'up');\n\n    if (this.pswp.dispatch('pointerUp', {\n      originalEvent: e\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (this._numActivePoints === 0) {\n      this._rafStopLoop();\n\n      if (this.isDragging) {\n        this._finishDrag();\n      } else if (!this.isZooming && !this.isMultitouch) {\n        //this.zoomLevels.correctZoomPan();\n        this._finishTap(e);\n      }\n    }\n\n    if (this._numActivePoints < 2 && this.isZooming) {\n      this.isZooming = false;\n      this.zoomLevels.end();\n\n      if (this._numActivePoints === 1) {\n        // Since we have 1 point left, we need to reinitiate drag\n        this.dragAxis = null;\n\n        this._updateStartPoints();\n      }\n    }\n  }\n  /**\r\n   * @private\r\n   */\n\n\n  _rafRenderLoop() {\n    if (this.isDragging || this.isZooming) {\n      this._updateVelocity();\n\n      if (this.isDragging) {\n        // make sure that pointer moved since the last update\n        if (!pointsEqual(this.p1, this.prevP1)) {\n          this.drag.change();\n        }\n      } else\n        /* if (this.isZooming) */\n        {\n          if (!pointsEqual(this.p1, this.prevP1) || !pointsEqual(this.p2, this.prevP2)) {\n            this.zoomLevels.change();\n          }\n        }\n\n      this._updatePrevPoints();\n\n      this.raf = requestAnimationFrame(this._rafRenderLoop.bind(this));\n    }\n  }\n  /**\r\n   * Update velocity at 50ms interval\r\n   *\r\n   * @private\r\n   * @param {boolean} [force]\r\n   */\n\n\n  _updateVelocity(force) {\n    const time = Date.now();\n    const duration = time - this._intervalTime;\n\n    if (duration < 50 && !force) {\n      return;\n    }\n\n    this.velocity.x = this._getVelocity('x', duration);\n    this.velocity.y = this._getVelocity('y', duration);\n    this._intervalTime = time;\n    equalizePoints(this._intervalP1, this.p1);\n    this._velocityCalculated = true;\n  }\n  /**\r\n   * @private\r\n   * @param {PointerEvent} e\r\n   */\n\n\n  _finishTap(e) {\n    const {\n      mainScroll\n    } = this.pswp; // Do not trigger tap events if main scroll is shifted\n\n    if (mainScroll.isShifted()) {\n      // restore main scroll position\n      // (usually happens if stopped in the middle of animation)\n      mainScroll.moveIndexBy(0, true);\n      return;\n    } // Do not trigger tap for touchcancel or pointercancel\n\n\n    if (e.type.indexOf('cancel') > 0) {\n      return;\n    } // Trigger click instead of tap for mouse events\n\n\n    if (e.type === 'mouseup' || e.pointerType === 'mouse') {\n      this.tapHandler.click(this.startP1, e);\n      return;\n    } // Disable delay if there is no doubleTapAction\n\n\n    const tapDelay = this.pswp.options.doubleTapAction ? DOUBLE_TAP_DELAY : 0; // If tapTimer is defined - we tapped recently,\n    // check if the current tap is close to the previous one,\n    // if yes - trigger double tap\n\n    if (this._tapTimer) {\n      this._clearTapTimer(); // Check if two taps were more or less on the same place\n\n\n      if (getDistanceBetween(this._lastStartP1, this.startP1) < MIN_TAP_DISTANCE) {\n        this.tapHandler.doubleTap(this.startP1, e);\n      }\n    } else {\n      equalizePoints(this._lastStartP1, this.startP1);\n      this._tapTimer = setTimeout(() => {\n        this.tapHandler.tap(this.startP1, e);\n\n        this._clearTapTimer();\n      }, tapDelay);\n    }\n  }\n  /**\r\n   * @private\r\n   */\n\n\n  _clearTapTimer() {\n    if (this._tapTimer) {\n      clearTimeout(this._tapTimer);\n      this._tapTimer = null;\n    }\n  }\n  /**\r\n   * Get velocity for axis\r\n   *\r\n   * @private\r\n   * @param {'x' | 'y'} axis\r\n   * @param {number} duration\r\n   * @returns {number}\r\n   */\n\n\n  _getVelocity(axis, duration) {\n    // displacement is like distance, but can be negative.\n    const displacement = this.p1[axis] - this._intervalP1[axis];\n\n    if (Math.abs(displacement) > 1 && duration > 5) {\n      return displacement / duration;\n    }\n\n    return 0;\n  }\n  /**\r\n   * @private\r\n   */\n\n\n  _rafStopLoop() {\n    if (this.raf) {\n      cancelAnimationFrame(this.raf);\n      this.raf = null;\n    }\n  }\n  /**\r\n   * @private\r\n   * @param {PointerEvent} e\r\n   * @param {'up' | 'down' | 'move'} pointerType Normalized pointer type\r\n   */\n\n\n  _preventPointerEventBehaviour(e, pointerType) {\n    const preventPointerEvent = this.pswp.applyFilters('preventPointerEvent', true, e, pointerType);\n\n    if (preventPointerEvent) {\n      e.preventDefault();\n    }\n  }\n  /**\r\n   * Parses and normalizes points from the touch, mouse or pointer event.\r\n   * Updates p1 and p2.\r\n   *\r\n   * @private\r\n   * @param {PointerEvent | TouchEvent} e\r\n   * @param {'up' | 'down' | 'move'} pointerType Normalized pointer type\r\n   */\n\n\n  _updatePoints(e, pointerType) {\n    if (this._pointerEventEnabled) {\n      const pointerEvent =\n      /** @type {PointerEvent} */\n      e; // Try to find the current pointer in ongoing pointers by its ID\n\n      const pointerIndex = this._ongoingPointers.findIndex(ongoingPointer => {\n        return ongoingPointer.id === pointerEvent.pointerId;\n      });\n\n      if (pointerType === 'up' && pointerIndex > -1) {\n        // release the pointer - remove it from ongoing\n        this._ongoingPointers.splice(pointerIndex, 1);\n      } else if (pointerType === 'down' && pointerIndex === -1) {\n        // add new pointer\n        this._ongoingPointers.push(this._convertEventPosToPoint(pointerEvent, {\n          x: 0,\n          y: 0\n        }));\n      } else if (pointerIndex > -1) {\n        // update existing pointer\n        this._convertEventPosToPoint(pointerEvent, this._ongoingPointers[pointerIndex]);\n      }\n\n      this._numActivePoints = this._ongoingPointers.length; // update points that PhotoSwipe uses\n      // to calculate position and scale\n\n      if (this._numActivePoints > 0) {\n        equalizePoints(this.p1, this._ongoingPointers[0]);\n      }\n\n      if (this._numActivePoints > 1) {\n        equalizePoints(this.p2, this._ongoingPointers[1]);\n      }\n    } else {\n      const touchEvent =\n      /** @type {TouchEvent} */\n      e;\n      this._numActivePoints = 0;\n\n      if (touchEvent.type.indexOf('touch') > -1) {\n        // Touch Event\n        // https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent\n        if (touchEvent.touches && touchEvent.touches.length > 0) {\n          this._convertEventPosToPoint(touchEvent.touches[0], this.p1);\n\n          this._numActivePoints++;\n\n          if (touchEvent.touches.length > 1) {\n            this._convertEventPosToPoint(touchEvent.touches[1], this.p2);\n\n            this._numActivePoints++;\n          }\n        }\n      } else {\n        // Mouse Event\n        this._convertEventPosToPoint(\n        /** @type {PointerEvent} */\n        e, this.p1);\n\n        if (pointerType === 'up') {\n          // clear all points on mouseup\n          this._numActivePoints = 0;\n        } else {\n          this._numActivePoints++;\n        }\n      }\n    }\n  }\n  /** update points that were used during previous rAF tick\r\n   * @private\r\n   */\n\n\n  _updatePrevPoints() {\n    equalizePoints(this.prevP1, this.p1);\n    equalizePoints(this.prevP2, this.p2);\n  }\n  /** update points at the start of gesture\r\n   * @private\r\n   */\n\n\n  _updateStartPoints() {\n    equalizePoints(this.startP1, this.p1);\n    equalizePoints(this.startP2, this.p2);\n\n    this._updatePrevPoints();\n  }\n  /** @private */\n\n\n  _calculateDragDirection() {\n    if (this.pswp.mainScroll.isShifted()) {\n      // if main scroll position is shifted – direction is always horizontal\n      this.dragAxis = 'x';\n    } else {\n      // calculate delta of the last touchmove tick\n      const diff = Math.abs(this.p1.x - this.startP1.x) - Math.abs(this.p1.y - this.startP1.y);\n\n      if (diff !== 0) {\n        // check if pointer was shifted horizontally or vertically\n        const axisToCheck = diff > 0 ? 'x' : 'y';\n\n        if (Math.abs(this.p1[axisToCheck] - this.startP1[axisToCheck]) >= AXIS_SWIPE_HYSTERISIS) {\n          this.dragAxis = axisToCheck;\n        }\n      }\n    }\n  }\n  /**\r\n   * Converts touch, pointer or mouse event\r\n   * to PhotoSwipe point.\r\n   *\r\n   * @private\r\n   * @param {Touch | PointerEvent} e\r\n   * @param {Point} p\r\n   * @returns {Point}\r\n   */\n\n\n  _convertEventPosToPoint(e, p) {\n    p.x = e.pageX - this.pswp.offset.x;\n    p.y = e.pageY - this.pswp.offset.y;\n\n    if ('pointerId' in e) {\n      p.id = e.pointerId;\n    } else if (e.identifier !== undefined) {\n      p.id = e.identifier;\n    }\n\n    return p;\n  }\n  /**\r\n   * @private\r\n   * @param {PointerEvent} e\r\n   */\n\n\n  _onClick(e) {\n    // Do not allow click event to pass through after drag\n    if (this.pswp.mainScroll.isShifted()) {\n      e.preventDefault();\n      e.stopPropagation();\n    }\n  }\n\n}\n\n/** @typedef {import('./photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {import('./slide/slide.js').default} Slide */\n\n/** @typedef {{ el: HTMLDivElement; slide?: Slide }} ItemHolder */\n\nconst MAIN_SCROLL_END_FRICTION = 0.35; // const MIN_SWIPE_TRANSITION_DURATION = 250;\n// const MAX_SWIPE_TRABSITION_DURATION = 500;\n// const DEFAULT_SWIPE_TRANSITION_DURATION = 333;\n\n/**\r\n * Handles movement of the main scrolling container\r\n * (for example, it repositions when user swipes left or right).\r\n *\r\n * Also stores its state.\r\n */\n\nclass MainScroll {\n  /**\r\n   * @param {PhotoSwipe} pswp\r\n   */\n  constructor(pswp) {\n    this.pswp = pswp;\n    this.x = 0;\n    this.slideWidth = 0;\n    /** @private */\n\n    this._currPositionIndex = 0;\n    /** @private */\n\n    this._prevPositionIndex = 0;\n    /** @private */\n\n    this._containerShiftIndex = -1;\n    /** @type {ItemHolder[]} */\n\n    this.itemHolders = [];\n  }\n  /**\r\n   * Position the scroller and slide containers\r\n   * according to viewport size.\r\n   *\r\n   * @param {boolean} [resizeSlides] Whether slides content should resized\r\n   */\n\n\n  resize(resizeSlides) {\n    const {\n      pswp\n    } = this;\n    const newSlideWidth = Math.round(pswp.viewportSize.x + pswp.viewportSize.x * pswp.options.spacing); // Mobile browsers might trigger a resize event during a gesture.\n    // (due to toolbar appearing or hiding).\n    // Avoid re-adjusting main scroll position if width wasn't changed\n\n    const slideWidthChanged = newSlideWidth !== this.slideWidth;\n\n    if (slideWidthChanged) {\n      this.slideWidth = newSlideWidth;\n      this.moveTo(this.getCurrSlideX());\n    }\n\n    this.itemHolders.forEach((itemHolder, index) => {\n      if (slideWidthChanged) {\n        setTransform(itemHolder.el, (index + this._containerShiftIndex) * this.slideWidth);\n      }\n\n      if (resizeSlides && itemHolder.slide) {\n        itemHolder.slide.resize();\n      }\n    });\n  }\n  /**\r\n   * Reset X position of the main scroller to zero\r\n   */\n\n\n  resetPosition() {\n    // Position on the main scroller (offset)\n    // it is independent from slide index\n    this._currPositionIndex = 0;\n    this._prevPositionIndex = 0; // This will force recalculation of size on next resize()\n\n    this.slideWidth = 0; // _containerShiftIndex*viewportSize will give you amount of transform of the current slide\n\n    this._containerShiftIndex = -1;\n  }\n  /**\r\n   * Create and append array of three items\r\n   * that hold data about slides in DOM\r\n   */\n\n\n  appendHolders() {\n    this.itemHolders = []; // append our three slide holders -\n    // previous, current, and next\n\n    for (let i = 0; i < 3; i++) {\n      const el = createElement('pswp__item', 'div', this.pswp.container);\n      el.setAttribute('role', 'group');\n      el.setAttribute('aria-roledescription', 'slide');\n      el.setAttribute('aria-hidden', 'true'); // hide nearby item holders until initial zoom animation finishes (to avoid extra Paints)\n\n      el.style.display = i === 1 ? 'block' : 'none';\n      this.itemHolders.push({\n        el //index: -1\n\n      });\n    }\n  }\n  /**\r\n   * Whether the main scroll can be horizontally swiped to the next or previous slide.\r\n   * @returns {boolean}\r\n   */\n\n\n  canBeSwiped() {\n    return this.pswp.getNumItems() > 1;\n  }\n  /**\r\n   * Move main scroll by X amount of slides.\r\n   * For example:\r\n   *   `-1` will move to the previous slide,\r\n   *    `0` will reset the scroll position of the current slide,\r\n   *    `3` will move three slides forward\r\n   *\r\n   * If loop option is enabled - index will be automatically looped too,\r\n   * (for example `-1` will move to the last slide of the gallery).\r\n   *\r\n   * @param {number} diff\r\n   * @param {boolean} [animate]\r\n   * @param {number} [velocityX]\r\n   * @returns {boolean} whether index was changed or not\r\n   */\n\n\n  moveIndexBy(diff, animate, velocityX) {\n    const {\n      pswp\n    } = this;\n    let newIndex = pswp.potentialIndex + diff;\n    const numSlides = pswp.getNumItems();\n\n    if (pswp.canLoop()) {\n      newIndex = pswp.getLoopedIndex(newIndex);\n      const distance = (diff + numSlides) % numSlides;\n\n      if (distance <= numSlides / 2) {\n        // go forward\n        diff = distance;\n      } else {\n        // go backwards\n        diff = distance - numSlides;\n      }\n    } else {\n      if (newIndex < 0) {\n        newIndex = 0;\n      } else if (newIndex >= numSlides) {\n        newIndex = numSlides - 1;\n      }\n\n      diff = newIndex - pswp.potentialIndex;\n    }\n\n    pswp.potentialIndex = newIndex;\n    this._currPositionIndex -= diff;\n    pswp.animations.stopMainScroll();\n    const destinationX = this.getCurrSlideX();\n\n    if (!animate) {\n      this.moveTo(destinationX);\n      this.updateCurrItem();\n    } else {\n      pswp.animations.startSpring({\n        isMainScroll: true,\n        start: this.x,\n        end: destinationX,\n        velocity: velocityX || 0,\n        naturalFrequency: 30,\n        dampingRatio: 1,\n        //0.7,\n        onUpdate: x => {\n          this.moveTo(x);\n        },\n        onComplete: () => {\n          this.updateCurrItem();\n          pswp.appendHeavy();\n        }\n      });\n      let currDiff = pswp.potentialIndex - pswp.currIndex;\n\n      if (pswp.canLoop()) {\n        const currDistance = (currDiff + numSlides) % numSlides;\n\n        if (currDistance <= numSlides / 2) {\n          // go forward\n          currDiff = currDistance;\n        } else {\n          // go backwards\n          currDiff = currDistance - numSlides;\n        }\n      } // Force-append new slides during transition\n      // if difference between slides is more than 1\n\n\n      if (Math.abs(currDiff) > 1) {\n        this.updateCurrItem();\n      }\n    }\n\n    return Boolean(diff);\n  }\n  /**\r\n   * X position of the main scroll for the current slide\r\n   * (ignores position during dragging)\r\n   * @returns {number}\r\n   */\n\n\n  getCurrSlideX() {\n    return this.slideWidth * this._currPositionIndex;\n  }\n  /**\r\n   * Whether scroll position is shifted.\r\n   * For example, it will return true if the scroll is being dragged or animated.\r\n   * @returns {boolean}\r\n   */\n\n\n  isShifted() {\n    return this.x !== this.getCurrSlideX();\n  }\n  /**\r\n   * Update slides X positions and set their content\r\n   */\n\n\n  updateCurrItem() {\n    var _this$itemHolders$;\n\n    const {\n      pswp\n    } = this;\n    const positionDifference = this._prevPositionIndex - this._currPositionIndex;\n\n    if (!positionDifference) {\n      return;\n    }\n\n    this._prevPositionIndex = this._currPositionIndex;\n    pswp.currIndex = pswp.potentialIndex;\n    let diffAbs = Math.abs(positionDifference);\n    /** @type {ItemHolder | undefined} */\n\n    let tempHolder;\n\n    if (diffAbs >= 3) {\n      this._containerShiftIndex += positionDifference + (positionDifference > 0 ? -3 : 3);\n      diffAbs = 3; // If slides are changed by 3 screens or more - clean up previous slides\n\n      this.itemHolders.forEach(itemHolder => {\n        var _itemHolder$slide;\n\n        (_itemHolder$slide = itemHolder.slide) === null || _itemHolder$slide === void 0 || _itemHolder$slide.destroy();\n        itemHolder.slide = undefined;\n      });\n    }\n\n    for (let i = 0; i < diffAbs; i++) {\n      if (positionDifference > 0) {\n        tempHolder = this.itemHolders.shift();\n\n        if (tempHolder) {\n          this.itemHolders[2] = tempHolder; // move first to last\n\n          this._containerShiftIndex++;\n          setTransform(tempHolder.el, (this._containerShiftIndex + 2) * this.slideWidth);\n          pswp.setContent(tempHolder, pswp.currIndex - diffAbs + i + 2);\n        }\n      } else {\n        tempHolder = this.itemHolders.pop();\n\n        if (tempHolder) {\n          this.itemHolders.unshift(tempHolder); // move last to first\n\n          this._containerShiftIndex--;\n          setTransform(tempHolder.el, this._containerShiftIndex * this.slideWidth);\n          pswp.setContent(tempHolder, pswp.currIndex + diffAbs - i - 2);\n        }\n      }\n    } // Reset transfrom every 50ish navigations in one direction.\n    //\n    // Otherwise transform will keep growing indefinitely,\n    // which might cause issues as browsers have a maximum transform limit.\n    // I wasn't able to reach it, but just to be safe.\n    // This should not cause noticable lag.\n\n\n    if (Math.abs(this._containerShiftIndex) > 50 && !this.isShifted()) {\n      this.resetPosition();\n      this.resize();\n    } // Pan transition might be running (and consntantly updating pan position)\n\n\n    pswp.animations.stopAllPan();\n    this.itemHolders.forEach((itemHolder, i) => {\n      if (itemHolder.slide) {\n        // Slide in the 2nd holder is always active\n        itemHolder.slide.setIsActive(i === 1);\n      }\n    });\n    pswp.currSlide = (_this$itemHolders$ = this.itemHolders[1]) === null || _this$itemHolders$ === void 0 ? void 0 : _this$itemHolders$.slide;\n    pswp.contentLoader.updateLazy(positionDifference);\n\n    if (pswp.currSlide) {\n      pswp.currSlide.applyCurrentZoomPan();\n    }\n\n    pswp.dispatch('change');\n  }\n  /**\r\n   * Move the X position of the main scroll container\r\n   *\r\n   * @param {number} x\r\n   * @param {boolean} [dragging]\r\n   */\n\n\n  moveTo(x, dragging) {\n    if (!this.pswp.canLoop() && dragging) {\n      // Apply friction\n      let newSlideIndexOffset = (this.slideWidth * this._currPositionIndex - x) / this.slideWidth;\n      newSlideIndexOffset += this.pswp.currIndex;\n      const delta = Math.round(x - this.x);\n\n      if (newSlideIndexOffset < 0 && delta > 0 || newSlideIndexOffset >= this.pswp.getNumItems() - 1 && delta < 0) {\n        x = this.x + delta * MAIN_SCROLL_END_FRICTION;\n      }\n    }\n\n    this.x = x;\n\n    if (this.pswp.container) {\n      setTransform(this.pswp.container, x);\n    }\n\n    this.pswp.dispatch('moveMainScroll', {\n      x,\n      dragging: dragging !== null && dragging !== void 0 ? dragging : false\n    });\n  }\n\n}\n\n/** @typedef {import('./photoswipe.js').default} PhotoSwipe */\n\n/**\r\n * @template T\r\n * @typedef {import('./types.js').Methods<T>} Methods<T>\r\n */\n\nconst KeyboardKeyCodesMap = {\n  Escape: 27,\n  z: 90,\n  ArrowLeft: 37,\n  ArrowUp: 38,\n  ArrowRight: 39,\n  ArrowDown: 40,\n  Tab: 9\n};\n/**\r\n * @template {keyof KeyboardKeyCodesMap} T\r\n * @param {T} key\r\n * @param {boolean} isKeySupported\r\n * @returns {T | number | undefined}\r\n */\n\nconst getKeyboardEventKey = (key, isKeySupported) => {\n  return isKeySupported ? key : KeyboardKeyCodesMap[key];\n};\n/**\r\n * - Manages keyboard shortcuts.\r\n * - Helps trap focus within photoswipe.\r\n */\n\n\nclass Keyboard {\n  /**\r\n   * @param {PhotoSwipe} pswp\r\n   */\n  constructor(pswp) {\n    this.pswp = pswp;\n    /** @private */\n\n    this._wasFocused = false;\n    pswp.on('bindEvents', () => {\n      if (pswp.options.trapFocus) {\n        // Dialog was likely opened by keyboard if initial point is not defined\n        if (!pswp.options.initialPointerPos) {\n          // focus causes layout,\n          // which causes lag during the animation,\n          // that's why we delay it until the opener transition ends\n          this._focusRoot();\n        }\n\n        pswp.events.add(document, 'focusin',\n        /** @type EventListener */\n        this._onFocusIn.bind(this));\n      }\n\n      pswp.events.add(document, 'keydown',\n      /** @type EventListener */\n      this._onKeyDown.bind(this));\n    });\n    const lastActiveElement =\n    /** @type {HTMLElement} */\n    document.activeElement;\n    pswp.on('destroy', () => {\n      if (pswp.options.returnFocus && lastActiveElement && this._wasFocused) {\n        lastActiveElement.focus();\n      }\n    });\n  }\n  /** @private */\n\n\n  _focusRoot() {\n    if (!this._wasFocused && this.pswp.element) {\n      this.pswp.element.focus();\n      this._wasFocused = true;\n    }\n  }\n  /**\r\n   * @private\r\n   * @param {KeyboardEvent} e\r\n   */\n\n\n  _onKeyDown(e) {\n    const {\n      pswp\n    } = this;\n\n    if (pswp.dispatch('keydown', {\n      originalEvent: e\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (specialKeyUsed(e)) {\n      // don't do anything if special key pressed\n      // to prevent from overriding default browser actions\n      // for example, in Chrome on Mac cmd+arrow-left returns to previous page\n      return;\n    }\n    /** @type {Methods<PhotoSwipe> | undefined} */\n\n\n    let keydownAction;\n    /** @type {'x' | 'y' | undefined} */\n\n    let axis;\n    let isForward = false;\n    const isKeySupported = ('key' in e);\n\n    switch (isKeySupported ? e.key : e.keyCode) {\n      case getKeyboardEventKey('Escape', isKeySupported):\n        if (pswp.options.escKey) {\n          keydownAction = 'close';\n        }\n\n        break;\n\n      case getKeyboardEventKey('z', isKeySupported):\n        keydownAction = 'toggleZoom';\n        break;\n\n      case getKeyboardEventKey('ArrowLeft', isKeySupported):\n        axis = 'x';\n        break;\n\n      case getKeyboardEventKey('ArrowUp', isKeySupported):\n        axis = 'y';\n        break;\n\n      case getKeyboardEventKey('ArrowRight', isKeySupported):\n        axis = 'x';\n        isForward = true;\n        break;\n\n      case getKeyboardEventKey('ArrowDown', isKeySupported):\n        isForward = true;\n        axis = 'y';\n        break;\n\n      case getKeyboardEventKey('Tab', isKeySupported):\n        this._focusRoot();\n\n        break;\n    } // if left/right/top/bottom key\n\n\n    if (axis) {\n      // prevent page scroll\n      e.preventDefault();\n      const {\n        currSlide\n      } = pswp;\n\n      if (pswp.options.arrowKeys && axis === 'x' && pswp.getNumItems() > 1) {\n        keydownAction = isForward ? 'next' : 'prev';\n      } else if (currSlide && currSlide.currZoomLevel > currSlide.zoomLevels.fit) {\n        // up/down arrow keys pan the image vertically\n        // left/right arrow keys pan horizontally.\n        // Unless there is only one image,\n        // or arrowKeys option is disabled\n        currSlide.pan[axis] += isForward ? -80 : 80;\n        currSlide.panTo(currSlide.pan.x, currSlide.pan.y);\n      }\n    }\n\n    if (keydownAction) {\n      e.preventDefault(); // @ts-ignore\n\n      pswp[keydownAction]();\n    }\n  }\n  /**\r\n   * Trap focus inside photoswipe\r\n   *\r\n   * @private\r\n   * @param {FocusEvent} e\r\n   */\n\n\n  _onFocusIn(e) {\n    const {\n      template\n    } = this.pswp;\n\n    if (template && document !== e.target && template !== e.target && !template.contains(\n    /** @type {Node} */\n    e.target)) {\n      // focus root element\n      template.focus();\n    }\n  }\n\n}\n\nconst DEFAULT_EASING = 'cubic-bezier(.4,0,.22,1)';\n/** @typedef {import('./animations.js').SharedAnimationProps} SharedAnimationProps */\n\n/** @typedef {Object} DefaultCssAnimationProps\r\n *\r\n * @prop {HTMLElement} target\r\n * @prop {number} [duration]\r\n * @prop {string} [easing]\r\n * @prop {string} [transform]\r\n * @prop {string} [opacity]\r\n * */\n\n/** @typedef {SharedAnimationProps & DefaultCssAnimationProps} CssAnimationProps */\n\n/**\r\n * Runs CSS transition.\r\n */\n\nclass CSSAnimation {\n  /**\r\n   * onComplete can be unpredictable, be careful about current state\r\n   *\r\n   * @param {CssAnimationProps} props\r\n   */\n  constructor(props) {\n    var _props$prop;\n\n    this.props = props;\n    const {\n      target,\n      onComplete,\n      transform,\n      onFinish = () => {},\n      duration = 333,\n      easing = DEFAULT_EASING\n    } = props;\n    this.onFinish = onFinish; // support only transform and opacity\n\n    const prop = transform ? 'transform' : 'opacity';\n    const propValue = (_props$prop = props[prop]) !== null && _props$prop !== void 0 ? _props$prop : '';\n    /** @private */\n\n    this._target = target;\n    /** @private */\n\n    this._onComplete = onComplete;\n    /** @private */\n\n    this._finished = false;\n    /** @private */\n\n    this._onTransitionEnd = this._onTransitionEnd.bind(this); // Using timeout hack to make sure that animation\n    // starts even if the animated property was changed recently,\n    // otherwise transitionend might not fire or transition won't start.\n    // https://drafts.csswg.org/css-transitions/#starting\n    //\n    // ¯\\_(ツ)_/¯\n\n    /** @private */\n\n    this._helperTimeout = setTimeout(() => {\n      setTransitionStyle(target, prop, duration, easing);\n      this._helperTimeout = setTimeout(() => {\n        target.addEventListener('transitionend', this._onTransitionEnd, false);\n        target.addEventListener('transitioncancel', this._onTransitionEnd, false); // Safari occasionally does not emit transitionend event\n        // if element property was modified during the transition,\n        // which may be caused by resize or third party component,\n        // using timeout as a safety fallback\n\n        this._helperTimeout = setTimeout(() => {\n          this._finalizeAnimation();\n        }, duration + 500);\n        target.style[prop] = propValue;\n      }, 30); // Do not reduce this number\n    }, 0);\n  }\n  /**\r\n   * @private\r\n   * @param {TransitionEvent} e\r\n   */\n\n\n  _onTransitionEnd(e) {\n    if (e.target === this._target) {\n      this._finalizeAnimation();\n    }\n  }\n  /**\r\n   * @private\r\n   */\n\n\n  _finalizeAnimation() {\n    if (!this._finished) {\n      this._finished = true;\n      this.onFinish();\n\n      if (this._onComplete) {\n        this._onComplete();\n      }\n    }\n  } // Destroy is called automatically onFinish\n\n\n  destroy() {\n    if (this._helperTimeout) {\n      clearTimeout(this._helperTimeout);\n    }\n\n    removeTransitionStyle(this._target);\n\n    this._target.removeEventListener('transitionend', this._onTransitionEnd, false);\n\n    this._target.removeEventListener('transitioncancel', this._onTransitionEnd, false);\n\n    if (!this._finished) {\n      this._finalizeAnimation();\n    }\n  }\n\n}\n\nconst DEFAULT_NATURAL_FREQUENCY = 12;\nconst DEFAULT_DAMPING_RATIO = 0.75;\n/**\r\n * Spring easing helper\r\n */\n\nclass SpringEaser {\n  /**\r\n   * @param {number} initialVelocity Initial velocity, px per ms.\r\n   *\r\n   * @param {number} [dampingRatio]\r\n   * Determines how bouncy animation will be.\r\n   * From 0 to 1, 0 - always overshoot, 1 - do not overshoot.\r\n   * \"overshoot\" refers to part of animation that\r\n   * goes beyond the final value.\r\n   *\r\n   * @param {number} [naturalFrequency]\r\n   * Determines how fast animation will slow down.\r\n   * The higher value - the stiffer the transition will be,\r\n   * and the faster it will slow down.\r\n   * Recommended value from 10 to 50\r\n   */\n  constructor(initialVelocity, dampingRatio, naturalFrequency) {\n    this.velocity = initialVelocity * 1000; // convert to \"pixels per second\"\n    // https://en.wikipedia.org/wiki/Damping_ratio\n\n    this._dampingRatio = dampingRatio || DEFAULT_DAMPING_RATIO; // https://en.wikipedia.org/wiki/Natural_frequency\n\n    this._naturalFrequency = naturalFrequency || DEFAULT_NATURAL_FREQUENCY;\n    this._dampedFrequency = this._naturalFrequency;\n\n    if (this._dampingRatio < 1) {\n      this._dampedFrequency *= Math.sqrt(1 - this._dampingRatio * this._dampingRatio);\n    }\n  }\n  /**\r\n   * @param {number} deltaPosition Difference between current and end position of the animation\r\n   * @param {number} deltaTime Frame duration in milliseconds\r\n   *\r\n   * @returns {number} Displacement, relative to the end position.\r\n   */\n\n\n  easeFrame(deltaPosition, deltaTime) {\n    // Inspired by Apple Webkit and Android spring function implementation\n    // https://en.wikipedia.org/wiki/Oscillation\n    // https://en.wikipedia.org/wiki/Damping_ratio\n    // we ignore mass (assume that it's 1kg)\n    let displacement = 0;\n    let coeff;\n    deltaTime /= 1000;\n    const naturalDumpingPow = Math.E ** (-this._dampingRatio * this._naturalFrequency * deltaTime);\n\n    if (this._dampingRatio === 1) {\n      coeff = this.velocity + this._naturalFrequency * deltaPosition;\n      displacement = (deltaPosition + coeff * deltaTime) * naturalDumpingPow;\n      this.velocity = displacement * -this._naturalFrequency + coeff * naturalDumpingPow;\n    } else if (this._dampingRatio < 1) {\n      coeff = 1 / this._dampedFrequency * (this._dampingRatio * this._naturalFrequency * deltaPosition + this.velocity);\n      const dumpedFCos = Math.cos(this._dampedFrequency * deltaTime);\n      const dumpedFSin = Math.sin(this._dampedFrequency * deltaTime);\n      displacement = naturalDumpingPow * (deltaPosition * dumpedFCos + coeff * dumpedFSin);\n      this.velocity = displacement * -this._naturalFrequency * this._dampingRatio + naturalDumpingPow * (-this._dampedFrequency * deltaPosition * dumpedFSin + this._dampedFrequency * coeff * dumpedFCos);\n    } // Overdamped (>1) damping ratio is not supported\n\n\n    return displacement;\n  }\n\n}\n\n/** @typedef {import('./animations.js').SharedAnimationProps} SharedAnimationProps */\n\n/**\r\n * @typedef {Object} DefaultSpringAnimationProps\r\n *\r\n * @prop {number} start\r\n * @prop {number} end\r\n * @prop {number} velocity\r\n * @prop {number} [dampingRatio]\r\n * @prop {number} [naturalFrequency]\r\n * @prop {(end: number) => void} onUpdate\r\n */\n\n/** @typedef {SharedAnimationProps & DefaultSpringAnimationProps} SpringAnimationProps */\n\nclass SpringAnimation {\n  /**\r\n   * @param {SpringAnimationProps} props\r\n   */\n  constructor(props) {\n    this.props = props;\n    this._raf = 0;\n    const {\n      start,\n      end,\n      velocity,\n      onUpdate,\n      onComplete,\n      onFinish = () => {},\n      dampingRatio,\n      naturalFrequency\n    } = props;\n    this.onFinish = onFinish;\n    const easer = new SpringEaser(velocity, dampingRatio, naturalFrequency);\n    let prevTime = Date.now();\n    let deltaPosition = start - end;\n\n    const animationLoop = () => {\n      if (this._raf) {\n        deltaPosition = easer.easeFrame(deltaPosition, Date.now() - prevTime); // Stop the animation if velocity is low and position is close to end\n\n        if (Math.abs(deltaPosition) < 1 && Math.abs(easer.velocity) < 50) {\n          // Finalize the animation\n          onUpdate(end);\n\n          if (onComplete) {\n            onComplete();\n          }\n\n          this.onFinish();\n        } else {\n          prevTime = Date.now();\n          onUpdate(deltaPosition + end);\n          this._raf = requestAnimationFrame(animationLoop);\n        }\n      }\n    };\n\n    this._raf = requestAnimationFrame(animationLoop);\n  } // Destroy is called automatically onFinish\n\n\n  destroy() {\n    if (this._raf >= 0) {\n      cancelAnimationFrame(this._raf);\n    }\n\n    this._raf = 0;\n  }\n\n}\n\n/** @typedef {import('./css-animation.js').CssAnimationProps} CssAnimationProps */\n\n/** @typedef {import('./spring-animation.js').SpringAnimationProps} SpringAnimationProps */\n\n/** @typedef {Object} SharedAnimationProps\r\n * @prop {string} [name]\r\n * @prop {boolean} [isPan]\r\n * @prop {boolean} [isMainScroll]\r\n * @prop {VoidFunction} [onComplete]\r\n * @prop {VoidFunction} [onFinish]\r\n */\n\n/** @typedef {SpringAnimation | CSSAnimation} Animation */\n\n/** @typedef {SpringAnimationProps | CssAnimationProps} AnimationProps */\n\n/**\r\n * Manages animations\r\n */\n\nclass Animations {\n  constructor() {\n    /** @type {Animation[]} */\n    this.activeAnimations = [];\n  }\n  /**\r\n   * @param {SpringAnimationProps} props\r\n   */\n\n\n  startSpring(props) {\n    this._start(props, true);\n  }\n  /**\r\n   * @param {CssAnimationProps} props\r\n   */\n\n\n  startTransition(props) {\n    this._start(props);\n  }\n  /**\r\n   * @private\r\n   * @param {AnimationProps} props\r\n   * @param {boolean} [isSpring]\r\n   * @returns {Animation}\r\n   */\n\n\n  _start(props, isSpring) {\n    const animation = isSpring ? new SpringAnimation(\n    /** @type SpringAnimationProps */\n    props) : new CSSAnimation(\n    /** @type CssAnimationProps */\n    props);\n    this.activeAnimations.push(animation);\n\n    animation.onFinish = () => this.stop(animation);\n\n    return animation;\n  }\n  /**\r\n   * @param {Animation} animation\r\n   */\n\n\n  stop(animation) {\n    animation.destroy();\n    const index = this.activeAnimations.indexOf(animation);\n\n    if (index > -1) {\n      this.activeAnimations.splice(index, 1);\n    }\n  }\n\n  stopAll() {\n    // _stopAllAnimations\n    this.activeAnimations.forEach(animation => {\n      animation.destroy();\n    });\n    this.activeAnimations = [];\n  }\n  /**\r\n   * Stop all pan or zoom transitions\r\n   */\n\n\n  stopAllPan() {\n    this.activeAnimations = this.activeAnimations.filter(animation => {\n      if (animation.props.isPan) {\n        animation.destroy();\n        return false;\n      }\n\n      return true;\n    });\n  }\n\n  stopMainScroll() {\n    this.activeAnimations = this.activeAnimations.filter(animation => {\n      if (animation.props.isMainScroll) {\n        animation.destroy();\n        return false;\n      }\n\n      return true;\n    });\n  }\n  /**\r\n   * Returns true if main scroll transition is running\r\n   */\n  // isMainScrollRunning() {\n  //   return this.activeAnimations.some((animation) => {\n  //     return animation.props.isMainScroll;\n  //   });\n  // }\n\n  /**\r\n   * Returns true if any pan or zoom transition is running\r\n   */\n\n\n  isPanRunning() {\n    return this.activeAnimations.some(animation => {\n      return animation.props.isPan;\n    });\n  }\n\n}\n\n/** @typedef {import('./photoswipe.js').default} PhotoSwipe */\n\n/**\r\n * Handles scroll wheel.\r\n * Can pan and zoom current slide image.\r\n */\nclass ScrollWheel {\n  /**\r\n   * @param {PhotoSwipe} pswp\r\n   */\n  constructor(pswp) {\n    this.pswp = pswp;\n    pswp.events.add(pswp.element, 'wheel',\n    /** @type EventListener */\n    this._onWheel.bind(this));\n  }\n  /**\r\n   * @private\r\n   * @param {WheelEvent} e\r\n   */\n\n\n  _onWheel(e) {\n    e.preventDefault();\n    const {\n      currSlide\n    } = this.pswp;\n    let {\n      deltaX,\n      deltaY\n    } = e;\n\n    if (!currSlide) {\n      return;\n    }\n\n    if (this.pswp.dispatch('wheel', {\n      originalEvent: e\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (e.ctrlKey || this.pswp.options.wheelToZoom) {\n      // zoom\n      if (currSlide.isZoomable()) {\n        let zoomFactor = -deltaY;\n\n        if (e.deltaMode === 1\n        /* DOM_DELTA_LINE */\n        ) {\n          zoomFactor *= 0.05;\n        } else {\n          zoomFactor *= e.deltaMode ? 1 : 0.002;\n        }\n\n        zoomFactor = 2 ** zoomFactor;\n        const destZoomLevel = currSlide.currZoomLevel * zoomFactor;\n        currSlide.zoomTo(destZoomLevel, {\n          x: e.clientX,\n          y: e.clientY\n        });\n      }\n    } else {\n      // pan\n      if (currSlide.isPannable()) {\n        if (e.deltaMode === 1\n        /* DOM_DELTA_LINE */\n        ) {\n          // 18 - average line height\n          deltaX *= 18;\n          deltaY *= 18;\n        }\n\n        currSlide.panTo(currSlide.pan.x - deltaX, currSlide.pan.y - deltaY);\n      }\n    }\n  }\n\n}\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/**\r\n * @template T\r\n * @typedef {import('../types.js').Methods<T>} Methods<T>\r\n */\n\n/**\r\n * @typedef {Object} UIElementMarkupProps\r\n * @prop {boolean} [isCustomSVG]\r\n * @prop {string} inner\r\n * @prop {string} [outlineID]\r\n * @prop {number | string} [size]\r\n */\n\n/**\r\n * @typedef {Object} UIElementData\r\n * @prop {DefaultUIElements | string} [name]\r\n * @prop {string} [className]\r\n * @prop {UIElementMarkup} [html]\r\n * @prop {boolean} [isButton]\r\n * @prop {keyof HTMLElementTagNameMap} [tagName]\r\n * @prop {string} [title]\r\n * @prop {string} [ariaLabel]\r\n * @prop {(element: HTMLElement, pswp: PhotoSwipe) => void} [onInit]\r\n * @prop {Methods<PhotoSwipe> | ((e: MouseEvent, element: HTMLElement, pswp: PhotoSwipe) => void)} [onClick]\r\n * @prop {'bar' | 'wrapper' | 'root'} [appendTo]\r\n * @prop {number} [order]\r\n */\n\n/** @typedef {'arrowPrev' | 'arrowNext' | 'close' | 'zoom' | 'counter'} DefaultUIElements */\n\n/** @typedef {string | UIElementMarkupProps} UIElementMarkup */\n\n/**\r\n * @param {UIElementMarkup} [htmlData]\r\n * @returns {string}\r\n */\n\nfunction addElementHTML(htmlData) {\n  if (typeof htmlData === 'string') {\n    // Allow developers to provide full svg,\n    // For example:\n    // <svg viewBox=\"0 0 32 32\" width=\"32\" height=\"32\" aria-hidden=\"true\" class=\"pswp__icn\">\n    //   <path d=\"...\" />\n    //   <circle ... />\n    // </svg>\n    // Can also be any HTML string.\n    return htmlData;\n  }\n\n  if (!htmlData || !htmlData.isCustomSVG) {\n    return '';\n  }\n\n  const svgData = htmlData;\n  let out = '<svg aria-hidden=\"true\" class=\"pswp__icn\" viewBox=\"0 0 %d %d\" width=\"%d\" height=\"%d\">'; // replace all %d with size\n\n  out = out.split('%d').join(\n  /** @type {string} */\n  svgData.size || 32); // Icons may contain outline/shadow,\n  // to make it we \"clone\" base icon shape and add border to it.\n  // Icon itself and border are styled via CSS.\n  //\n  // Property shadowID defines ID of element that should be cloned.\n\n  if (svgData.outlineID) {\n    out += '<use class=\"pswp__icn-shadow\" xlink:href=\"#' + svgData.outlineID + '\"/>';\n  }\n\n  out += svgData.inner;\n  out += '</svg>';\n  return out;\n}\n\nclass UIElement {\n  /**\r\n   * @param {PhotoSwipe} pswp\r\n   * @param {UIElementData} data\r\n   */\n  constructor(pswp, data) {\n    var _container;\n\n    const name = data.name || data.className;\n    let elementHTML = data.html; // @ts-expect-error lookup only by `data.name` maybe?\n\n    if (pswp.options[name] === false) {\n      // exit if element is disabled from options\n      return;\n    } // Allow to override SVG icons from options\n    // @ts-expect-error lookup only by `data.name` maybe?\n\n\n    if (typeof pswp.options[name + 'SVG'] === 'string') {\n      // arrowPrevSVG\n      // arrowNextSVG\n      // closeSVG\n      // zoomSVG\n      // @ts-expect-error lookup only by `data.name` maybe?\n      elementHTML = pswp.options[name + 'SVG'];\n    }\n\n    pswp.dispatch('uiElementCreate', {\n      data\n    });\n    let className = '';\n\n    if (data.isButton) {\n      className += 'pswp__button ';\n      className += data.className || `pswp__button--${data.name}`;\n    } else {\n      className += data.className || `pswp__${data.name}`;\n    }\n\n    let tagName = data.isButton ? data.tagName || 'button' : data.tagName || 'div';\n    tagName =\n    /** @type {keyof HTMLElementTagNameMap} */\n    tagName.toLowerCase();\n    /** @type {HTMLElement} */\n\n    const element = createElement(className, tagName);\n\n    if (data.isButton) {\n      if (tagName === 'button') {\n        /** @type {HTMLButtonElement} */\n        element.type = 'button';\n      }\n\n      let {\n        title\n      } = data;\n      const {\n        ariaLabel\n      } = data; // @ts-expect-error lookup only by `data.name` maybe?\n\n      if (typeof pswp.options[name + 'Title'] === 'string') {\n        // @ts-expect-error lookup only by `data.name` maybe?\n        title = pswp.options[name + 'Title'];\n      }\n\n      if (title) {\n        element.title = title;\n      }\n\n      const ariaText = ariaLabel || title;\n\n      if (ariaText) {\n        element.setAttribute('aria-label', ariaText);\n      }\n    }\n\n    element.innerHTML = addElementHTML(elementHTML);\n\n    if (data.onInit) {\n      data.onInit(element, pswp);\n    }\n\n    if (data.onClick) {\n      element.onclick = e => {\n        if (typeof data.onClick === 'string') {\n          // @ts-ignore\n          pswp[data.onClick]();\n        } else if (typeof data.onClick === 'function') {\n          data.onClick(e, element, pswp);\n        }\n      };\n    } // Top bar is default position\n\n\n    const appendTo = data.appendTo || 'bar';\n    /** @type {HTMLElement | undefined} root element by default */\n\n    let container = pswp.element;\n\n    if (appendTo === 'bar') {\n      if (!pswp.topBar) {\n        pswp.topBar = createElement('pswp__top-bar pswp__hide-on-close', 'div', pswp.scrollWrap);\n      }\n\n      container = pswp.topBar;\n    } else {\n      // element outside of top bar gets a secondary class\n      // that makes element fade out on close\n      element.classList.add('pswp__hide-on-close');\n\n      if (appendTo === 'wrapper') {\n        container = pswp.scrollWrap;\n      }\n    }\n\n    (_container = container) === null || _container === void 0 || _container.appendChild(pswp.applyFilters('uiElement', element, data));\n  }\n\n}\n\n/*\r\n  Backward and forward arrow buttons\r\n */\n\n/** @typedef {import('./ui-element.js').UIElementData} UIElementData */\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/**\r\n *\r\n * @param {HTMLElement} element\r\n * @param {PhotoSwipe} pswp\r\n * @param {boolean} [isNextButton]\r\n */\nfunction initArrowButton(element, pswp, isNextButton) {\n  element.classList.add('pswp__button--arrow'); // TODO: this should point to a unique id for this instance\n\n  element.setAttribute('aria-controls', 'pswp__items');\n  pswp.on('change', () => {\n    if (!pswp.options.loop) {\n      if (isNextButton) {\n        /** @type {HTMLButtonElement} */\n        element.disabled = !(pswp.currIndex < pswp.getNumItems() - 1);\n      } else {\n        /** @type {HTMLButtonElement} */\n        element.disabled = !(pswp.currIndex > 0);\n      }\n    }\n  });\n}\n/** @type {UIElementData} */\n\n\nconst arrowPrev = {\n  name: 'arrowPrev',\n  className: 'pswp__button--arrow--prev',\n  title: 'Previous',\n  order: 10,\n  isButton: true,\n  appendTo: 'wrapper',\n  html: {\n    isCustomSVG: true,\n    size: 60,\n    inner: '<path d=\"M29 43l-3 3-16-16 16-16 3 3-13 13 13 13z\" id=\"pswp__icn-arrow\"/>',\n    outlineID: 'pswp__icn-arrow'\n  },\n  onClick: 'prev',\n  onInit: initArrowButton\n};\n/** @type {UIElementData} */\n\nconst arrowNext = {\n  name: 'arrowNext',\n  className: 'pswp__button--arrow--next',\n  title: 'Next',\n  order: 11,\n  isButton: true,\n  appendTo: 'wrapper',\n  html: {\n    isCustomSVG: true,\n    size: 60,\n    inner: '<use xlink:href=\"#pswp__icn-arrow\"/>',\n    outlineID: 'pswp__icn-arrow'\n  },\n  onClick: 'next',\n  onInit: (el, pswp) => {\n    initArrowButton(el, pswp, true);\n  }\n};\n\n/** @type {import('./ui-element.js').UIElementData} UIElementData */\nconst closeButton = {\n  name: 'close',\n  title: 'Close',\n  order: 20,\n  isButton: true,\n  html: {\n    isCustomSVG: true,\n    inner: '<path d=\"M24 10l-2-2-6 6-6-6-2 2 6 6-6 6 2 2 6-6 6 6 2-2-6-6z\" id=\"pswp__icn-close\"/>',\n    outlineID: 'pswp__icn-close'\n  },\n  onClick: 'close'\n};\n\n/** @type {import('./ui-element.js').UIElementData} UIElementData */\nconst zoomButton = {\n  name: 'zoom',\n  title: 'Zoom',\n  order: 10,\n  isButton: true,\n  html: {\n    isCustomSVG: true,\n    // eslint-disable-next-line max-len\n    inner: '<path d=\"M17.426 19.926a6 6 0 1 1 1.5-1.5L23 22.5 21.5 24l-4.074-4.074z\" id=\"pswp__icn-zoom\"/>' + '<path fill=\"currentColor\" class=\"pswp__zoom-icn-bar-h\" d=\"M11 16v-2h6v2z\"/>' + '<path fill=\"currentColor\" class=\"pswp__zoom-icn-bar-v\" d=\"M13 12h2v6h-2z\"/>',\n    outlineID: 'pswp__icn-zoom'\n  },\n  onClick: 'toggleZoom'\n};\n\n/** @type {import('./ui-element.js').UIElementData} UIElementData */\nconst loadingIndicator = {\n  name: 'preloader',\n  appendTo: 'bar',\n  order: 7,\n  html: {\n    isCustomSVG: true,\n    // eslint-disable-next-line max-len\n    inner: '<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M21.2 16a5.2 5.2 0 1 1-5.2-5.2V8a8 8 0 1 0 8 8h-2.8Z\" id=\"pswp__icn-loading\"/>',\n    outlineID: 'pswp__icn-loading'\n  },\n  onInit: (indicatorElement, pswp) => {\n    /** @type {boolean | undefined} */\n    let isVisible;\n    /** @type {NodeJS.Timeout | null} */\n\n    let delayTimeout = null;\n    /**\r\n     * @param {string} className\r\n     * @param {boolean} add\r\n     */\n\n    const toggleIndicatorClass = (className, add) => {\n      indicatorElement.classList.toggle('pswp__preloader--' + className, add);\n    };\n    /**\r\n     * @param {boolean} visible\r\n     */\n\n\n    const setIndicatorVisibility = visible => {\n      if (isVisible !== visible) {\n        isVisible = visible;\n        toggleIndicatorClass('active', visible);\n      }\n    };\n\n    const updatePreloaderVisibility = () => {\n      var _pswp$currSlide;\n\n      if (!((_pswp$currSlide = pswp.currSlide) !== null && _pswp$currSlide !== void 0 && _pswp$currSlide.content.isLoading())) {\n        setIndicatorVisibility(false);\n\n        if (delayTimeout) {\n          clearTimeout(delayTimeout);\n          delayTimeout = null;\n        }\n\n        return;\n      }\n\n      if (!delayTimeout) {\n        // display loading indicator with delay\n        delayTimeout = setTimeout(() => {\n          var _pswp$currSlide2;\n\n          setIndicatorVisibility(Boolean((_pswp$currSlide2 = pswp.currSlide) === null || _pswp$currSlide2 === void 0 ? void 0 : _pswp$currSlide2.content.isLoading()));\n          delayTimeout = null;\n        }, pswp.options.preloaderDelay);\n      }\n    };\n\n    pswp.on('change', updatePreloaderVisibility);\n    pswp.on('loadComplete', e => {\n      if (pswp.currSlide === e.slide) {\n        updatePreloaderVisibility();\n      }\n    }); // expose the method\n\n    if (pswp.ui) {\n      pswp.ui.updatePreloaderVisibility = updatePreloaderVisibility;\n    }\n  }\n};\n\n/** @type {import('./ui-element.js').UIElementData} UIElementData */\nconst counterIndicator = {\n  name: 'counter',\n  order: 5,\n  onInit: (counterElement, pswp) => {\n    pswp.on('change', () => {\n      counterElement.innerText = pswp.currIndex + 1 + pswp.options.indexIndicatorSep + pswp.getNumItems();\n    });\n  }\n};\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {import('./ui-element.js').UIElementData} UIElementData */\n\n/**\r\n * Set special class on element when image is zoomed.\r\n *\r\n * By default, it is used to adjust\r\n * zoom icon and zoom cursor via CSS.\r\n *\r\n * @param {HTMLElement} el\r\n * @param {boolean} isZoomedIn\r\n */\n\nfunction setZoomedIn(el, isZoomedIn) {\n  el.classList.toggle('pswp--zoomed-in', isZoomedIn);\n}\n\nclass UI {\n  /**\r\n   * @param {PhotoSwipe} pswp\r\n   */\n  constructor(pswp) {\n    this.pswp = pswp;\n    this.isRegistered = false;\n    /** @type {UIElementData[]} */\n\n    this.uiElementsData = [];\n    /** @type {(UIElement | UIElementData)[]} */\n\n    this.items = [];\n    /** @type {() => void} */\n\n    this.updatePreloaderVisibility = () => {};\n    /**\r\n     * @private\r\n     * @type {number | undefined}\r\n     */\n\n\n    this._lastUpdatedZoomLevel = undefined;\n  }\n\n  init() {\n    const {\n      pswp\n    } = this;\n    this.isRegistered = false;\n    this.uiElementsData = [closeButton, arrowPrev, arrowNext, zoomButton, loadingIndicator, counterIndicator];\n    pswp.dispatch('uiRegister'); // sort by order\n\n    this.uiElementsData.sort((a, b) => {\n      // default order is 0\n      return (a.order || 0) - (b.order || 0);\n    });\n    this.items = [];\n    this.isRegistered = true;\n    this.uiElementsData.forEach(uiElementData => {\n      this.registerElement(uiElementData);\n    });\n    pswp.on('change', () => {\n      var _pswp$element;\n\n      (_pswp$element = pswp.element) === null || _pswp$element === void 0 || _pswp$element.classList.toggle('pswp--one-slide', pswp.getNumItems() === 1);\n    });\n    pswp.on('zoomPanUpdate', () => this._onZoomPanUpdate());\n  }\n  /**\r\n   * @param {UIElementData} elementData\r\n   */\n\n\n  registerElement(elementData) {\n    if (this.isRegistered) {\n      this.items.push(new UIElement(this.pswp, elementData));\n    } else {\n      this.uiElementsData.push(elementData);\n    }\n  }\n  /**\r\n   * Fired each time zoom or pan position is changed.\r\n   * Update classes that control visibility of zoom button and cursor icon.\r\n   *\r\n   * @private\r\n   */\n\n\n  _onZoomPanUpdate() {\n    const {\n      template,\n      currSlide,\n      options\n    } = this.pswp;\n\n    if (this.pswp.opener.isClosing || !template || !currSlide) {\n      return;\n    }\n\n    let {\n      currZoomLevel\n    } = currSlide; // if not open yet - check against initial zoom level\n\n    if (!this.pswp.opener.isOpen) {\n      currZoomLevel = currSlide.zoomLevels.initial;\n    }\n\n    if (currZoomLevel === this._lastUpdatedZoomLevel) {\n      return;\n    }\n\n    this._lastUpdatedZoomLevel = currZoomLevel;\n    const currZoomLevelDiff = currSlide.zoomLevels.initial - currSlide.zoomLevels.secondary; // Initial and secondary zoom levels are almost equal\n\n    if (Math.abs(currZoomLevelDiff) < 0.01 || !currSlide.isZoomable()) {\n      // disable zoom\n      setZoomedIn(template, false);\n      template.classList.remove('pswp--zoom-allowed');\n      return;\n    }\n\n    template.classList.add('pswp--zoom-allowed');\n    const potentialZoomLevel = currZoomLevel === currSlide.zoomLevels.initial ? currSlide.zoomLevels.secondary : currSlide.zoomLevels.initial;\n    setZoomedIn(template, potentialZoomLevel <= currZoomLevel);\n\n    if (options.imageClickAction === 'zoom' || options.imageClickAction === 'zoom-or-close') {\n      template.classList.add('pswp--click-to-zoom');\n    }\n  }\n\n}\n\n/** @typedef {import('./slide.js').SlideData} SlideData */\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {{ x: number; y: number; w: number; innerRect?: { w: number; h: number; x: number; y: number } }} Bounds */\n\n/**\r\n * @param {HTMLElement} el\r\n * @returns Bounds\r\n */\nfunction getBoundsByElement(el) {\n  const thumbAreaRect = el.getBoundingClientRect();\n  return {\n    x: thumbAreaRect.left,\n    y: thumbAreaRect.top,\n    w: thumbAreaRect.width\n  };\n}\n/**\r\n * @param {HTMLElement} el\r\n * @param {number} imageWidth\r\n * @param {number} imageHeight\r\n * @returns Bounds\r\n */\n\n\nfunction getCroppedBoundsByElement(el, imageWidth, imageHeight) {\n  const thumbAreaRect = el.getBoundingClientRect(); // fill image into the area\n  // (do they same as object-fit:cover does to retrieve coordinates)\n\n  const hRatio = thumbAreaRect.width / imageWidth;\n  const vRatio = thumbAreaRect.height / imageHeight;\n  const fillZoomLevel = hRatio > vRatio ? hRatio : vRatio;\n  const offsetX = (thumbAreaRect.width - imageWidth * fillZoomLevel) / 2;\n  const offsetY = (thumbAreaRect.height - imageHeight * fillZoomLevel) / 2;\n  /**\r\n   * Coordinates of the image,\r\n   * as if it was not cropped,\r\n   * height is calculated automatically\r\n   *\r\n   * @type {Bounds}\r\n   */\n\n  const bounds = {\n    x: thumbAreaRect.left + offsetX,\n    y: thumbAreaRect.top + offsetY,\n    w: imageWidth * fillZoomLevel\n  }; // Coordinates of inner crop area\n  // relative to the image\n\n  bounds.innerRect = {\n    w: thumbAreaRect.width,\n    h: thumbAreaRect.height,\n    x: offsetX,\n    y: offsetY\n  };\n  return bounds;\n}\n/**\r\n * Get dimensions of thumbnail image\r\n * (click on which opens photoswipe or closes photoswipe to)\r\n *\r\n * @param {number} index\r\n * @param {SlideData} itemData\r\n * @param {PhotoSwipe} instance PhotoSwipe instance\r\n * @returns {Bounds | undefined}\r\n */\n\n\nfunction getThumbBounds(index, itemData, instance) {\n  // legacy event, before filters were introduced\n  const event = instance.dispatch('thumbBounds', {\n    index,\n    itemData,\n    instance\n  }); // @ts-expect-error\n\n  if (event.thumbBounds) {\n    // @ts-expect-error\n    return event.thumbBounds;\n  }\n\n  const {\n    element\n  } = itemData;\n  /** @type {Bounds | undefined} */\n\n  let thumbBounds;\n  /** @type {HTMLElement | null | undefined} */\n\n  let thumbnail;\n\n  if (element && instance.options.thumbSelector !== false) {\n    const thumbSelector = instance.options.thumbSelector || 'img';\n    thumbnail = element.matches(thumbSelector) ? element :\n    /** @type {HTMLElement | null} */\n    element.querySelector(thumbSelector);\n  }\n\n  thumbnail = instance.applyFilters('thumbEl', thumbnail, itemData, index);\n\n  if (thumbnail) {\n    if (!itemData.thumbCropped) {\n      thumbBounds = getBoundsByElement(thumbnail);\n    } else {\n      thumbBounds = getCroppedBoundsByElement(thumbnail, itemData.width || itemData.w || 0, itemData.height || itemData.h || 0);\n    }\n  }\n\n  return instance.applyFilters('thumbBounds', thumbBounds, itemData, index);\n}\n\n/** @typedef {import('../lightbox/lightbox.js').default} PhotoSwipeLightbox */\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {import('../photoswipe.js').PhotoSwipeOptions} PhotoSwipeOptions */\n\n/** @typedef {import('../photoswipe.js').DataSource} DataSource */\n\n/** @typedef {import('../ui/ui-element.js').UIElementData} UIElementData */\n\n/** @typedef {import('../slide/content.js').default} ContentDefault */\n\n/** @typedef {import('../slide/slide.js').default} Slide */\n\n/** @typedef {import('../slide/slide.js').SlideData} SlideData */\n\n/** @typedef {import('../slide/zoom-level.js').default} ZoomLevel */\n\n/** @typedef {import('../slide/get-thumb-bounds.js').Bounds} Bounds */\n\n/**\r\n * Allow adding an arbitrary props to the Content\r\n * https://photoswipe.com/custom-content/#using-webp-image-format\r\n * @typedef {ContentDefault & Record<string, any>} Content\r\n */\n\n/** @typedef {{ x?: number; y?: number }} Point */\n\n/**\r\n * @typedef {Object} PhotoSwipeEventsMap https://photoswipe.com/events/\r\n *\r\n *\r\n * https://photoswipe.com/adding-ui-elements/\r\n *\r\n * @prop {undefined} uiRegister\r\n * @prop {{ data: UIElementData }} uiElementCreate\r\n *\r\n *\r\n * https://photoswipe.com/events/#initialization-events\r\n *\r\n * @prop {undefined} beforeOpen\r\n * @prop {undefined} firstUpdate\r\n * @prop {undefined} initialLayout\r\n * @prop {undefined} change\r\n * @prop {undefined} afterInit\r\n * @prop {undefined} bindEvents\r\n *\r\n *\r\n * https://photoswipe.com/events/#opening-or-closing-transition-events\r\n *\r\n * @prop {undefined} openingAnimationStart\r\n * @prop {undefined} openingAnimationEnd\r\n * @prop {undefined} closingAnimationStart\r\n * @prop {undefined} closingAnimationEnd\r\n *\r\n *\r\n * https://photoswipe.com/events/#closing-events\r\n *\r\n * @prop {undefined} close\r\n * @prop {undefined} destroy\r\n *\r\n *\r\n * https://photoswipe.com/events/#pointer-and-gesture-events\r\n *\r\n * @prop {{ originalEvent: PointerEvent }} pointerDown\r\n * @prop {{ originalEvent: PointerEvent }} pointerMove\r\n * @prop {{ originalEvent: PointerEvent }} pointerUp\r\n * @prop {{ bgOpacity: number }} pinchClose can be default prevented\r\n * @prop {{ panY: number }} verticalDrag can be default prevented\r\n *\r\n *\r\n * https://photoswipe.com/events/#slide-content-events\r\n *\r\n * @prop {{ content: Content }} contentInit\r\n * @prop {{ content: Content; isLazy: boolean }} contentLoad can be default prevented\r\n * @prop {{ content: Content; isLazy: boolean }} contentLoadImage can be default prevented\r\n * @prop {{ content: Content; slide: Slide; isError?: boolean }} loadComplete\r\n * @prop {{ content: Content; slide: Slide }} loadError\r\n * @prop {{ content: Content; width: number; height: number }} contentResize can be default prevented\r\n * @prop {{ content: Content; width: number; height: number; slide: Slide }} imageSizeChange\r\n * @prop {{ content: Content }} contentLazyLoad can be default prevented\r\n * @prop {{ content: Content }} contentAppend can be default prevented\r\n * @prop {{ content: Content }} contentActivate can be default prevented\r\n * @prop {{ content: Content }} contentDeactivate can be default prevented\r\n * @prop {{ content: Content }} contentRemove can be default prevented\r\n * @prop {{ content: Content }} contentDestroy can be default prevented\r\n *\r\n *\r\n * undocumented\r\n *\r\n * @prop {{ point: Point; originalEvent: PointerEvent }} imageClickAction can be default prevented\r\n * @prop {{ point: Point; originalEvent: PointerEvent }} bgClickAction can be default prevented\r\n * @prop {{ point: Point; originalEvent: PointerEvent }} tapAction can be default prevented\r\n * @prop {{ point: Point; originalEvent: PointerEvent }} doubleTapAction can be default prevented\r\n *\r\n * @prop {{ originalEvent: KeyboardEvent }} keydown can be default prevented\r\n * @prop {{ x: number; dragging: boolean }} moveMainScroll\r\n * @prop {{ slide: Slide }} firstZoomPan\r\n * @prop {{ slide: Slide | undefined, data: SlideData, index: number }} gettingData\r\n * @prop {undefined} beforeResize\r\n * @prop {undefined} resize\r\n * @prop {undefined} viewportSize\r\n * @prop {undefined} updateScrollOffset\r\n * @prop {{ slide: Slide }} slideInit\r\n * @prop {{ slide: Slide }} afterSetContent\r\n * @prop {{ slide: Slide }} slideLoad\r\n * @prop {{ slide: Slide }} appendHeavy can be default prevented\r\n * @prop {{ slide: Slide }} appendHeavyContent\r\n * @prop {{ slide: Slide }} slideActivate\r\n * @prop {{ slide: Slide }} slideDeactivate\r\n * @prop {{ slide: Slide }} slideDestroy\r\n * @prop {{ destZoomLevel: number, centerPoint: Point | undefined, transitionDuration: number | false | undefined }} beforeZoomTo\r\n * @prop {{ slide: Slide }} zoomPanUpdate\r\n * @prop {{ slide: Slide }} initialZoomPan\r\n * @prop {{ slide: Slide }} calcSlideSize\r\n * @prop {undefined} resolutionChanged\r\n * @prop {{ originalEvent: WheelEvent }} wheel can be default prevented\r\n * @prop {{ content: Content }} contentAppendImage can be default prevented\r\n * @prop {{ index: number; itemData: SlideData }} lazyLoadSlide can be default prevented\r\n * @prop {undefined} lazyLoad\r\n * @prop {{ slide: Slide }} calcBounds\r\n * @prop {{ zoomLevels: ZoomLevel, slideData: SlideData }} zoomLevelsUpdate\r\n *\r\n *\r\n * legacy\r\n *\r\n * @prop {undefined} init\r\n * @prop {undefined} initialZoomIn\r\n * @prop {undefined} initialZoomOut\r\n * @prop {undefined} initialZoomInEnd\r\n * @prop {undefined} initialZoomOutEnd\r\n * @prop {{ dataSource: DataSource | undefined, numItems: number }} numItems\r\n * @prop {{ itemData: SlideData; index: number }} itemData\r\n * @prop {{ index: number, itemData: SlideData, instance: PhotoSwipe }} thumbBounds\r\n */\n\n/**\r\n * @typedef {Object} PhotoSwipeFiltersMap https://photoswipe.com/filters/\r\n *\r\n * @prop {(numItems: number, dataSource: DataSource | undefined) => number} numItems\r\n * Modify the total amount of slides. Example on Data sources page.\r\n * https://photoswipe.com/filters/#numitems\r\n *\r\n * @prop {(itemData: SlideData, index: number) => SlideData} itemData\r\n * Modify slide item data. Example on Data sources page.\r\n * https://photoswipe.com/filters/#itemdata\r\n *\r\n * @prop {(itemData: SlideData, element: HTMLElement, linkEl: HTMLAnchorElement) => SlideData} domItemData\r\n * Modify item data when it's parsed from DOM element. Example on Data sources page.\r\n * https://photoswipe.com/filters/#domitemdata\r\n *\r\n * @prop {(clickedIndex: number, e: MouseEvent, instance: PhotoSwipeLightbox) => number} clickedIndex\r\n * Modify clicked gallery item index.\r\n * https://photoswipe.com/filters/#clickedindex\r\n *\r\n * @prop {(placeholderSrc: string | false, content: Content) => string | false} placeholderSrc\r\n * Modify placeholder image source.\r\n * https://photoswipe.com/filters/#placeholdersrc\r\n *\r\n * @prop {(isContentLoading: boolean, content: Content) => boolean} isContentLoading\r\n * Modify if the content is currently loading.\r\n * https://photoswipe.com/filters/#iscontentloading\r\n *\r\n * @prop {(isContentZoomable: boolean, content: Content) => boolean} isContentZoomable\r\n * Modify if the content can be zoomed.\r\n * https://photoswipe.com/filters/#iscontentzoomable\r\n *\r\n * @prop {(useContentPlaceholder: boolean, content: Content) => boolean} useContentPlaceholder\r\n * Modify if the placeholder should be used for the content.\r\n * https://photoswipe.com/filters/#usecontentplaceholder\r\n *\r\n * @prop {(isKeepingPlaceholder: boolean, content: Content) => boolean} isKeepingPlaceholder\r\n * Modify if the placeholder should be kept after the content is loaded.\r\n * https://photoswipe.com/filters/#iskeepingplaceholder\r\n *\r\n *\r\n * @prop {(contentErrorElement: HTMLElement, content: Content) => HTMLElement} contentErrorElement\r\n * Modify an element when the content has error state (for example, if image cannot be loaded).\r\n * https://photoswipe.com/filters/#contenterrorelement\r\n *\r\n * @prop {(element: HTMLElement, data: UIElementData) => HTMLElement} uiElement\r\n * Modify a UI element that's being created.\r\n * https://photoswipe.com/filters/#uielement\r\n *\r\n * @prop {(thumbnail: HTMLElement | null | undefined, itemData: SlideData, index: number) => HTMLElement} thumbEl\r\n * Modify the thumbnail element from which opening zoom animation starts or ends.\r\n * https://photoswipe.com/filters/#thumbel\r\n *\r\n * @prop {(thumbBounds: Bounds | undefined, itemData: SlideData, index: number) => Bounds} thumbBounds\r\n * Modify the thumbnail bounds from which opening zoom animation starts or ends.\r\n * https://photoswipe.com/filters/#thumbbounds\r\n *\r\n * @prop {(srcsetSizesWidth: number, content: Content) => number} srcsetSizesWidth\r\n *\r\n * @prop {(preventPointerEvent: boolean, event: PointerEvent, pointerType: string) => boolean} preventPointerEvent\r\n *\r\n */\n\n/**\r\n * @template {keyof PhotoSwipeFiltersMap} T\r\n * @typedef {{ fn: PhotoSwipeFiltersMap[T], priority: number }} Filter\r\n */\n\n/**\r\n * @template {keyof PhotoSwipeEventsMap} T\r\n * @typedef {PhotoSwipeEventsMap[T] extends undefined ? PhotoSwipeEvent<T> : PhotoSwipeEvent<T> & PhotoSwipeEventsMap[T]} AugmentedEvent\r\n */\n\n/**\r\n * @template {keyof PhotoSwipeEventsMap} T\r\n * @typedef {(event: AugmentedEvent<T>) => void} EventCallback\r\n */\n\n/**\r\n * Base PhotoSwipe event object\r\n *\r\n * @template {keyof PhotoSwipeEventsMap} T\r\n */\nclass PhotoSwipeEvent {\n  /**\r\n   * @param {T} type\r\n   * @param {PhotoSwipeEventsMap[T]} [details]\r\n   */\n  constructor(type, details) {\n    this.type = type;\n    this.defaultPrevented = false;\n\n    if (details) {\n      Object.assign(this, details);\n    }\n  }\n\n  preventDefault() {\n    this.defaultPrevented = true;\n  }\n\n}\n/**\r\n * PhotoSwipe base class that can listen and dispatch for events.\r\n * Shared by PhotoSwipe Core and PhotoSwipe Lightbox, extended by base.js\r\n */\n\n\nclass Eventable {\n  constructor() {\n    /**\r\n     * @type {{ [T in keyof PhotoSwipeEventsMap]?: ((event: AugmentedEvent<T>) => void)[] }}\r\n     */\n    this._listeners = {};\n    /**\r\n     * @type {{ [T in keyof PhotoSwipeFiltersMap]?: Filter<T>[] }}\r\n     */\n\n    this._filters = {};\n    /** @type {PhotoSwipe | undefined} */\n\n    this.pswp = undefined;\n    /** @type {PhotoSwipeOptions | undefined} */\n\n    this.options = undefined;\n  }\n  /**\r\n   * @template {keyof PhotoSwipeFiltersMap} T\r\n   * @param {T} name\r\n   * @param {PhotoSwipeFiltersMap[T]} fn\r\n   * @param {number} priority\r\n   */\n\n\n  addFilter(name, fn, priority = 100) {\n    var _this$_filters$name, _this$_filters$name2, _this$pswp;\n\n    if (!this._filters[name]) {\n      this._filters[name] = [];\n    }\n\n    (_this$_filters$name = this._filters[name]) === null || _this$_filters$name === void 0 || _this$_filters$name.push({\n      fn,\n      priority\n    });\n    (_this$_filters$name2 = this._filters[name]) === null || _this$_filters$name2 === void 0 || _this$_filters$name2.sort((f1, f2) => f1.priority - f2.priority);\n    (_this$pswp = this.pswp) === null || _this$pswp === void 0 || _this$pswp.addFilter(name, fn, priority);\n  }\n  /**\r\n   * @template {keyof PhotoSwipeFiltersMap} T\r\n   * @param {T} name\r\n   * @param {PhotoSwipeFiltersMap[T]} fn\r\n   */\n\n\n  removeFilter(name, fn) {\n    if (this._filters[name]) {\n      // @ts-expect-error\n      this._filters[name] = this._filters[name].filter(filter => filter.fn !== fn);\n    }\n\n    if (this.pswp) {\n      this.pswp.removeFilter(name, fn);\n    }\n  }\n  /**\r\n   * @template {keyof PhotoSwipeFiltersMap} T\r\n   * @param {T} name\r\n   * @param {Parameters<PhotoSwipeFiltersMap[T]>} args\r\n   * @returns {Parameters<PhotoSwipeFiltersMap[T]>[0]}\r\n   */\n\n\n  applyFilters(name, ...args) {\n    var _this$_filters$name3;\n\n    (_this$_filters$name3 = this._filters[name]) === null || _this$_filters$name3 === void 0 || _this$_filters$name3.forEach(filter => {\n      // @ts-expect-error\n      args[0] = filter.fn.apply(this, args);\n    });\n    return args[0];\n  }\n  /**\r\n   * @template {keyof PhotoSwipeEventsMap} T\r\n   * @param {T} name\r\n   * @param {EventCallback<T>} fn\r\n   */\n\n\n  on(name, fn) {\n    var _this$_listeners$name, _this$pswp2;\n\n    if (!this._listeners[name]) {\n      this._listeners[name] = [];\n    }\n\n    (_this$_listeners$name = this._listeners[name]) === null || _this$_listeners$name === void 0 || _this$_listeners$name.push(fn); // When binding events to lightbox,\n    // also bind events to PhotoSwipe Core,\n    // if it's open.\n\n    (_this$pswp2 = this.pswp) === null || _this$pswp2 === void 0 || _this$pswp2.on(name, fn);\n  }\n  /**\r\n   * @template {keyof PhotoSwipeEventsMap} T\r\n   * @param {T} name\r\n   * @param {EventCallback<T>} fn\r\n   */\n\n\n  off(name, fn) {\n    var _this$pswp3;\n\n    if (this._listeners[name]) {\n      // @ts-expect-error\n      this._listeners[name] = this._listeners[name].filter(listener => fn !== listener);\n    }\n\n    (_this$pswp3 = this.pswp) === null || _this$pswp3 === void 0 || _this$pswp3.off(name, fn);\n  }\n  /**\r\n   * @template {keyof PhotoSwipeEventsMap} T\r\n   * @param {T} name\r\n   * @param {PhotoSwipeEventsMap[T]} [details]\r\n   * @returns {AugmentedEvent<T>}\r\n   */\n\n\n  dispatch(name, details) {\n    var _this$_listeners$name2;\n\n    if (this.pswp) {\n      return this.pswp.dispatch(name, details);\n    }\n\n    const event =\n    /** @type {AugmentedEvent<T>} */\n    new PhotoSwipeEvent(name, details);\n    (_this$_listeners$name2 = this._listeners[name]) === null || _this$_listeners$name2 === void 0 || _this$_listeners$name2.forEach(listener => {\n      listener.call(this, event);\n    });\n    return event;\n  }\n\n}\n\nclass Placeholder {\n  /**\r\n   * @param {string | false} imageSrc\r\n   * @param {HTMLElement} container\r\n   */\n  constructor(imageSrc, container) {\n    // Create placeholder\n    // (stretched thumbnail or simple div behind the main image)\n\n    /** @type {HTMLImageElement | HTMLDivElement | null} */\n    this.element = createElement('pswp__img pswp__img--placeholder', imageSrc ? 'img' : 'div', container);\n\n    if (imageSrc) {\n      const imgEl =\n      /** @type {HTMLImageElement} */\n      this.element;\n      imgEl.decoding = 'async';\n      imgEl.alt = '';\n      imgEl.src = imageSrc;\n      imgEl.setAttribute('role', 'presentation');\n    }\n\n    this.element.setAttribute('aria-hidden', 'true');\n  }\n  /**\r\n   * @param {number} width\r\n   * @param {number} height\r\n   */\n\n\n  setDisplayedSize(width, height) {\n    if (!this.element) {\n      return;\n    }\n\n    if (this.element.tagName === 'IMG') {\n      // Use transform scale() to modify img placeholder size\n      // (instead of changing width/height directly).\n      // This helps with performance, specifically in iOS15 Safari.\n      setWidthHeight(this.element, 250, 'auto');\n      this.element.style.transformOrigin = '0 0';\n      this.element.style.transform = toTransformString(0, 0, width / 250);\n    } else {\n      setWidthHeight(this.element, width, height);\n    }\n  }\n\n  destroy() {\n    var _this$element;\n\n    if ((_this$element = this.element) !== null && _this$element !== void 0 && _this$element.parentNode) {\n      this.element.remove();\n    }\n\n    this.element = null;\n  }\n\n}\n\n/** @typedef {import('./slide.js').default} Slide */\n\n/** @typedef {import('./slide.js').SlideData} SlideData */\n\n/** @typedef {import('../core/base.js').default} PhotoSwipeBase */\n\n/** @typedef {import('../util/util.js').LoadState} LoadState */\n\nclass Content {\n  /**\r\n   * @param {SlideData} itemData Slide data\r\n   * @param {PhotoSwipeBase} instance PhotoSwipe or PhotoSwipeLightbox instance\r\n   * @param {number} index\r\n   */\n  constructor(itemData, instance, index) {\n    this.instance = instance;\n    this.data = itemData;\n    this.index = index;\n    /** @type {HTMLImageElement | HTMLDivElement | undefined} */\n\n    this.element = undefined;\n    /** @type {Placeholder | undefined} */\n\n    this.placeholder = undefined;\n    /** @type {Slide | undefined} */\n\n    this.slide = undefined;\n    this.displayedImageWidth = 0;\n    this.displayedImageHeight = 0;\n    this.width = Number(this.data.w) || Number(this.data.width) || 0;\n    this.height = Number(this.data.h) || Number(this.data.height) || 0;\n    this.isAttached = false;\n    this.hasSlide = false;\n    this.isDecoding = false;\n    /** @type {LoadState} */\n\n    this.state = LOAD_STATE.IDLE;\n\n    if (this.data.type) {\n      this.type = this.data.type;\n    } else if (this.data.src) {\n      this.type = 'image';\n    } else {\n      this.type = 'html';\n    }\n\n    this.instance.dispatch('contentInit', {\n      content: this\n    });\n  }\n\n  removePlaceholder() {\n    if (this.placeholder && !this.keepPlaceholder()) {\n      // With delay, as image might be loaded, but not rendered\n      setTimeout(() => {\n        if (this.placeholder) {\n          this.placeholder.destroy();\n          this.placeholder = undefined;\n        }\n      }, 1000);\n    }\n  }\n  /**\r\n   * Preload content\r\n   *\r\n   * @param {boolean} isLazy\r\n   * @param {boolean} [reload]\r\n   */\n\n\n  load(isLazy, reload) {\n    if (this.slide && this.usePlaceholder()) {\n      if (!this.placeholder) {\n        const placeholderSrc = this.instance.applyFilters('placeholderSrc', // use  image-based placeholder only for the first slide,\n        // as rendering (even small stretched thumbnail) is an expensive operation\n        this.data.msrc && this.slide.isFirstSlide ? this.data.msrc : false, this);\n        this.placeholder = new Placeholder(placeholderSrc, this.slide.container);\n      } else {\n        const placeholderEl = this.placeholder.element; // Add placeholder to DOM if it was already created\n\n        if (placeholderEl && !placeholderEl.parentElement) {\n          this.slide.container.prepend(placeholderEl);\n        }\n      }\n    }\n\n    if (this.element && !reload) {\n      return;\n    }\n\n    if (this.instance.dispatch('contentLoad', {\n      content: this,\n      isLazy\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (this.isImageContent()) {\n      this.element = createElement('pswp__img', 'img'); // Start loading only after width is defined, as sizes might depend on it.\n      // Due to Safari feature, we must define sizes before srcset.\n\n      if (this.displayedImageWidth) {\n        this.loadImage(isLazy);\n      }\n    } else {\n      this.element = createElement('pswp__content', 'div');\n      this.element.innerHTML = this.data.html || '';\n    }\n\n    if (reload && this.slide) {\n      this.slide.updateContentSize(true);\n    }\n  }\n  /**\r\n   * Preload image\r\n   *\r\n   * @param {boolean} isLazy\r\n   */\n\n\n  loadImage(isLazy) {\n    var _this$data$src, _this$data$alt;\n\n    if (!this.isImageContent() || !this.element || this.instance.dispatch('contentLoadImage', {\n      content: this,\n      isLazy\n    }).defaultPrevented) {\n      return;\n    }\n\n    const imageElement =\n    /** @type HTMLImageElement */\n    this.element;\n    this.updateSrcsetSizes();\n\n    if (this.data.srcset) {\n      imageElement.srcset = this.data.srcset;\n    }\n\n    imageElement.src = (_this$data$src = this.data.src) !== null && _this$data$src !== void 0 ? _this$data$src : '';\n    imageElement.alt = (_this$data$alt = this.data.alt) !== null && _this$data$alt !== void 0 ? _this$data$alt : '';\n    this.state = LOAD_STATE.LOADING;\n\n    if (imageElement.complete) {\n      this.onLoaded();\n    } else {\n      imageElement.onload = () => {\n        this.onLoaded();\n      };\n\n      imageElement.onerror = () => {\n        this.onError();\n      };\n    }\n  }\n  /**\r\n   * Assign slide to content\r\n   *\r\n   * @param {Slide} slide\r\n   */\n\n\n  setSlide(slide) {\n    this.slide = slide;\n    this.hasSlide = true;\n    this.instance = slide.pswp; // todo: do we need to unset slide?\n  }\n  /**\r\n   * Content load success handler\r\n   */\n\n\n  onLoaded() {\n    this.state = LOAD_STATE.LOADED;\n\n    if (this.slide && this.element) {\n      this.instance.dispatch('loadComplete', {\n        slide: this.slide,\n        content: this\n      }); // if content is reloaded\n\n      if (this.slide.isActive && this.slide.heavyAppended && !this.element.parentNode) {\n        this.append();\n        this.slide.updateContentSize(true);\n      }\n\n      if (this.state === LOAD_STATE.LOADED || this.state === LOAD_STATE.ERROR) {\n        this.removePlaceholder();\n      }\n    }\n  }\n  /**\r\n   * Content load error handler\r\n   */\n\n\n  onError() {\n    this.state = LOAD_STATE.ERROR;\n\n    if (this.slide) {\n      this.displayError();\n      this.instance.dispatch('loadComplete', {\n        slide: this.slide,\n        isError: true,\n        content: this\n      });\n      this.instance.dispatch('loadError', {\n        slide: this.slide,\n        content: this\n      });\n    }\n  }\n  /**\r\n   * @returns {Boolean} If the content is currently loading\r\n   */\n\n\n  isLoading() {\n    return this.instance.applyFilters('isContentLoading', this.state === LOAD_STATE.LOADING, this);\n  }\n  /**\r\n   * @returns {Boolean} If the content is in error state\r\n   */\n\n\n  isError() {\n    return this.state === LOAD_STATE.ERROR;\n  }\n  /**\r\n   * @returns {boolean} If the content is image\r\n   */\n\n\n  isImageContent() {\n    return this.type === 'image';\n  }\n  /**\r\n   * Update content size\r\n   *\r\n   * @param {Number} width\r\n   * @param {Number} height\r\n   */\n\n\n  setDisplayedSize(width, height) {\n    if (!this.element) {\n      return;\n    }\n\n    if (this.placeholder) {\n      this.placeholder.setDisplayedSize(width, height);\n    }\n\n    if (this.instance.dispatch('contentResize', {\n      content: this,\n      width,\n      height\n    }).defaultPrevented) {\n      return;\n    }\n\n    setWidthHeight(this.element, width, height);\n\n    if (this.isImageContent() && !this.isError()) {\n      const isInitialSizeUpdate = !this.displayedImageWidth && width;\n      this.displayedImageWidth = width;\n      this.displayedImageHeight = height;\n\n      if (isInitialSizeUpdate) {\n        this.loadImage(false);\n      } else {\n        this.updateSrcsetSizes();\n      }\n\n      if (this.slide) {\n        this.instance.dispatch('imageSizeChange', {\n          slide: this.slide,\n          width,\n          height,\n          content: this\n        });\n      }\n    }\n  }\n  /**\r\n   * @returns {boolean} If the content can be zoomed\r\n   */\n\n\n  isZoomable() {\n    return this.instance.applyFilters('isContentZoomable', this.isImageContent() && this.state !== LOAD_STATE.ERROR, this);\n  }\n  /**\r\n   * Update image srcset sizes attribute based on width and height\r\n   */\n\n\n  updateSrcsetSizes() {\n    // Handle srcset sizes attribute.\n    //\n    // Never lower quality, if it was increased previously.\n    // Chrome does this automatically, Firefox and Safari do not,\n    // so we store largest used size in dataset.\n    if (!this.isImageContent() || !this.element || !this.data.srcset) {\n      return;\n    }\n\n    const image =\n    /** @type HTMLImageElement */\n    this.element;\n    const sizesWidth = this.instance.applyFilters('srcsetSizesWidth', this.displayedImageWidth, this);\n\n    if (!image.dataset.largestUsedSize || sizesWidth > parseInt(image.dataset.largestUsedSize, 10)) {\n      image.sizes = sizesWidth + 'px';\n      image.dataset.largestUsedSize = String(sizesWidth);\n    }\n  }\n  /**\r\n   * @returns {boolean} If content should use a placeholder (from msrc by default)\r\n   */\n\n\n  usePlaceholder() {\n    return this.instance.applyFilters('useContentPlaceholder', this.isImageContent(), this);\n  }\n  /**\r\n   * Preload content with lazy-loading param\r\n   */\n\n\n  lazyLoad() {\n    if (this.instance.dispatch('contentLazyLoad', {\n      content: this\n    }).defaultPrevented) {\n      return;\n    }\n\n    this.load(true);\n  }\n  /**\r\n   * @returns {boolean} If placeholder should be kept after content is loaded\r\n   */\n\n\n  keepPlaceholder() {\n    return this.instance.applyFilters('isKeepingPlaceholder', this.isLoading(), this);\n  }\n  /**\r\n   * Destroy the content\r\n   */\n\n\n  destroy() {\n    this.hasSlide = false;\n    this.slide = undefined;\n\n    if (this.instance.dispatch('contentDestroy', {\n      content: this\n    }).defaultPrevented) {\n      return;\n    }\n\n    this.remove();\n\n    if (this.placeholder) {\n      this.placeholder.destroy();\n      this.placeholder = undefined;\n    }\n\n    if (this.isImageContent() && this.element) {\n      this.element.onload = null;\n      this.element.onerror = null;\n      this.element = undefined;\n    }\n  }\n  /**\r\n   * Display error message\r\n   */\n\n\n  displayError() {\n    if (this.slide) {\n      var _this$instance$option, _this$instance$option2;\n\n      let errorMsgEl = createElement('pswp__error-msg', 'div');\n      errorMsgEl.innerText = (_this$instance$option = (_this$instance$option2 = this.instance.options) === null || _this$instance$option2 === void 0 ? void 0 : _this$instance$option2.errorMsg) !== null && _this$instance$option !== void 0 ? _this$instance$option : '';\n      errorMsgEl =\n      /** @type {HTMLDivElement} */\n      this.instance.applyFilters('contentErrorElement', errorMsgEl, this);\n      this.element = createElement('pswp__content pswp__error-msg-container', 'div');\n      this.element.appendChild(errorMsgEl);\n      this.slide.container.innerText = '';\n      this.slide.container.appendChild(this.element);\n      this.slide.updateContentSize(true);\n      this.removePlaceholder();\n    }\n  }\n  /**\r\n   * Append the content\r\n   */\n\n\n  append() {\n    if (this.isAttached || !this.element) {\n      return;\n    }\n\n    this.isAttached = true;\n\n    if (this.state === LOAD_STATE.ERROR) {\n      this.displayError();\n      return;\n    }\n\n    if (this.instance.dispatch('contentAppend', {\n      content: this\n    }).defaultPrevented) {\n      return;\n    }\n\n    const supportsDecode = ('decode' in this.element);\n\n    if (this.isImageContent()) {\n      // Use decode() on nearby slides\n      //\n      // Nearby slide images are in DOM and not hidden via display:none.\n      // However, they are placed offscreen (to the left and right side).\n      //\n      // Some browsers do not composite the image until it's actually visible,\n      // using decode() helps.\n      //\n      // You might ask \"why dont you just decode() and then append all images\",\n      // that's because I want to show image before it's fully loaded,\n      // as browser can render parts of image while it is loading.\n      // We do not do this in Safari due to partial loading bug.\n      if (supportsDecode && this.slide && (!this.slide.isActive || isSafari())) {\n        this.isDecoding = true; // purposefully using finally instead of then,\n        // as if srcset sizes changes dynamically - it may cause decode error\n\n        /** @type {HTMLImageElement} */\n\n        this.element.decode().catch(() => {}).finally(() => {\n          this.isDecoding = false;\n          this.appendImage();\n        });\n      } else {\n        this.appendImage();\n      }\n    } else if (this.slide && !this.element.parentNode) {\n      this.slide.container.appendChild(this.element);\n    }\n  }\n  /**\r\n   * Activate the slide,\r\n   * active slide is generally the current one,\r\n   * meaning the user can see it.\r\n   */\n\n\n  activate() {\n    if (this.instance.dispatch('contentActivate', {\n      content: this\n    }).defaultPrevented || !this.slide) {\n      return;\n    }\n\n    if (this.isImageContent() && this.isDecoding && !isSafari()) {\n      // add image to slide when it becomes active,\n      // even if it's not finished decoding\n      this.appendImage();\n    } else if (this.isError()) {\n      this.load(false, true); // try to reload\n    }\n\n    if (this.slide.holderElement) {\n      this.slide.holderElement.setAttribute('aria-hidden', 'false');\n    }\n  }\n  /**\r\n   * Deactivate the content\r\n   */\n\n\n  deactivate() {\n    this.instance.dispatch('contentDeactivate', {\n      content: this\n    });\n\n    if (this.slide && this.slide.holderElement) {\n      this.slide.holderElement.setAttribute('aria-hidden', 'true');\n    }\n  }\n  /**\r\n   * Remove the content from DOM\r\n   */\n\n\n  remove() {\n    this.isAttached = false;\n\n    if (this.instance.dispatch('contentRemove', {\n      content: this\n    }).defaultPrevented) {\n      return;\n    }\n\n    if (this.element && this.element.parentNode) {\n      this.element.remove();\n    }\n\n    if (this.placeholder && this.placeholder.element) {\n      this.placeholder.element.remove();\n    }\n  }\n  /**\r\n   * Append the image content to slide container\r\n   */\n\n\n  appendImage() {\n    if (!this.isAttached) {\n      return;\n    }\n\n    if (this.instance.dispatch('contentAppendImage', {\n      content: this\n    }).defaultPrevented) {\n      return;\n    } // ensure that element exists and is not already appended\n\n\n    if (this.slide && this.element && !this.element.parentNode) {\n      this.slide.container.appendChild(this.element);\n    }\n\n    if (this.state === LOAD_STATE.LOADED || this.state === LOAD_STATE.ERROR) {\n      this.removePlaceholder();\n    }\n  }\n\n}\n\n/** @typedef {import('./content.js').default} Content */\n\n/** @typedef {import('./slide.js').default} Slide */\n\n/** @typedef {import('./slide.js').SlideData} SlideData */\n\n/** @typedef {import('../core/base.js').default} PhotoSwipeBase */\n\n/** @typedef {import('../photoswipe.js').default} PhotoSwipe */\n\nconst MIN_SLIDES_TO_CACHE = 5;\n/**\r\n * Lazy-load an image\r\n * This function is used both by Lightbox and PhotoSwipe core,\r\n * thus it can be called before dialog is opened.\r\n *\r\n * @param {SlideData} itemData Data about the slide\r\n * @param {PhotoSwipeBase} instance PhotoSwipe or PhotoSwipeLightbox instance\r\n * @param {number} index\r\n * @returns {Content} Image that is being decoded or false.\r\n */\n\nfunction lazyLoadData(itemData, instance, index) {\n  const content = instance.createContentFromData(itemData, index);\n  /** @type {ZoomLevel | undefined} */\n\n  let zoomLevel;\n  const {\n    options\n  } = instance; // We need to know dimensions of the image to preload it,\n  // as it might use srcset, and we need to define sizes\n\n  if (options) {\n    zoomLevel = new ZoomLevel(options, itemData, -1);\n    let viewportSize;\n\n    if (instance.pswp) {\n      viewportSize = instance.pswp.viewportSize;\n    } else {\n      viewportSize = getViewportSize(options, instance);\n    }\n\n    const panAreaSize = getPanAreaSize(options, viewportSize, itemData, index);\n    zoomLevel.update(content.width, content.height, panAreaSize);\n  }\n\n  content.lazyLoad();\n\n  if (zoomLevel) {\n    content.setDisplayedSize(Math.ceil(content.width * zoomLevel.initial), Math.ceil(content.height * zoomLevel.initial));\n  }\n\n  return content;\n}\n/**\r\n * Lazy-loads specific slide.\r\n * This function is used both by Lightbox and PhotoSwipe core,\r\n * thus it can be called before dialog is opened.\r\n *\r\n * By default, it loads image based on viewport size and initial zoom level.\r\n *\r\n * @param {number} index Slide index\r\n * @param {PhotoSwipeBase} instance PhotoSwipe or PhotoSwipeLightbox eventable instance\r\n * @returns {Content | undefined}\r\n */\n\nfunction lazyLoadSlide(index, instance) {\n  const itemData = instance.getItemData(index);\n\n  if (instance.dispatch('lazyLoadSlide', {\n    index,\n    itemData\n  }).defaultPrevented) {\n    return;\n  }\n\n  return lazyLoadData(itemData, instance, index);\n}\n\nclass ContentLoader {\n  /**\r\n   * @param {PhotoSwipe} pswp\r\n   */\n  constructor(pswp) {\n    this.pswp = pswp; // Total amount of cached images\n\n    this.limit = Math.max(pswp.options.preload[0] + pswp.options.preload[1] + 1, MIN_SLIDES_TO_CACHE);\n    /** @type {Content[]} */\n\n    this._cachedItems = [];\n  }\n  /**\r\n   * Lazy load nearby slides based on `preload` option.\r\n   *\r\n   * @param {number} [diff] Difference between slide indexes that was changed recently, or 0.\r\n   */\n\n\n  updateLazy(diff) {\n    const {\n      pswp\n    } = this;\n\n    if (pswp.dispatch('lazyLoad').defaultPrevented) {\n      return;\n    }\n\n    const {\n      preload\n    } = pswp.options;\n    const isForward = diff === undefined ? true : diff >= 0;\n    let i; // preload[1] - num items to preload in forward direction\n\n    for (i = 0; i <= preload[1]; i++) {\n      this.loadSlideByIndex(pswp.currIndex + (isForward ? i : -i));\n    } // preload[0] - num items to preload in backward direction\n\n\n    for (i = 1; i <= preload[0]; i++) {\n      this.loadSlideByIndex(pswp.currIndex + (isForward ? -i : i));\n    }\n  }\n  /**\r\n   * @param {number} initialIndex\r\n   */\n\n\n  loadSlideByIndex(initialIndex) {\n    const index = this.pswp.getLoopedIndex(initialIndex); // try to get cached content\n\n    let content = this.getContentByIndex(index);\n\n    if (!content) {\n      // no cached content, so try to load from scratch:\n      content = lazyLoadSlide(index, this.pswp); // if content can be loaded, add it to cache:\n\n      if (content) {\n        this.addToCache(content);\n      }\n    }\n  }\n  /**\r\n   * @param {Slide} slide\r\n   * @returns {Content}\r\n   */\n\n\n  getContentBySlide(slide) {\n    let content = this.getContentByIndex(slide.index);\n\n    if (!content) {\n      // create content if not found in cache\n      content = this.pswp.createContentFromData(slide.data, slide.index);\n      this.addToCache(content);\n    } // assign slide to content\n\n\n    content.setSlide(slide);\n    return content;\n  }\n  /**\r\n   * @param {Content} content\r\n   */\n\n\n  addToCache(content) {\n    // move to the end of array\n    this.removeByIndex(content.index);\n\n    this._cachedItems.push(content);\n\n    if (this._cachedItems.length > this.limit) {\n      // Destroy the first content that's not attached\n      const indexToRemove = this._cachedItems.findIndex(item => {\n        return !item.isAttached && !item.hasSlide;\n      });\n\n      if (indexToRemove !== -1) {\n        const removedItem = this._cachedItems.splice(indexToRemove, 1)[0];\n\n        removedItem.destroy();\n      }\n    }\n  }\n  /**\r\n   * Removes an image from cache, does not destroy() it, just removes.\r\n   *\r\n   * @param {number} index\r\n   */\n\n\n  removeByIndex(index) {\n    const indexToRemove = this._cachedItems.findIndex(item => item.index === index);\n\n    if (indexToRemove !== -1) {\n      this._cachedItems.splice(indexToRemove, 1);\n    }\n  }\n  /**\r\n   * @param {number} index\r\n   * @returns {Content | undefined}\r\n   */\n\n\n  getContentByIndex(index) {\n    return this._cachedItems.find(content => content.index === index);\n  }\n\n  destroy() {\n    this._cachedItems.forEach(content => content.destroy());\n\n    this._cachedItems = [];\n  }\n\n}\n\n/** @typedef {import(\"../photoswipe.js\").default} PhotoSwipe */\n\n/** @typedef {import(\"../slide/slide.js\").SlideData} SlideData */\n\n/**\r\n * PhotoSwipe base class that can retrieve data about every slide.\r\n * Shared by PhotoSwipe Core and PhotoSwipe Lightbox\r\n */\n\nclass PhotoSwipeBase extends Eventable {\n  /**\r\n   * Get total number of slides\r\n   *\r\n   * @returns {number}\r\n   */\n  getNumItems() {\n    var _this$options;\n\n    let numItems = 0;\n    const dataSource = (_this$options = this.options) === null || _this$options === void 0 ? void 0 : _this$options.dataSource;\n\n    if (dataSource && 'length' in dataSource) {\n      // may be an array or just object with length property\n      numItems = dataSource.length;\n    } else if (dataSource && 'gallery' in dataSource) {\n      // query DOM elements\n      if (!dataSource.items) {\n        dataSource.items = this._getGalleryDOMElements(dataSource.gallery);\n      }\n\n      if (dataSource.items) {\n        numItems = dataSource.items.length;\n      }\n    } // legacy event, before filters were introduced\n\n\n    const event = this.dispatch('numItems', {\n      dataSource,\n      numItems\n    });\n    return this.applyFilters('numItems', event.numItems, dataSource);\n  }\n  /**\r\n   * @param {SlideData} slideData\r\n   * @param {number} index\r\n   * @returns {Content}\r\n   */\n\n\n  createContentFromData(slideData, index) {\n    return new Content(slideData, this, index);\n  }\n  /**\r\n   * Get item data by index.\r\n   *\r\n   * \"item data\" should contain normalized information that PhotoSwipe needs to generate a slide.\r\n   * For example, it may contain properties like\r\n   * `src`, `srcset`, `w`, `h`, which will be used to generate a slide with image.\r\n   *\r\n   * @param {number} index\r\n   * @returns {SlideData}\r\n   */\n\n\n  getItemData(index) {\n    var _this$options2;\n\n    const dataSource = (_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.dataSource;\n    /** @type {SlideData | HTMLElement} */\n\n    let dataSourceItem = {};\n\n    if (Array.isArray(dataSource)) {\n      // Datasource is an array of elements\n      dataSourceItem = dataSource[index];\n    } else if (dataSource && 'gallery' in dataSource) {\n      // dataSource has gallery property,\n      // thus it was created by Lightbox, based on\n      // gallery and children options\n      // query DOM elements\n      if (!dataSource.items) {\n        dataSource.items = this._getGalleryDOMElements(dataSource.gallery);\n      }\n\n      dataSourceItem = dataSource.items[index];\n    }\n\n    let itemData = dataSourceItem;\n\n    if (itemData instanceof Element) {\n      itemData = this._domElementToItemData(itemData);\n    } // Dispatching the itemData event,\n    // it's a legacy verion before filters were introduced\n\n\n    const event = this.dispatch('itemData', {\n      itemData: itemData || {},\n      index\n    });\n    return this.applyFilters('itemData', event.itemData, index);\n  }\n  /**\r\n   * Get array of gallery DOM elements,\r\n   * based on childSelector and gallery element.\r\n   *\r\n   * @param {HTMLElement} galleryElement\r\n   * @returns {HTMLElement[]}\r\n   */\n\n\n  _getGalleryDOMElements(galleryElement) {\n    var _this$options3, _this$options4;\n\n    if ((_this$options3 = this.options) !== null && _this$options3 !== void 0 && _this$options3.children || (_this$options4 = this.options) !== null && _this$options4 !== void 0 && _this$options4.childSelector) {\n      return getElementsFromOption(this.options.children, this.options.childSelector, galleryElement) || [];\n    }\n\n    return [galleryElement];\n  }\n  /**\r\n   * Converts DOM element to item data object.\r\n   *\r\n   * @param {HTMLElement} element DOM element\r\n   * @returns {SlideData}\r\n   */\n\n\n  _domElementToItemData(element) {\n    /** @type {SlideData} */\n    const itemData = {\n      element\n    };\n    const linkEl =\n    /** @type {HTMLAnchorElement} */\n    element.tagName === 'A' ? element : element.querySelector('a');\n\n    if (linkEl) {\n      // src comes from data-pswp-src attribute,\n      // if it's empty link href is used\n      itemData.src = linkEl.dataset.pswpSrc || linkEl.href;\n\n      if (linkEl.dataset.pswpSrcset) {\n        itemData.srcset = linkEl.dataset.pswpSrcset;\n      }\n\n      itemData.width = linkEl.dataset.pswpWidth ? parseInt(linkEl.dataset.pswpWidth, 10) : 0;\n      itemData.height = linkEl.dataset.pswpHeight ? parseInt(linkEl.dataset.pswpHeight, 10) : 0; // support legacy w & h properties\n\n      itemData.w = itemData.width;\n      itemData.h = itemData.height;\n\n      if (linkEl.dataset.pswpType) {\n        itemData.type = linkEl.dataset.pswpType;\n      }\n\n      const thumbnailEl = element.querySelector('img');\n\n      if (thumbnailEl) {\n        var _thumbnailEl$getAttri;\n\n        // msrc is URL to placeholder image that's displayed before large image is loaded\n        // by default it's displayed only for the first slide\n        itemData.msrc = thumbnailEl.currentSrc || thumbnailEl.src;\n        itemData.alt = (_thumbnailEl$getAttri = thumbnailEl.getAttribute('alt')) !== null && _thumbnailEl$getAttri !== void 0 ? _thumbnailEl$getAttri : '';\n      }\n\n      if (linkEl.dataset.pswpCropped || linkEl.dataset.cropped) {\n        itemData.thumbCropped = true;\n      }\n    }\n\n    return this.applyFilters('domItemData', itemData, element, linkEl);\n  }\n  /**\r\n   * Lazy-load by slide data\r\n   *\r\n   * @param {SlideData} itemData Data about the slide\r\n   * @param {number} index\r\n   * @returns {Content} Image that is being decoded or false.\r\n   */\n\n\n  lazyLoadData(itemData, index) {\n    return lazyLoadData(itemData, this, index);\n  }\n\n}\n\n/** @typedef {import('./photoswipe.js').default} PhotoSwipe */\n\n/** @typedef {import('./slide/get-thumb-bounds.js').Bounds} Bounds */\n\n/** @typedef {import('./util/animations.js').AnimationProps} AnimationProps */\n// some browsers do not paint\n// elements which opacity is set to 0,\n// since we need to pre-render elements for the animation -\n// we set it to the minimum amount\n\nconst MIN_OPACITY = 0.003;\n/**\r\n * Manages opening and closing transitions of the PhotoSwipe.\r\n *\r\n * It can perform zoom, fade or no transition.\r\n */\n\nclass Opener {\n  /**\r\n   * @param {PhotoSwipe} pswp\r\n   */\n  constructor(pswp) {\n    this.pswp = pswp;\n    this.isClosed = true;\n    this.isOpen = false;\n    this.isClosing = false;\n    this.isOpening = false;\n    /**\r\n     * @private\r\n     * @type {number | false | undefined}\r\n     */\n\n    this._duration = undefined;\n    /** @private */\n\n    this._useAnimation = false;\n    /** @private */\n\n    this._croppedZoom = false;\n    /** @private */\n\n    this._animateRootOpacity = false;\n    /** @private */\n\n    this._animateBgOpacity = false;\n    /**\r\n     * @private\r\n     * @type { HTMLDivElement | HTMLImageElement | null | undefined }\r\n     */\n\n    this._placeholder = undefined;\n    /**\r\n     * @private\r\n     * @type { HTMLDivElement | undefined }\r\n     */\n\n    this._opacityElement = undefined;\n    /**\r\n     * @private\r\n     * @type { HTMLDivElement | undefined }\r\n     */\n\n    this._cropContainer1 = undefined;\n    /**\r\n     * @private\r\n     * @type { HTMLElement | null | undefined }\r\n     */\n\n    this._cropContainer2 = undefined;\n    /**\r\n     * @private\r\n     * @type {Bounds | undefined}\r\n     */\n\n    this._thumbBounds = undefined;\n    this._prepareOpen = this._prepareOpen.bind(this); // Override initial zoom and pan position\n\n    pswp.on('firstZoomPan', this._prepareOpen);\n  }\n\n  open() {\n    this._prepareOpen();\n\n    this._start();\n  }\n\n  close() {\n    if (this.isClosed || this.isClosing || this.isOpening) {\n      // if we close during opening animation\n      // for now do nothing,\n      // browsers aren't good at changing the direction of the CSS transition\n      return;\n    }\n\n    const slide = this.pswp.currSlide;\n    this.isOpen = false;\n    this.isOpening = false;\n    this.isClosing = true;\n    this._duration = this.pswp.options.hideAnimationDuration;\n\n    if (slide && slide.currZoomLevel * slide.width >= this.pswp.options.maxWidthToAnimate) {\n      this._duration = 0;\n    }\n\n    this._applyStartProps();\n\n    setTimeout(() => {\n      this._start();\n    }, this._croppedZoom ? 30 : 0);\n  }\n  /** @private */\n\n\n  _prepareOpen() {\n    this.pswp.off('firstZoomPan', this._prepareOpen);\n\n    if (!this.isOpening) {\n      const slide = this.pswp.currSlide;\n      this.isOpening = true;\n      this.isClosing = false;\n      this._duration = this.pswp.options.showAnimationDuration;\n\n      if (slide && slide.zoomLevels.initial * slide.width >= this.pswp.options.maxWidthToAnimate) {\n        this._duration = 0;\n      }\n\n      this._applyStartProps();\n    }\n  }\n  /** @private */\n\n\n  _applyStartProps() {\n    const {\n      pswp\n    } = this;\n    const slide = this.pswp.currSlide;\n    const {\n      options\n    } = pswp;\n\n    if (options.showHideAnimationType === 'fade') {\n      options.showHideOpacity = true;\n      this._thumbBounds = undefined;\n    } else if (options.showHideAnimationType === 'none') {\n      options.showHideOpacity = false;\n      this._duration = 0;\n      this._thumbBounds = undefined;\n    } else if (this.isOpening && pswp._initialThumbBounds) {\n      // Use initial bounds if defined\n      this._thumbBounds = pswp._initialThumbBounds;\n    } else {\n      this._thumbBounds = this.pswp.getThumbBounds();\n    }\n\n    this._placeholder = slide === null || slide === void 0 ? void 0 : slide.getPlaceholderElement();\n    pswp.animations.stopAll(); // Discard animations when duration is less than 50ms\n\n    this._useAnimation = Boolean(this._duration && this._duration > 50);\n    this._animateZoom = Boolean(this._thumbBounds) && (slide === null || slide === void 0 ? void 0 : slide.content.usePlaceholder()) && (!this.isClosing || !pswp.mainScroll.isShifted());\n\n    if (!this._animateZoom) {\n      this._animateRootOpacity = true;\n\n      if (this.isOpening && slide) {\n        slide.zoomAndPanToInitial();\n        slide.applyCurrentZoomPan();\n      }\n    } else {\n      var _options$showHideOpac;\n\n      this._animateRootOpacity = (_options$showHideOpac = options.showHideOpacity) !== null && _options$showHideOpac !== void 0 ? _options$showHideOpac : false;\n    }\n\n    this._animateBgOpacity = !this._animateRootOpacity && this.pswp.options.bgOpacity > MIN_OPACITY;\n    this._opacityElement = this._animateRootOpacity ? pswp.element : pswp.bg;\n\n    if (!this._useAnimation) {\n      this._duration = 0;\n      this._animateZoom = false;\n      this._animateBgOpacity = false;\n      this._animateRootOpacity = true;\n\n      if (this.isOpening) {\n        if (pswp.element) {\n          pswp.element.style.opacity = String(MIN_OPACITY);\n        }\n\n        pswp.applyBgOpacity(1);\n      }\n\n      return;\n    }\n\n    if (this._animateZoom && this._thumbBounds && this._thumbBounds.innerRect) {\n      var _this$pswp$currSlide;\n\n      // Properties are used when animation from cropped thumbnail\n      this._croppedZoom = true;\n      this._cropContainer1 = this.pswp.container;\n      this._cropContainer2 = (_this$pswp$currSlide = this.pswp.currSlide) === null || _this$pswp$currSlide === void 0 ? void 0 : _this$pswp$currSlide.holderElement;\n\n      if (pswp.container) {\n        pswp.container.style.overflow = 'hidden';\n        pswp.container.style.width = pswp.viewportSize.x + 'px';\n      }\n    } else {\n      this._croppedZoom = false;\n    }\n\n    if (this.isOpening) {\n      // Apply styles before opening transition\n      if (this._animateRootOpacity) {\n        if (pswp.element) {\n          pswp.element.style.opacity = String(MIN_OPACITY);\n        }\n\n        pswp.applyBgOpacity(1);\n      } else {\n        if (this._animateBgOpacity && pswp.bg) {\n          pswp.bg.style.opacity = String(MIN_OPACITY);\n        }\n\n        if (pswp.element) {\n          pswp.element.style.opacity = '1';\n        }\n      }\n\n      if (this._animateZoom) {\n        this._setClosedStateZoomPan();\n\n        if (this._placeholder) {\n          // tell browser that we plan to animate the placeholder\n          this._placeholder.style.willChange = 'transform'; // hide placeholder to allow hiding of\n          // elements that overlap it (such as icons over the thumbnail)\n\n          this._placeholder.style.opacity = String(MIN_OPACITY);\n        }\n      }\n    } else if (this.isClosing) {\n      // hide nearby slides to make sure that\n      // they are not painted during the transition\n      if (pswp.mainScroll.itemHolders[0]) {\n        pswp.mainScroll.itemHolders[0].el.style.display = 'none';\n      }\n\n      if (pswp.mainScroll.itemHolders[2]) {\n        pswp.mainScroll.itemHolders[2].el.style.display = 'none';\n      }\n\n      if (this._croppedZoom) {\n        if (pswp.mainScroll.x !== 0) {\n          // shift the main scroller to zero position\n          pswp.mainScroll.resetPosition();\n          pswp.mainScroll.resize();\n        }\n      }\n    }\n  }\n  /** @private */\n\n\n  _start() {\n    if (this.isOpening && this._useAnimation && this._placeholder && this._placeholder.tagName === 'IMG') {\n      // To ensure smooth animation\n      // we wait till the current slide image placeholder is decoded,\n      // but no longer than 250ms,\n      // and no shorter than 50ms\n      // (just using requestanimationframe is not enough in Firefox,\n      // for some reason)\n      new Promise(resolve => {\n        let decoded = false;\n        let isDelaying = true;\n        decodeImage(\n        /** @type {HTMLImageElement} */\n        this._placeholder).finally(() => {\n          decoded = true;\n\n          if (!isDelaying) {\n            resolve(true);\n          }\n        });\n        setTimeout(() => {\n          isDelaying = false;\n\n          if (decoded) {\n            resolve(true);\n          }\n        }, 50);\n        setTimeout(resolve, 250);\n      }).finally(() => this._initiate());\n    } else {\n      this._initiate();\n    }\n  }\n  /** @private */\n\n\n  _initiate() {\n    var _this$pswp$element, _this$pswp$element2;\n\n    (_this$pswp$element = this.pswp.element) === null || _this$pswp$element === void 0 || _this$pswp$element.style.setProperty('--pswp-transition-duration', this._duration + 'ms');\n    this.pswp.dispatch(this.isOpening ? 'openingAnimationStart' : 'closingAnimationStart'); // legacy event\n\n    this.pswp.dispatch(\n    /** @type {'initialZoomIn' | 'initialZoomOut'} */\n    'initialZoom' + (this.isOpening ? 'In' : 'Out'));\n    (_this$pswp$element2 = this.pswp.element) === null || _this$pswp$element2 === void 0 || _this$pswp$element2.classList.toggle('pswp--ui-visible', this.isOpening);\n\n    if (this.isOpening) {\n      if (this._placeholder) {\n        // unhide the placeholder\n        this._placeholder.style.opacity = '1';\n      }\n\n      this._animateToOpenState();\n    } else if (this.isClosing) {\n      this._animateToClosedState();\n    }\n\n    if (!this._useAnimation) {\n      this._onAnimationComplete();\n    }\n  }\n  /** @private */\n\n\n  _onAnimationComplete() {\n    const {\n      pswp\n    } = this;\n    this.isOpen = this.isOpening;\n    this.isClosed = this.isClosing;\n    this.isOpening = false;\n    this.isClosing = false;\n    pswp.dispatch(this.isOpen ? 'openingAnimationEnd' : 'closingAnimationEnd'); // legacy event\n\n    pswp.dispatch(\n    /** @type {'initialZoomInEnd' | 'initialZoomOutEnd'} */\n    'initialZoom' + (this.isOpen ? 'InEnd' : 'OutEnd'));\n\n    if (this.isClosed) {\n      pswp.destroy();\n    } else if (this.isOpen) {\n      var _pswp$currSlide;\n\n      if (this._animateZoom && pswp.container) {\n        pswp.container.style.overflow = 'visible';\n        pswp.container.style.width = '100%';\n      }\n\n      (_pswp$currSlide = pswp.currSlide) === null || _pswp$currSlide === void 0 || _pswp$currSlide.applyCurrentZoomPan();\n    }\n  }\n  /** @private */\n\n\n  _animateToOpenState() {\n    const {\n      pswp\n    } = this;\n\n    if (this._animateZoom) {\n      if (this._croppedZoom && this._cropContainer1 && this._cropContainer2) {\n        this._animateTo(this._cropContainer1, 'transform', 'translate3d(0,0,0)');\n\n        this._animateTo(this._cropContainer2, 'transform', 'none');\n      }\n\n      if (pswp.currSlide) {\n        pswp.currSlide.zoomAndPanToInitial();\n\n        this._animateTo(pswp.currSlide.container, 'transform', pswp.currSlide.getCurrentTransform());\n      }\n    }\n\n    if (this._animateBgOpacity && pswp.bg) {\n      this._animateTo(pswp.bg, 'opacity', String(pswp.options.bgOpacity));\n    }\n\n    if (this._animateRootOpacity && pswp.element) {\n      this._animateTo(pswp.element, 'opacity', '1');\n    }\n  }\n  /** @private */\n\n\n  _animateToClosedState() {\n    const {\n      pswp\n    } = this;\n\n    if (this._animateZoom) {\n      this._setClosedStateZoomPan(true);\n    } // do not animate opacity if it's already at 0\n\n\n    if (this._animateBgOpacity && pswp.bgOpacity > 0.01 && pswp.bg) {\n      this._animateTo(pswp.bg, 'opacity', '0');\n    }\n\n    if (this._animateRootOpacity && pswp.element) {\n      this._animateTo(pswp.element, 'opacity', '0');\n    }\n  }\n  /**\r\n   * @private\r\n   * @param {boolean} [animate]\r\n   */\n\n\n  _setClosedStateZoomPan(animate) {\n    if (!this._thumbBounds) return;\n    const {\n      pswp\n    } = this;\n    const {\n      innerRect\n    } = this._thumbBounds;\n    const {\n      currSlide,\n      viewportSize\n    } = pswp;\n\n    if (this._croppedZoom && innerRect && this._cropContainer1 && this._cropContainer2) {\n      const containerOnePanX = -viewportSize.x + (this._thumbBounds.x - innerRect.x) + innerRect.w;\n      const containerOnePanY = -viewportSize.y + (this._thumbBounds.y - innerRect.y) + innerRect.h;\n      const containerTwoPanX = viewportSize.x - innerRect.w;\n      const containerTwoPanY = viewportSize.y - innerRect.h;\n\n      if (animate) {\n        this._animateTo(this._cropContainer1, 'transform', toTransformString(containerOnePanX, containerOnePanY));\n\n        this._animateTo(this._cropContainer2, 'transform', toTransformString(containerTwoPanX, containerTwoPanY));\n      } else {\n        setTransform(this._cropContainer1, containerOnePanX, containerOnePanY);\n        setTransform(this._cropContainer2, containerTwoPanX, containerTwoPanY);\n      }\n    }\n\n    if (currSlide) {\n      equalizePoints(currSlide.pan, innerRect || this._thumbBounds);\n      currSlide.currZoomLevel = this._thumbBounds.w / currSlide.width;\n\n      if (animate) {\n        this._animateTo(currSlide.container, 'transform', currSlide.getCurrentTransform());\n      } else {\n        currSlide.applyCurrentZoomPan();\n      }\n    }\n  }\n  /**\r\n   * @private\r\n   * @param {HTMLElement} target\r\n   * @param {'transform' | 'opacity'} prop\r\n   * @param {string} propValue\r\n   */\n\n\n  _animateTo(target, prop, propValue) {\n    if (!this._duration) {\n      target.style[prop] = propValue;\n      return;\n    }\n\n    const {\n      animations\n    } = this.pswp;\n    /** @type {AnimationProps} */\n\n    const animProps = {\n      duration: this._duration,\n      easing: this.pswp.options.easing,\n      onComplete: () => {\n        if (!animations.activeAnimations.length) {\n          this._onAnimationComplete();\n        }\n      },\n      target\n    };\n    animProps[prop] = propValue;\n    animations.startTransition(animProps);\n  }\n\n}\n\n/**\r\n * @template T\r\n * @typedef {import('./types.js').Type<T>} Type<T>\r\n */\n\n/** @typedef {import('./slide/slide.js').SlideData} SlideData */\n\n/** @typedef {import('./slide/zoom-level.js').ZoomLevelOption} ZoomLevelOption */\n\n/** @typedef {import('./ui/ui-element.js').UIElementData} UIElementData */\n\n/** @typedef {import('./main-scroll.js').ItemHolder} ItemHolder */\n\n/** @typedef {import('./core/eventable.js').PhotoSwipeEventsMap} PhotoSwipeEventsMap */\n\n/** @typedef {import('./core/eventable.js').PhotoSwipeFiltersMap} PhotoSwipeFiltersMap */\n\n/** @typedef {import('./slide/get-thumb-bounds').Bounds} Bounds */\n\n/**\r\n * @template {keyof PhotoSwipeEventsMap} T\r\n * @typedef {import('./core/eventable.js').EventCallback<T>} EventCallback<T>\r\n */\n\n/**\r\n * @template {keyof PhotoSwipeEventsMap} T\r\n * @typedef {import('./core/eventable.js').AugmentedEvent<T>} AugmentedEvent<T>\r\n */\n\n/** @typedef {{ x: number; y: number; id?: string | number }} Point */\n\n/** @typedef {{ top: number; bottom: number; left: number; right: number }} Padding */\n\n/** @typedef {SlideData[]} DataSourceArray */\n\n/** @typedef {{ gallery: HTMLElement; items?: HTMLElement[] }} DataSourceObject */\n\n/** @typedef {DataSourceArray | DataSourceObject} DataSource */\n\n/** @typedef {(point: Point, originalEvent: PointerEvent) => void} ActionFn */\n\n/** @typedef {'close' | 'next' | 'zoom' | 'zoom-or-close' | 'toggle-controls'} ActionType */\n\n/** @typedef {Type<PhotoSwipe> | { default: Type<PhotoSwipe> }} PhotoSwipeModule */\n\n/** @typedef {PhotoSwipeModule | Promise<PhotoSwipeModule> | (() => Promise<PhotoSwipeModule>)} PhotoSwipeModuleOption */\n\n/**\r\n * @typedef {string | NodeListOf<HTMLElement> | HTMLElement[] | HTMLElement} ElementProvider\r\n */\n\n/** @typedef {Partial<PreparedPhotoSwipeOptions>} PhotoSwipeOptions https://photoswipe.com/options/ */\n\n/**\r\n * @typedef {Object} PreparedPhotoSwipeOptions\r\n *\r\n * @prop {DataSource} [dataSource]\r\n * Pass an array of any items via dataSource option. Its length will determine amount of slides\r\n * (which may be modified further from numItems event).\r\n *\r\n * Each item should contain data that you need to generate slide\r\n * (for image slide it would be src (image URL), width (image width), height, srcset, alt).\r\n *\r\n * If these properties are not present in your initial array, you may \"pre-parse\" each item from itemData filter.\r\n *\r\n * @prop {number} bgOpacity\r\n * Background backdrop opacity, always define it via this option and not via CSS rgba color.\r\n *\r\n * @prop {number} spacing\r\n * Spacing between slides. Defined as ratio relative to the viewport width (0.1 = 10% of viewport).\r\n *\r\n * @prop {boolean} allowPanToNext\r\n * Allow swipe navigation to the next slide when the current slide is zoomed. Does not apply to mouse events.\r\n *\r\n * @prop {boolean} loop\r\n * If set to true you'll be able to swipe from the last to the first image.\r\n * Option is always false when there are less than 3 slides.\r\n *\r\n * @prop {boolean} [wheelToZoom]\r\n * By default PhotoSwipe zooms image with ctrl-wheel, if you enable this option - image will zoom just via wheel.\r\n *\r\n * @prop {boolean} pinchToClose\r\n * Pinch touch gesture to close the gallery.\r\n *\r\n * @prop {boolean} closeOnVerticalDrag\r\n * Vertical drag gesture to close the PhotoSwipe.\r\n *\r\n * @prop {Padding} [padding]\r\n * Slide area padding (in pixels).\r\n *\r\n * @prop {(viewportSize: Point, itemData: SlideData, index: number) => Padding} [paddingFn]\r\n * The option is checked frequently, so make sure it's performant. Overrides padding option if defined. For example:\r\n *\r\n * @prop {number | false} hideAnimationDuration\r\n * Transition duration in milliseconds, can be 0.\r\n *\r\n * @prop {number | false} showAnimationDuration\r\n * Transition duration in milliseconds, can be 0.\r\n *\r\n * @prop {number | false} zoomAnimationDuration\r\n * Transition duration in milliseconds, can be 0.\r\n *\r\n * @prop {string} easing\r\n * String, 'cubic-bezier(.4,0,.22,1)'. CSS easing function for open/close/zoom transitions.\r\n *\r\n * @prop {boolean} escKey\r\n * Esc key to close.\r\n *\r\n * @prop {boolean} arrowKeys\r\n * Left/right arrow keys for navigation.\r\n *\r\n * @prop {boolean} trapFocus\r\n * Trap focus within PhotoSwipe element while it's open.\r\n *\r\n * @prop {boolean} returnFocus\r\n * Restore focus the last active element after PhotoSwipe is closed.\r\n *\r\n * @prop {boolean} clickToCloseNonZoomable\r\n * If image is not zoomable (for example, smaller than viewport) it can be closed by clicking on it.\r\n *\r\n * @prop {ActionType | ActionFn | false} imageClickAction\r\n * Refer to click and tap actions page.\r\n *\r\n * @prop {ActionType | ActionFn | false} bgClickAction\r\n * Refer to click and tap actions page.\r\n *\r\n * @prop {ActionType | ActionFn | false} tapAction\r\n * Refer to click and tap actions page.\r\n *\r\n * @prop {ActionType | ActionFn | false} doubleTapAction\r\n * Refer to click and tap actions page.\r\n *\r\n * @prop {number} preloaderDelay\r\n * Delay before the loading indicator will be displayed,\r\n * if image is loaded during it - the indicator will not be displayed at all. Can be zero.\r\n *\r\n * @prop {string} indexIndicatorSep\r\n * Used for slide count indicator (\"1 of 10 \").\r\n *\r\n * @prop {(options: PhotoSwipeOptions, pswp: PhotoSwipeBase) => Point} [getViewportSizeFn]\r\n * A function that should return slide viewport width and height, in format {x: 100, y: 100}.\r\n *\r\n * @prop {string} errorMsg\r\n * Message to display when the image wasn't able to load. If you need to display HTML - use contentErrorElement filter.\r\n *\r\n * @prop {[number, number]} preload\r\n * Lazy loading of nearby slides based on direction of movement. Should be an array with two integers,\r\n * first one - number of items to preload before the current image, second one - after the current image.\r\n * Two nearby images are always loaded.\r\n *\r\n * @prop {string} [mainClass]\r\n * Class that will be added to the root element of PhotoSwipe, may contain multiple separated by space.\r\n * Example on Styling page.\r\n *\r\n * @prop {HTMLElement} [appendToEl]\r\n * Element to which PhotoSwipe dialog will be appended when it opens.\r\n *\r\n * @prop {number} maxWidthToAnimate\r\n * Maximum width of image to animate, if initial rendered image width\r\n * is larger than this value - the opening/closing transition will be automatically disabled.\r\n *\r\n * @prop {string} [closeTitle]\r\n * Translating\r\n *\r\n * @prop {string} [zoomTitle]\r\n * Translating\r\n *\r\n * @prop {string} [arrowPrevTitle]\r\n * Translating\r\n *\r\n * @prop {string} [arrowNextTitle]\r\n * Translating\r\n *\r\n * @prop {'zoom' | 'fade' | 'none'} [showHideAnimationType]\r\n * To adjust opening or closing transition type use lightbox option `showHideAnimationType` (`String`).\r\n * It supports three values - `zoom` (default), `fade` (default if there is no thumbnail) and `none`.\r\n *\r\n * Animations are automatically disabled if user `(prefers-reduced-motion: reduce)`.\r\n *\r\n * @prop {number} index\r\n * Defines start slide index.\r\n *\r\n * @prop {(e: MouseEvent) => number} [getClickedIndexFn]\r\n *\r\n * @prop {boolean} [arrowPrev]\r\n * @prop {boolean} [arrowNext]\r\n * @prop {boolean} [zoom]\r\n * @prop {boolean} [close]\r\n * @prop {boolean} [counter]\r\n *\r\n * @prop {string} [arrowPrevSVG]\r\n * @prop {string} [arrowNextSVG]\r\n * @prop {string} [zoomSVG]\r\n * @prop {string} [closeSVG]\r\n * @prop {string} [counterSVG]\r\n *\r\n * @prop {string} [arrowPrevTitle]\r\n * @prop {string} [arrowNextTitle]\r\n * @prop {string} [zoomTitle]\r\n * @prop {string} [closeTitle]\r\n * @prop {string} [counterTitle]\r\n *\r\n * @prop {ZoomLevelOption} [initialZoomLevel]\r\n * @prop {ZoomLevelOption} [secondaryZoomLevel]\r\n * @prop {ZoomLevelOption} [maxZoomLevel]\r\n *\r\n * @prop {boolean} [mouseMovePan]\r\n * @prop {Point | null} [initialPointerPos]\r\n * @prop {boolean} [showHideOpacity]\r\n *\r\n * @prop {PhotoSwipeModuleOption} [pswpModule]\r\n * @prop {() => Promise<any>} [openPromise]\r\n * @prop {boolean} [preloadFirstSlide]\r\n * @prop {ElementProvider} [gallery]\r\n * @prop {string} [gallerySelector]\r\n * @prop {ElementProvider} [children]\r\n * @prop {string} [childSelector]\r\n * @prop {string | false} [thumbSelector]\r\n */\n\n/** @type {PreparedPhotoSwipeOptions} */\n\nconst defaultOptions = {\n  allowPanToNext: true,\n  spacing: 0.1,\n  loop: true,\n  pinchToClose: true,\n  closeOnVerticalDrag: true,\n  hideAnimationDuration: 333,\n  showAnimationDuration: 333,\n  zoomAnimationDuration: 333,\n  escKey: true,\n  arrowKeys: true,\n  trapFocus: true,\n  returnFocus: true,\n  maxWidthToAnimate: 4000,\n  clickToCloseNonZoomable: true,\n  imageClickAction: 'zoom-or-close',\n  bgClickAction: 'close',\n  tapAction: 'toggle-controls',\n  doubleTapAction: 'zoom',\n  indexIndicatorSep: ' / ',\n  preloaderDelay: 2000,\n  bgOpacity: 0.8,\n  index: 0,\n  errorMsg: 'The image cannot be loaded',\n  preload: [1, 2],\n  easing: 'cubic-bezier(.4,0,.22,1)'\n};\n/**\r\n * PhotoSwipe Core\r\n */\n\nclass PhotoSwipe extends PhotoSwipeBase {\n  /**\r\n   * @param {PhotoSwipeOptions} [options]\r\n   */\n  constructor(options) {\n    super();\n    this.options = this._prepareOptions(options || {});\n    /**\r\n     * offset of viewport relative to document\r\n     *\r\n     * @type {Point}\r\n     */\n\n    this.offset = {\n      x: 0,\n      y: 0\n    };\n    /**\r\n     * @type {Point}\r\n     * @private\r\n     */\n\n    this._prevViewportSize = {\n      x: 0,\n      y: 0\n    };\n    /**\r\n     * Size of scrollable PhotoSwipe viewport\r\n     *\r\n     * @type {Point}\r\n     */\n\n    this.viewportSize = {\n      x: 0,\n      y: 0\n    };\n    /**\r\n     * background (backdrop) opacity\r\n     */\n\n    this.bgOpacity = 1;\n    this.currIndex = 0;\n    this.potentialIndex = 0;\n    this.isOpen = false;\n    this.isDestroying = false;\n    this.hasMouse = false;\n    /**\r\n     * @private\r\n     * @type {SlideData}\r\n     */\n\n    this._initialItemData = {};\n    /** @type {Bounds | undefined} */\n\n    this._initialThumbBounds = undefined;\n    /** @type {HTMLDivElement | undefined} */\n\n    this.topBar = undefined;\n    /** @type {HTMLDivElement | undefined} */\n\n    this.element = undefined;\n    /** @type {HTMLDivElement | undefined} */\n\n    this.template = undefined;\n    /** @type {HTMLDivElement | undefined} */\n\n    this.container = undefined;\n    /** @type {HTMLElement | undefined} */\n\n    this.scrollWrap = undefined;\n    /** @type {Slide | undefined} */\n\n    this.currSlide = undefined;\n    this.events = new DOMEvents();\n    this.animations = new Animations();\n    this.mainScroll = new MainScroll(this);\n    this.gestures = new Gestures(this);\n    this.opener = new Opener(this);\n    this.keyboard = new Keyboard(this);\n    this.contentLoader = new ContentLoader(this);\n  }\n  /** @returns {boolean} */\n\n\n  init() {\n    if (this.isOpen || this.isDestroying) {\n      return false;\n    }\n\n    this.isOpen = true;\n    this.dispatch('init'); // legacy\n\n    this.dispatch('beforeOpen');\n\n    this._createMainStructure(); // add classes to the root element of PhotoSwipe\n\n\n    let rootClasses = 'pswp--open';\n\n    if (this.gestures.supportsTouch) {\n      rootClasses += ' pswp--touch';\n    }\n\n    if (this.options.mainClass) {\n      rootClasses += ' ' + this.options.mainClass;\n    }\n\n    if (this.element) {\n      this.element.className += ' ' + rootClasses;\n    }\n\n    this.currIndex = this.options.index || 0;\n    this.potentialIndex = this.currIndex;\n    this.dispatch('firstUpdate'); // starting index can be modified here\n    // initialize scroll wheel handler to block the scroll\n\n    this.scrollWheel = new ScrollWheel(this); // sanitize index\n\n    if (Number.isNaN(this.currIndex) || this.currIndex < 0 || this.currIndex >= this.getNumItems()) {\n      this.currIndex = 0;\n    }\n\n    if (!this.gestures.supportsTouch) {\n      // enable mouse features if no touch support detected\n      this.mouseDetected();\n    } // causes forced synchronous layout\n\n\n    this.updateSize();\n    this.offset.y = window.pageYOffset;\n    this._initialItemData = this.getItemData(this.currIndex);\n    this.dispatch('gettingData', {\n      index: this.currIndex,\n      data: this._initialItemData,\n      slide: undefined\n    }); // *Layout* - calculate size and position of elements here\n\n    this._initialThumbBounds = this.getThumbBounds();\n    this.dispatch('initialLayout');\n    this.on('openingAnimationEnd', () => {\n      const {\n        itemHolders\n      } = this.mainScroll; // Add content to the previous and next slide\n\n      if (itemHolders[0]) {\n        itemHolders[0].el.style.display = 'block';\n        this.setContent(itemHolders[0], this.currIndex - 1);\n      }\n\n      if (itemHolders[2]) {\n        itemHolders[2].el.style.display = 'block';\n        this.setContent(itemHolders[2], this.currIndex + 1);\n      }\n\n      this.appendHeavy();\n      this.contentLoader.updateLazy();\n      this.events.add(window, 'resize', this._handlePageResize.bind(this));\n      this.events.add(window, 'scroll', this._updatePageScrollOffset.bind(this));\n      this.dispatch('bindEvents');\n    }); // set content for center slide (first time)\n\n    if (this.mainScroll.itemHolders[1]) {\n      this.setContent(this.mainScroll.itemHolders[1], this.currIndex);\n    }\n\n    this.dispatch('change');\n    this.opener.open();\n    this.dispatch('afterInit');\n    return true;\n  }\n  /**\r\n   * Get looped slide index\r\n   * (for example, -1 will return the last slide)\r\n   *\r\n   * @param {number} index\r\n   * @returns {number}\r\n   */\n\n\n  getLoopedIndex(index) {\n    const numSlides = this.getNumItems();\n\n    if (this.options.loop) {\n      if (index > numSlides - 1) {\n        index -= numSlides;\n      }\n\n      if (index < 0) {\n        index += numSlides;\n      }\n    }\n\n    return clamp(index, 0, numSlides - 1);\n  }\n\n  appendHeavy() {\n    this.mainScroll.itemHolders.forEach(itemHolder => {\n      var _itemHolder$slide;\n\n      (_itemHolder$slide = itemHolder.slide) === null || _itemHolder$slide === void 0 || _itemHolder$slide.appendHeavy();\n    });\n  }\n  /**\r\n   * Change the slide\r\n   * @param {number} index New index\r\n   */\n\n\n  goTo(index) {\n    this.mainScroll.moveIndexBy(this.getLoopedIndex(index) - this.potentialIndex);\n  }\n  /**\r\n   * Go to the next slide.\r\n   */\n\n\n  next() {\n    this.goTo(this.potentialIndex + 1);\n  }\n  /**\r\n   * Go to the previous slide.\r\n   */\n\n\n  prev() {\n    this.goTo(this.potentialIndex - 1);\n  }\n  /**\r\n   * @see slide/slide.js zoomTo\r\n   *\r\n   * @param {Parameters<Slide['zoomTo']>} args\r\n   */\n\n\n  zoomTo(...args) {\n    var _this$currSlide;\n\n    (_this$currSlide = this.currSlide) === null || _this$currSlide === void 0 || _this$currSlide.zoomTo(...args);\n  }\n  /**\r\n   * @see slide/slide.js toggleZoom\r\n   */\n\n\n  toggleZoom() {\n    var _this$currSlide2;\n\n    (_this$currSlide2 = this.currSlide) === null || _this$currSlide2 === void 0 || _this$currSlide2.toggleZoom();\n  }\n  /**\r\n   * Close the gallery.\r\n   * After closing transition ends - destroy it\r\n   */\n\n\n  close() {\n    if (!this.opener.isOpen || this.isDestroying) {\n      return;\n    }\n\n    this.isDestroying = true;\n    this.dispatch('close');\n    this.events.removeAll();\n    this.opener.close();\n  }\n  /**\r\n   * Destroys the gallery:\r\n   * - instantly closes the gallery\r\n   * - unbinds events,\r\n   * - cleans intervals and timeouts\r\n   * - removes elements from DOM\r\n   */\n\n\n  destroy() {\n    var _this$element;\n\n    if (!this.isDestroying) {\n      this.options.showHideAnimationType = 'none';\n      this.close();\n      return;\n    }\n\n    this.dispatch('destroy');\n    this._listeners = {};\n\n    if (this.scrollWrap) {\n      this.scrollWrap.ontouchmove = null;\n      this.scrollWrap.ontouchend = null;\n    }\n\n    (_this$element = this.element) === null || _this$element === void 0 || _this$element.remove();\n    this.mainScroll.itemHolders.forEach(itemHolder => {\n      var _itemHolder$slide2;\n\n      (_itemHolder$slide2 = itemHolder.slide) === null || _itemHolder$slide2 === void 0 || _itemHolder$slide2.destroy();\n    });\n    this.contentLoader.destroy();\n    this.events.removeAll();\n  }\n  /**\r\n   * Refresh/reload content of a slide by its index\r\n   *\r\n   * @param {number} slideIndex\r\n   */\n\n\n  refreshSlideContent(slideIndex) {\n    this.contentLoader.removeByIndex(slideIndex);\n    this.mainScroll.itemHolders.forEach((itemHolder, i) => {\n      var _this$currSlide$index, _this$currSlide3;\n\n      let potentialHolderIndex = ((_this$currSlide$index = (_this$currSlide3 = this.currSlide) === null || _this$currSlide3 === void 0 ? void 0 : _this$currSlide3.index) !== null && _this$currSlide$index !== void 0 ? _this$currSlide$index : 0) - 1 + i;\n\n      if (this.canLoop()) {\n        potentialHolderIndex = this.getLoopedIndex(potentialHolderIndex);\n      }\n\n      if (potentialHolderIndex === slideIndex) {\n        // set the new slide content\n        this.setContent(itemHolder, slideIndex, true); // activate the new slide if it's current\n\n        if (i === 1) {\n          var _itemHolder$slide3;\n\n          this.currSlide = itemHolder.slide;\n          (_itemHolder$slide3 = itemHolder.slide) === null || _itemHolder$slide3 === void 0 || _itemHolder$slide3.setIsActive(true);\n        }\n      }\n    });\n    this.dispatch('change');\n  }\n  /**\r\n   * Set slide content\r\n   *\r\n   * @param {ItemHolder} holder mainScroll.itemHolders array item\r\n   * @param {number} index Slide index\r\n   * @param {boolean} [force] If content should be set even if index wasn't changed\r\n   */\n\n\n  setContent(holder, index, force) {\n    if (this.canLoop()) {\n      index = this.getLoopedIndex(index);\n    }\n\n    if (holder.slide) {\n      if (holder.slide.index === index && !force) {\n        // exit if holder already contains this slide\n        // this could be common when just three slides are used\n        return;\n      } // destroy previous slide\n\n\n      holder.slide.destroy();\n      holder.slide = undefined;\n    } // exit if no loop and index is out of bounds\n\n\n    if (!this.canLoop() && (index < 0 || index >= this.getNumItems())) {\n      return;\n    }\n\n    const itemData = this.getItemData(index);\n    holder.slide = new Slide(itemData, index, this); // set current slide\n\n    if (index === this.currIndex) {\n      this.currSlide = holder.slide;\n    }\n\n    holder.slide.append(holder.el);\n  }\n  /** @returns {Point} */\n\n\n  getViewportCenterPoint() {\n    return {\n      x: this.viewportSize.x / 2,\n      y: this.viewportSize.y / 2\n    };\n  }\n  /**\r\n   * Update size of all elements.\r\n   * Executed on init and on page resize.\r\n   *\r\n   * @param {boolean} [force] Update size even if size of viewport was not changed.\r\n   */\n\n\n  updateSize(force) {\n    // let item;\n    // let itemIndex;\n    if (this.isDestroying) {\n      // exit if PhotoSwipe is closed or closing\n      // (to avoid errors, as resize event might be delayed)\n      return;\n    } //const newWidth = this.scrollWrap.clientWidth;\n    //const newHeight = this.scrollWrap.clientHeight;\n\n\n    const newViewportSize = getViewportSize(this.options, this);\n\n    if (!force && pointsEqual(newViewportSize, this._prevViewportSize)) {\n      // Exit if dimensions were not changed\n      return;\n    } //this._prevViewportSize.x = newWidth;\n    //this._prevViewportSize.y = newHeight;\n\n\n    equalizePoints(this._prevViewportSize, newViewportSize);\n    this.dispatch('beforeResize');\n    equalizePoints(this.viewportSize, this._prevViewportSize);\n\n    this._updatePageScrollOffset();\n\n    this.dispatch('viewportSize'); // Resize slides only after opener animation is finished\n    // and don't re-calculate size on inital size update\n\n    this.mainScroll.resize(this.opener.isOpen);\n\n    if (!this.hasMouse && window.matchMedia('(any-hover: hover)').matches) {\n      this.mouseDetected();\n    }\n\n    this.dispatch('resize');\n  }\n  /**\r\n   * @param {number} opacity\r\n   */\n\n\n  applyBgOpacity(opacity) {\n    this.bgOpacity = Math.max(opacity, 0);\n\n    if (this.bg) {\n      this.bg.style.opacity = String(this.bgOpacity * this.options.bgOpacity);\n    }\n  }\n  /**\r\n   * Whether mouse is detected\r\n   */\n\n\n  mouseDetected() {\n    if (!this.hasMouse) {\n      var _this$element2;\n\n      this.hasMouse = true;\n      (_this$element2 = this.element) === null || _this$element2 === void 0 || _this$element2.classList.add('pswp--has_mouse');\n    }\n  }\n  /**\r\n   * Page resize event handler\r\n   *\r\n   * @private\r\n   */\n\n\n  _handlePageResize() {\n    this.updateSize(); // In iOS webview, if element size depends on document size,\n    // it'll be measured incorrectly in resize event\n    //\n    // https://bugs.webkit.org/show_bug.cgi?id=170595\n    // https://hackernoon.com/onresize-event-broken-in-mobile-safari-d8469027bf4d\n\n    if (/iPhone|iPad|iPod/i.test(window.navigator.userAgent)) {\n      setTimeout(() => {\n        this.updateSize();\n      }, 500);\n    }\n  }\n  /**\r\n   * Page scroll offset is used\r\n   * to get correct coordinates\r\n   * relative to PhotoSwipe viewport.\r\n   *\r\n   * @private\r\n   */\n\n\n  _updatePageScrollOffset() {\n    this.setScrollOffset(0, window.pageYOffset);\n  }\n  /**\r\n   * @param {number} x\r\n   * @param {number} y\r\n   */\n\n\n  setScrollOffset(x, y) {\n    this.offset.x = x;\n    this.offset.y = y;\n    this.dispatch('updateScrollOffset');\n  }\n  /**\r\n   * Create main HTML structure of PhotoSwipe,\r\n   * and add it to DOM\r\n   *\r\n   * @private\r\n   */\n\n\n  _createMainStructure() {\n    // root DOM element of PhotoSwipe (.pswp)\n    this.element = createElement('pswp', 'div');\n    this.element.setAttribute('tabindex', '-1');\n    this.element.setAttribute('role', 'dialog'); // template is legacy prop\n\n    this.template = this.element; // Background is added as a separate element,\n    // as animating opacity is faster than animating rgba()\n\n    this.bg = createElement('pswp__bg', 'div', this.element);\n    this.scrollWrap = createElement('pswp__scroll-wrap', 'section', this.element);\n    this.container = createElement('pswp__container', 'div', this.scrollWrap); // aria pattern: carousel\n\n    this.scrollWrap.setAttribute('aria-roledescription', 'carousel');\n    this.container.setAttribute('aria-live', 'off');\n    this.container.setAttribute('id', 'pswp__items');\n    this.mainScroll.appendHolders();\n    this.ui = new UI(this);\n    this.ui.init(); // append to DOM\n\n    (this.options.appendToEl || document.body).appendChild(this.element);\n  }\n  /**\r\n   * Get position and dimensions of small thumbnail\r\n   *   {x:,y:,w:}\r\n   *\r\n   * Height is optional (calculated based on the large image)\r\n   *\r\n   * @returns {Bounds | undefined}\r\n   */\n\n\n  getThumbBounds() {\n    return getThumbBounds(this.currIndex, this.currSlide ? this.currSlide.data : this._initialItemData, this);\n  }\n  /**\r\n   * If the PhotoSwipe can have continuous loop\r\n   * @returns Boolean\r\n   */\n\n\n  canLoop() {\n    return this.options.loop && this.getNumItems() > 2;\n  }\n  /**\r\n   * @private\r\n   * @param {PhotoSwipeOptions} options\r\n   * @returns {PreparedPhotoSwipeOptions}\r\n   */\n\n\n  _prepareOptions(options) {\n    if (window.matchMedia('(prefers-reduced-motion), (update: slow)').matches) {\n      options.showHideAnimationType = 'none';\n      options.zoomAnimationDuration = 0;\n    }\n    /** @type {PreparedPhotoSwipeOptions} */\n\n\n    return { ...defaultOptions,\n      ...options\n    };\n  }\n\n}\n\nexport { PhotoSwipe as default };\n//# sourceMappingURL=photoswipe.esm.js.map\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","// Current version.\nexport var VERSION = '1.13.7';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = (typeof self == 'object' && self.self === self && self) ||\n          (typeof global == 'object' && global.global === global && global) ||\n          Function('return this')() ||\n          {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n    slice = ArrayProto.slice,\n    toString = ObjProto.toString,\n    hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n    supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n    nativeKeys = Object.keys,\n    nativeCreate = Object.create,\n    nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n    _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n  'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n  startIndex = startIndex == null ? func.length - 1 : +startIndex;\n  return function() {\n    var length = Math.max(arguments.length - startIndex, 0),\n        rest = Array(length),\n        index = 0;\n    for (; index < length; index++) {\n      rest[index] = arguments[index + startIndex];\n    }\n    switch (startIndex) {\n      case 0: return func.call(this, rest);\n      case 1: return func.call(this, arguments[0], rest);\n      case 2: return func.call(this, arguments[0], arguments[1], rest);\n    }\n    var args = Array(startIndex + 1);\n    for (index = 0; index < startIndex; index++) {\n      args[index] = arguments[index];\n    }\n    args[startIndex] = rest;\n    return func.apply(this, args);\n  };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n  var type = typeof obj;\n  return type === 'function' || (type === 'object' && !!obj);\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n  return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n  return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n  return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n  return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n  var tag = '[object ' + name + ']';\n  return function(obj) {\n    return toString.call(obj) === tag;\n  };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n  isFunction = function(obj) {\n    return typeof obj == 'function' || false;\n  };\n}\n\nexport default isFunction;\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\n// Also, there are cases where an application can override the native\n// `DataView` object, in cases like that we can't use the constructor\n// safely and should just rely on alternate `DataView` checks\nexport var hasDataViewBug = (\n      supportsDataView && (!/\\[native code\\]/.test(String(DataView)) || hasObjectTag(new DataView(new ArrayBuffer(8))))\n    ),\n    isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasDataViewBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\n// Also, in cases where the native `DataView` is\n// overridden we can't rely on the tag itself.\nfunction alternateIsDataView(obj) {\n  return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasDataViewBug ? alternateIsDataView : isDataView);\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n  return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n  if (!isArguments(arguments)) {\n    isArguments = function(obj) {\n      return has(obj, 'callee');\n    };\n  }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n  return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n  return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n  return function() {\n    return value;\n  };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n  return function(collection) {\n    var sizeProperty = getSizeProperty(collection);\n    return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n  }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n  return function(obj) {\n    return obj == null ? void 0 : obj[key];\n  };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n  // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n  // Otherwise, fall back on the above regular expression.\n  return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n                isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n  var hash = {};\n  for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n  return {\n    contains: function(key) { return hash[key] === true; },\n    push: function(key) {\n      hash[key] = true;\n      return keys.push(key);\n    }\n  };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n  keys = emulatedSet(keys);\n  var nonEnumIdx = nonEnumerableProps.length;\n  var constructor = obj.constructor;\n  var proto = (isFunction(constructor) && constructor.prototype) || ObjProto;\n\n  // Constructor is a special case.\n  var prop = 'constructor';\n  if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n  while (nonEnumIdx--) {\n    prop = nonEnumerableProps[nonEnumIdx];\n    if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n      keys.push(prop);\n    }\n  }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n  if (!isObject(obj)) return [];\n  if (nativeKeys) return nativeKeys(obj);\n  var keys = [];\n  for (var key in obj) if (has(obj, key)) keys.push(key);\n  // Ahem, IE < 9.\n  if (hasEnumBug) collectNonEnumProps(obj, keys);\n  return keys;\n}\n","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n  if (obj == null) return true;\n  // Skip the more expensive `toString`-based type checks if `obj` has no\n  // `.length`.\n  var length = getLength(obj);\n  if (typeof length == 'number' && (\n    isArray(obj) || isString(obj) || isArguments(obj)\n  )) return length === 0;\n  return getLength(keys(obj)) === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n  var _keys = keys(attrs), length = _keys.length;\n  if (object == null) return !length;\n  var obj = Object(object);\n  for (var i = 0; i < length; i++) {\n    var key = _keys[i];\n    if (attrs[key] !== obj[key] || !(key in obj)) return false;\n  }\n  return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n  if (obj instanceof _) return obj;\n  if (!(this instanceof _)) return new _(obj);\n  this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n  return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n  return String(this._wrapped);\n};\n","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n  return new Uint8Array(\n    bufferSource.buffer || bufferSource,\n    bufferSource.byteOffset || 0,\n    getByteLength(bufferSource)\n  );\n}\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasDataViewBug }  from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n  // Identical objects are equal. `0 === -0`, but they aren't identical.\n  // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n  if (a === b) return a !== 0 || 1 / a === 1 / b;\n  // `null` or `undefined` only equal to itself (strict comparison).\n  if (a == null || b == null) return false;\n  // `NaN`s are equivalent, but non-reflexive.\n  if (a !== a) return b !== b;\n  // Exhaust primitive checks\n  var type = typeof a;\n  if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n  return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n  // Unwrap any wrapped objects.\n  if (a instanceof _) a = a._wrapped;\n  if (b instanceof _) b = b._wrapped;\n  // Compare `[[Class]]` names.\n  var className = toString.call(a);\n  if (className !== toString.call(b)) return false;\n  // Work around a bug in IE 10 - Edge 13.\n  if (hasDataViewBug && className == '[object Object]' && isDataView(a)) {\n    if (!isDataView(b)) return false;\n    className = tagDataView;\n  }\n  switch (className) {\n    // These types are compared by value.\n    case '[object RegExp]':\n      // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n    case '[object String]':\n      // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n      // equivalent to `new String(\"5\")`.\n      return '' + a === '' + b;\n    case '[object Number]':\n      // `NaN`s are equivalent, but non-reflexive.\n      // Object(NaN) is equivalent to NaN.\n      if (+a !== +a) return +b !== +b;\n      // An `egal` comparison is performed for other numeric values.\n      return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n    case '[object Date]':\n    case '[object Boolean]':\n      // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n      // millisecond representations. Note that invalid dates with millisecond representations\n      // of `NaN` are not equivalent.\n      return +a === +b;\n    case '[object Symbol]':\n      return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n    case '[object ArrayBuffer]':\n    case tagDataView:\n      // Coerce to typed array so we can fall through.\n      return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n  }\n\n  var areArrays = className === '[object Array]';\n  if (!areArrays && isTypedArray(a)) {\n      var byteLength = getByteLength(a);\n      if (byteLength !== getByteLength(b)) return false;\n      if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n      areArrays = true;\n  }\n  if (!areArrays) {\n    if (typeof a != 'object' || typeof b != 'object') return false;\n\n    // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n    // from different frames are.\n    var aCtor = a.constructor, bCtor = b.constructor;\n    if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n                             isFunction(bCtor) && bCtor instanceof bCtor)\n                        && ('constructor' in a && 'constructor' in b)) {\n      return false;\n    }\n  }\n  // Assume equality for cyclic structures. The algorithm for detecting cyclic\n  // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n  // Initializing stack of traversed objects.\n  // It's done here since we only need them for objects and arrays comparison.\n  aStack = aStack || [];\n  bStack = bStack || [];\n  var length = aStack.length;\n  while (length--) {\n    // Linear search. Performance is inversely proportional to the number of\n    // unique nested structures.\n    if (aStack[length] === a) return bStack[length] === b;\n  }\n\n  // Add the first object to the stack of traversed objects.\n  aStack.push(a);\n  bStack.push(b);\n\n  // Recursively compare objects and arrays.\n  if (areArrays) {\n    // Compare array lengths to determine if a deep comparison is necessary.\n    length = a.length;\n    if (length !== b.length) return false;\n    // Deep compare the contents, ignoring non-numeric properties.\n    while (length--) {\n      if (!eq(a[length], b[length], aStack, bStack)) return false;\n    }\n  } else {\n    // Deep compare objects.\n    var _keys = keys(a), key;\n    length = _keys.length;\n    // Ensure that both objects contain the same number of properties before comparing deep equality.\n    if (keys(b).length !== length) return false;\n    while (length--) {\n      // Deep compare each member\n      key = _keys[length];\n      if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n    }\n  }\n  // Remove the first object from the stack of traversed objects.\n  aStack.pop();\n  bStack.pop();\n  return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n  return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n  if (!isObject(obj)) return [];\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  // Ahem, IE < 9.\n  if (hasEnumBug) collectNonEnumProps(obj, keys);\n  return keys;\n}\n","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n  var length = getLength(methods);\n  return function(obj) {\n    if (obj == null) return false;\n    // `Map`, `WeakMap` and `Set` have no enumerable keys.\n    var keys = allKeys(obj);\n    if (getLength(keys)) return false;\n    for (var i = 0; i < length; i++) {\n      if (!isFunction(obj[methods[i]])) return false;\n    }\n    // If we are testing against `WeakMap`, we need to ensure that\n    // `obj` doesn't have a `forEach` method in order to distinguish\n    // it from a regular `Map`.\n    return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n  };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n    hasName = 'has',\n    commonInit = ['clear', 'delete'],\n    mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n    weakMapMethods = commonInit.concat(mapTail),\n    setMethods = ['add'].concat(commonInit, forEachName, hasName);\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods }  from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods }  from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods }  from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n  var _keys = keys(obj);\n  var length = _keys.length;\n  var values = Array(length);\n  for (var i = 0; i < length; i++) {\n    values[i] = obj[_keys[i]];\n  }\n  return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n  var _keys = keys(obj);\n  var length = _keys.length;\n  var pairs = Array(length);\n  for (var i = 0; i < length; i++) {\n    pairs[i] = [_keys[i], obj[_keys[i]]];\n  }\n  return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n  var result = {};\n  var _keys = keys(obj);\n  for (var i = 0, length = _keys.length; i < length; i++) {\n    result[obj[_keys[i]]] = _keys[i];\n  }\n  return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n  var names = [];\n  for (var key in obj) {\n    if (isFunction(obj[key])) names.push(key);\n  }\n  return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n  return function(obj) {\n    var length = arguments.length;\n    if (defaults) obj = Object(obj);\n    if (length < 2 || obj == null) return obj;\n    for (var index = 1; index < length; index++) {\n      var source = arguments[index],\n          keys = keysFunc(source),\n          l = keys.length;\n      for (var i = 0; i < l; i++) {\n        var key = keys[i];\n        if (!defaults || obj[key] === void 0) obj[key] = source[key];\n      }\n    }\n    return obj;\n  };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n  return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n  if (!isObject(prototype)) return {};\n  if (nativeCreate) return nativeCreate(prototype);\n  var Ctor = ctor();\n  Ctor.prototype = prototype;\n  var result = new Ctor;\n  Ctor.prototype = null;\n  return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n  var result = baseCreate(prototype);\n  if (props) extendOwn(result, props);\n  return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n  if (!isObject(obj)) return obj;\n  return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n  interceptor(obj);\n  return obj;\n}\n","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n  return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n  return _.toPath(path);\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n  var length = path.length;\n  for (var i = 0; i < length; i++) {\n    if (obj == null) return void 0;\n    obj = obj[path[i]];\n  }\n  return length ? obj : void 0;\n}\n","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n  var value = deepGet(object, toPath(path));\n  return isUndefined(value) ? defaultValue : value;\n}\n","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n  path = toPath(path);\n  var length = path.length;\n  for (var i = 0; i < length; i++) {\n    var key = path[i];\n    if (!_has(obj, key)) return false;\n    obj = obj[key];\n  }\n  return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n  return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n  attrs = extendOwn({}, attrs);\n  return function(obj) {\n    return isMatch(obj, attrs);\n  };\n}\n","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n  path = toPath(path);\n  return function(obj) {\n    return deepGet(obj, path);\n  };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n  if (context === void 0) return func;\n  switch (argCount == null ? 3 : argCount) {\n    case 1: return function(value) {\n      return func.call(context, value);\n    };\n    // The 2-argument case is omitted because we’re not using it.\n    case 3: return function(value, index, collection) {\n      return func.call(context, value, index, collection);\n    };\n    case 4: return function(accumulator, value, index, collection) {\n      return func.call(context, accumulator, value, index, collection);\n    };\n  }\n  return function() {\n    return func.apply(context, arguments);\n  };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n  if (value == null) return identity;\n  if (isFunction(value)) return optimizeCb(value, context, argCount);\n  if (isObject(value) && !isArray(value)) return matcher(value);\n  return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n  return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n  if (_.iteratee !== iteratee) return _.iteratee(value, context);\n  return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n  iteratee = cb(iteratee, context);\n  var _keys = keys(obj),\n      length = _keys.length,\n      results = {};\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys[index];\n    results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n  }\n  return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n  if (obj == null) return noop;\n  return function(path) {\n    return get(obj, path);\n  };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n  var accum = Array(Math.max(0, n));\n  iteratee = optimizeCb(iteratee, context, 1);\n  for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n  return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n  if (max == null) {\n    max = min;\n    min = 0;\n  }\n  return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n  return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n  var escaper = function(match) {\n    return map[match];\n  };\n  // Regexes for identifying a key that needs to be escaped.\n  var source = '(?:' + keys(map).join('|') + ')';\n  var testRegexp = RegExp(source);\n  var replaceRegexp = RegExp(source, 'g');\n  return function(string) {\n    string = string == null ? '' : '' + string;\n    return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n  };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#x27;',\n  '`': '&#x60;'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n  evaluate: /<%([\\s\\S]+?)%>/g,\n  interpolate: /<%=([\\s\\S]+?)%>/g,\n  escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n  \"'\": \"'\",\n  '\\\\': '\\\\',\n  '\\r': 'r',\n  '\\n': 'n',\n  '\\u2028': 'u2028',\n  '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n  return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n  if (!settings && oldSettings) settings = oldSettings;\n  settings = defaults({}, settings, _.templateSettings);\n\n  // Combine delimiters into one regular expression via alternation.\n  var matcher = RegExp([\n    (settings.escape || noMatch).source,\n    (settings.interpolate || noMatch).source,\n    (settings.evaluate || noMatch).source\n  ].join('|') + '|$', 'g');\n\n  // Compile the template source, escaping string literals appropriately.\n  var index = 0;\n  var source = \"__p+='\";\n  text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n    source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n    index = offset + match.length;\n\n    if (escape) {\n      source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n    } else if (interpolate) {\n      source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n    } else if (evaluate) {\n      source += \"';\\n\" + evaluate + \"\\n__p+='\";\n    }\n\n    // Adobe VMs need the match returned to produce the correct offset.\n    return match;\n  });\n  source += \"';\\n\";\n\n  var argument = settings.variable;\n  if (argument) {\n    // Insure against third-party code injection. (CVE-2021-23358)\n    if (!bareIdentifier.test(argument)) throw new Error(\n      'variable is not a bare identifier: ' + argument\n    );\n  } else {\n    // If a variable is not specified, place data values in local scope.\n    source = 'with(obj||{}){\\n' + source + '}\\n';\n    argument = 'obj';\n  }\n\n  source = \"var __t,__p='',__j=Array.prototype.join,\" +\n    \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n    source + 'return __p;\\n';\n\n  var render;\n  try {\n    render = new Function(argument, '_', source);\n  } catch (e) {\n    e.source = source;\n    throw e;\n  }\n\n  var template = function(data) {\n    return render.call(this, data, _);\n  };\n\n  // Provide the compiled source as a convenience for precompilation.\n  template.source = 'function(' + argument + '){\\n' + source + '}';\n\n  return template;\n}\n","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n  path = toPath(path);\n  var length = path.length;\n  if (!length) {\n    return isFunction(fallback) ? fallback.call(obj) : fallback;\n  }\n  for (var i = 0; i < length; i++) {\n    var prop = obj == null ? void 0 : obj[path[i]];\n    if (prop === void 0) {\n      prop = fallback;\n      i = length; // Ensure we don't continue iterating.\n    }\n    obj = isFunction(prop) ? prop.call(obj) : prop;\n  }\n  return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n  var id = ++idCounter + '';\n  return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n  var instance = _(obj);\n  instance._chain = true;\n  return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n  if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n  var self = baseCreate(sourceFunc.prototype);\n  var result = sourceFunc.apply(self, args);\n  if (isObject(result)) return result;\n  return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n  var placeholder = partial.placeholder;\n  var bound = function() {\n    var position = 0, length = boundArgs.length;\n    var args = Array(length);\n    for (var i = 0; i < length; i++) {\n      args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n    }\n    while (position < arguments.length) args.push(arguments[position++]);\n    return executeBound(func, bound, this, this, args);\n  };\n  return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n  if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n  var bound = restArguments(function(callArgs) {\n    return executeBound(func, bound, context, this, args.concat(callArgs));\n  });\n  return bound;\n});\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n  output = output || [];\n  if (!depth && depth !== 0) {\n    depth = Infinity;\n  } else if (depth <= 0) {\n    return output.concat(input);\n  }\n  var idx = output.length;\n  for (var i = 0, length = getLength(input); i < length; i++) {\n    var value = input[i];\n    if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n      // Flatten current level of array or arguments object.\n      if (depth > 1) {\n        flatten(value, depth - 1, strict, output);\n        idx = output.length;\n      } else {\n        var j = 0, len = value.length;\n        while (j < len) output[idx++] = value[j++];\n      }\n    } else if (!strict) {\n      output[idx++] = value;\n    }\n  }\n  return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n  keys = flatten(keys, false, false);\n  var index = keys.length;\n  if (index < 1) throw new Error('bindAll must be passed function names');\n  while (index--) {\n    var key = keys[index];\n    obj[key] = bind(obj[key], obj);\n  }\n  return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n  var memoize = function(key) {\n    var cache = memoize.cache;\n    var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n    if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n    return cache[address];\n  };\n  memoize.cache = {};\n  return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n  return setTimeout(function() {\n    return func.apply(null, args);\n  }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n  var timeout, context, args, result;\n  var previous = 0;\n  if (!options) options = {};\n\n  var later = function() {\n    previous = options.leading === false ? 0 : now();\n    timeout = null;\n    result = func.apply(context, args);\n    if (!timeout) context = args = null;\n  };\n\n  var throttled = function() {\n    var _now = now();\n    if (!previous && options.leading === false) previous = _now;\n    var remaining = wait - (_now - previous);\n    context = this;\n    args = arguments;\n    if (remaining <= 0 || remaining > wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n      previous = _now;\n      result = func.apply(context, args);\n      if (!timeout) context = args = null;\n    } else if (!timeout && options.trailing !== false) {\n      timeout = setTimeout(later, remaining);\n    }\n    return result;\n  };\n\n  throttled.cancel = function() {\n    clearTimeout(timeout);\n    previous = 0;\n    timeout = context = args = null;\n  };\n\n  return throttled;\n}\n","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n  var timeout, previous, args, result, context;\n\n  var later = function() {\n    var passed = now() - previous;\n    if (wait > passed) {\n      timeout = setTimeout(later, wait - passed);\n    } else {\n      timeout = null;\n      if (!immediate) result = func.apply(context, args);\n      // This check is needed because `func` can recursively invoke `debounced`.\n      if (!timeout) args = context = null;\n    }\n  };\n\n  var debounced = restArguments(function(_args) {\n    context = this;\n    args = _args;\n    previous = now();\n    if (!timeout) {\n      timeout = setTimeout(later, wait);\n      if (immediate) result = func.apply(context, args);\n    }\n    return result;\n  });\n\n  debounced.cancel = function() {\n    clearTimeout(timeout);\n    timeout = args = context = null;\n  };\n\n  return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n  return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n  return function() {\n    return !predicate.apply(this, arguments);\n  };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n  var args = arguments;\n  var start = args.length - 1;\n  return function() {\n    var i = start;\n    var result = args[start].apply(this, arguments);\n    while (i--) result = args[i].call(this, result);\n    return result;\n  };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n  return function() {\n    if (--times < 1) {\n      return func.apply(this, arguments);\n    }\n  };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n  var memo;\n  return function() {\n    if (--times > 0) {\n      memo = func.apply(this, arguments);\n    }\n    if (times <= 1) func = null;\n    return memo;\n  };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n  predicate = cb(predicate, context);\n  var _keys = keys(obj), key;\n  for (var i = 0, length = _keys.length; i < length; i++) {\n    key = _keys[i];\n    if (predicate(obj[key], key, obj)) return key;\n  }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n  return function(array, predicate, context) {\n    predicate = cb(predicate, context);\n    var length = getLength(array);\n    var index = dir > 0 ? 0 : length - 1;\n    for (; index >= 0 && index < length; index += dir) {\n      if (predicate(array[index], index, array)) return index;\n    }\n    return -1;\n  };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n  iteratee = cb(iteratee, context, 1);\n  var value = iteratee(obj);\n  var low = 0, high = getLength(array);\n  while (low < high) {\n    var mid = Math.floor((low + high) / 2);\n    if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n  }\n  return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n  return function(array, item, idx) {\n    var i = 0, length = getLength(array);\n    if (typeof idx == 'number') {\n      if (dir > 0) {\n        i = idx >= 0 ? idx : Math.max(idx + length, i);\n      } else {\n        length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n      }\n    } else if (sortedIndex && idx && length) {\n      idx = sortedIndex(array, item);\n      return array[idx] === item ? idx : -1;\n    }\n    if (item !== item) {\n      idx = predicateFind(slice.call(array, i, length), isNaN);\n      return idx >= 0 ? idx + i : -1;\n    }\n    for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n      if (array[idx] === item) return idx;\n    }\n    return -1;\n  };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n  var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n  var key = keyFinder(obj, predicate, context);\n  if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n  return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n  iteratee = optimizeCb(iteratee, context);\n  var i, length;\n  if (isArrayLike(obj)) {\n    for (i = 0, length = obj.length; i < length; i++) {\n      iteratee(obj[i], i, obj);\n    }\n  } else {\n    var _keys = keys(obj);\n    for (i = 0, length = _keys.length; i < length; i++) {\n      iteratee(obj[_keys[i]], _keys[i], obj);\n    }\n  }\n  return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n  iteratee = cb(iteratee, context);\n  var _keys = !isArrayLike(obj) && keys(obj),\n      length = (_keys || obj).length,\n      results = Array(length);\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys ? _keys[index] : index;\n    results[index] = iteratee(obj[currentKey], currentKey, obj);\n  }\n  return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n  // Wrap code that reassigns argument variables in a separate function than\n  // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n  var reducer = function(obj, iteratee, memo, initial) {\n    var _keys = !isArrayLike(obj) && keys(obj),\n        length = (_keys || obj).length,\n        index = dir > 0 ? 0 : length - 1;\n    if (!initial) {\n      memo = obj[_keys ? _keys[index] : index];\n      index += dir;\n    }\n    for (; index >= 0 && index < length; index += dir) {\n      var currentKey = _keys ? _keys[index] : index;\n      memo = iteratee(memo, obj[currentKey], currentKey, obj);\n    }\n    return memo;\n  };\n\n  return function(obj, iteratee, memo, context) {\n    var initial = arguments.length >= 3;\n    return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n  };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n  var results = [];\n  predicate = cb(predicate, context);\n  each(obj, function(value, index, list) {\n    if (predicate(value, index, list)) results.push(value);\n  });\n  return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n  return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n  predicate = cb(predicate, context);\n  var _keys = !isArrayLike(obj) && keys(obj),\n      length = (_keys || obj).length;\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys ? _keys[index] : index;\n    if (!predicate(obj[currentKey], currentKey, obj)) return false;\n  }\n  return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n  predicate = cb(predicate, context);\n  var _keys = !isArrayLike(obj) && keys(obj),\n      length = (_keys || obj).length;\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys ? _keys[index] : index;\n    if (predicate(obj[currentKey], currentKey, obj)) return true;\n  }\n  return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n  if (!isArrayLike(obj)) obj = values(obj);\n  if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n  return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n  var contextPath, func;\n  if (isFunction(path)) {\n    func = path;\n  } else {\n    path = toPath(path);\n    contextPath = path.slice(0, -1);\n    path = path[path.length - 1];\n  }\n  return map(obj, function(context) {\n    var method = func;\n    if (!method) {\n      if (contextPath && contextPath.length) {\n        context = deepGet(context, contextPath);\n      }\n      if (context == null) return void 0;\n      method = context[path];\n    }\n    return method == null ? method : method.apply(context, args);\n  });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n  return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n  return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n  var result = -Infinity, lastComputed = -Infinity,\n      value, computed;\n  if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n    obj = isArrayLike(obj) ? obj : values(obj);\n    for (var i = 0, length = obj.length; i < length; i++) {\n      value = obj[i];\n      if (value != null && value > result) {\n        result = value;\n      }\n    }\n  } else {\n    iteratee = cb(iteratee, context);\n    each(obj, function(v, index, list) {\n      computed = iteratee(v, index, list);\n      if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) {\n        result = v;\n        lastComputed = computed;\n      }\n    });\n  }\n  return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n  var result = Infinity, lastComputed = Infinity,\n      value, computed;\n  if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n    obj = isArrayLike(obj) ? obj : values(obj);\n    for (var i = 0, length = obj.length; i < length; i++) {\n      value = obj[i];\n      if (value != null && value < result) {\n        result = value;\n      }\n    }\n  } else {\n    iteratee = cb(iteratee, context);\n    each(obj, function(v, index, list) {\n      computed = iteratee(v, index, list);\n      if (computed < lastComputed || (computed === Infinity && result === Infinity)) {\n        result = v;\n        lastComputed = computed;\n      }\n    });\n  }\n  return result;\n}\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n  if (!obj) return [];\n  if (isArray(obj)) return slice.call(obj);\n  if (isString(obj)) {\n    // Keep surrogate pair characters together.\n    return obj.match(reStrSymbol);\n  }\n  if (isArrayLike(obj)) return map(obj, identity);\n  return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\nimport toArray from './toArray.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n  if (n == null || guard) {\n    if (!isArrayLike(obj)) obj = values(obj);\n    return obj[random(obj.length - 1)];\n  }\n  var sample = toArray(obj);\n  var length = getLength(sample);\n  n = Math.max(Math.min(n, length), 0);\n  var last = length - 1;\n  for (var index = 0; index < n; index++) {\n    var rand = random(index, last);\n    var temp = sample[index];\n    sample[index] = sample[rand];\n    sample[rand] = temp;\n  }\n  return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n  return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n  var index = 0;\n  iteratee = cb(iteratee, context);\n  return pluck(map(obj, function(value, key, list) {\n    return {\n      value: value,\n      index: index++,\n      criteria: iteratee(value, key, list)\n    };\n  }).sort(function(left, right) {\n    var a = left.criteria;\n    var b = right.criteria;\n    if (a !== b) {\n      if (a > b || a === void 0) return 1;\n      if (a < b || b === void 0) return -1;\n    }\n    return left.index - right.index;\n  }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n  return function(obj, iteratee, context) {\n    var result = partition ? [[], []] : {};\n    iteratee = cb(iteratee, context);\n    each(obj, function(value, index) {\n      var key = iteratee(value, index, obj);\n      behavior(result, value, key);\n    });\n    return result;\n  };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n  if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n  result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n  if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n  result[pass ? 0 : 1].push(value);\n}, true);\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n  if (obj == null) return 0;\n  return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n  return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n  var result = {}, iteratee = keys[0];\n  if (obj == null) return result;\n  if (isFunction(iteratee)) {\n    if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n    keys = allKeys(obj);\n  } else {\n    iteratee = keyInObj;\n    keys = flatten(keys, false, false);\n    obj = Object(obj);\n  }\n  for (var i = 0, length = keys.length; i < length; i++) {\n    var key = keys[i];\n    var value = obj[key];\n    if (iteratee(value, key, obj)) result[key] = value;\n  }\n  return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n  var iteratee = keys[0], context;\n  if (isFunction(iteratee)) {\n    iteratee = negate(iteratee);\n    if (keys.length > 1) context = keys[1];\n  } else {\n    keys = map(flatten(keys, false, false), String);\n    iteratee = function(value, key) {\n      return !contains(keys, key);\n    };\n  }\n  return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n  return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n  if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n  if (n == null || guard) return array[0];\n  return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n  return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n  if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n  if (n == null || guard) return array[array.length - 1];\n  return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n  return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n  return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n  rest = flatten(rest, true, true);\n  return filter(array, function(value){\n    return !contains(rest, value);\n  });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n  return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n  if (!isBoolean(isSorted)) {\n    context = iteratee;\n    iteratee = isSorted;\n    isSorted = false;\n  }\n  if (iteratee != null) iteratee = cb(iteratee, context);\n  var result = [];\n  var seen = [];\n  for (var i = 0, length = getLength(array); i < length; i++) {\n    var value = array[i],\n        computed = iteratee ? iteratee(value, i, array) : value;\n    if (isSorted && !iteratee) {\n      if (!i || seen !== computed) result.push(value);\n      seen = computed;\n    } else if (iteratee) {\n      if (!contains(seen, computed)) {\n        seen.push(computed);\n        result.push(value);\n      }\n    } else if (!contains(result, value)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n  return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n  var result = [];\n  var argsLength = arguments.length;\n  for (var i = 0, length = getLength(array); i < length; i++) {\n    var item = array[i];\n    if (contains(result, item)) continue;\n    var j;\n    for (j = 1; j < argsLength; j++) {\n      if (!contains(arguments[j], item)) break;\n    }\n    if (j === argsLength) result.push(item);\n  }\n  return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n  var length = (array && max(array, getLength).length) || 0;\n  var result = Array(length);\n\n  for (var index = 0; index < length; index++) {\n    result[index] = pluck(array, index);\n  }\n  return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength  from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n  var result = {};\n  for (var i = 0, length = getLength(list); i < length; i++) {\n    if (values) {\n      result[list[i]] = values[i];\n    } else {\n      result[list[i][0]] = list[i][1];\n    }\n  }\n  return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n  if (stop == null) {\n    stop = start || 0;\n    start = 0;\n  }\n  if (!step) {\n    step = stop < start ? -1 : 1;\n  }\n\n  var length = Math.max(Math.ceil((stop - start) / step), 0);\n  var range = Array(length);\n\n  for (var idx = 0; idx < length; idx++, start += step) {\n    range[idx] = start;\n  }\n\n  return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n  if (count == null || count < 1) return [];\n  var result = [];\n  var i = 0, length = array.length;\n  while (i < length) {\n    result.push(slice.call(array, i, i += count));\n  }\n  return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n  return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n  each(functions(obj), function(name) {\n    var func = _[name] = obj[name];\n    _.prototype[name] = function() {\n      var args = [this._wrapped];\n      push.apply(args, arguments);\n      return chainResult(this, func.apply(_, args));\n    };\n  });\n  return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n  var method = ArrayProto[name];\n  _.prototype[name] = function() {\n    var obj = this._wrapped;\n    if (obj != null) {\n      method.apply(obj, arguments);\n      if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n        delete obj[0];\n      }\n    }\n    return chainResult(this, obj);\n  };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n  var method = ArrayProto[name];\n  _.prototype[name] = function() {\n    var obj = this._wrapped;\n    if (obj != null) obj = method.apply(obj, arguments);\n    return chainResult(this, obj);\n  };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n    if (!getRandomValues) {\n        if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n            throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n        }\n        getRandomValues = crypto.getRandomValues.bind(crypto);\n    }\n    return getRandomValues(rnds8);\n}\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n    byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n    return (byteToHex[arr[offset + 0]] +\n        byteToHex[arr[offset + 1]] +\n        byteToHex[arr[offset + 2]] +\n        byteToHex[arr[offset + 3]] +\n        '-' +\n        byteToHex[arr[offset + 4]] +\n        byteToHex[arr[offset + 5]] +\n        '-' +\n        byteToHex[arr[offset + 6]] +\n        byteToHex[arr[offset + 7]] +\n        '-' +\n        byteToHex[arr[offset + 8]] +\n        byteToHex[arr[offset + 9]] +\n        '-' +\n        byteToHex[arr[offset + 10]] +\n        byteToHex[arr[offset + 11]] +\n        byteToHex[arr[offset + 12]] +\n        byteToHex[arr[offset + 13]] +\n        byteToHex[arr[offset + 14]] +\n        byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n    const uuid = unsafeStringify(arr, offset);\n    if (!validate(uuid)) {\n        throw TypeError('Stringified UUID is invalid');\n    }\n    return uuid;\n}\nexport default stringify;\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n    if (native.randomUUID && !buf && !options) {\n        return native.randomUUID();\n    }\n    options = options || {};\n    const rnds = options.random ?? options.rng?.() ?? rng();\n    if (rnds.length < 16) {\n        throw new Error('Random bytes length must be >= 16');\n    }\n    rnds[6] = (rnds[6] & 0x0f) | 0x40;\n    rnds[8] = (rnds[8] & 0x3f) | 0x80;\n    if (buf) {\n        offset = offset || 0;\n        if (offset < 0 || offset + 16 > buf.length) {\n            throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n        }\n        for (let i = 0; i < 16; ++i) {\n            buf[offset + i] = rnds[i];\n        }\n        return buf;\n    }\n    return unsafeStringify(rnds);\n}\nexport default v4;\n"],"names":["BlobServiceProperties","serializedName","xmlName","type","name","className","modelProperties","blobAnalyticsLogging","hourMetrics","minuteMetrics","cors","xmlIsWrapped","xmlElementName","element","defaultServiceVersion","deleteRetentionPolicy","staticWebsite","Logging","version","required","deleteProperty","read","write","retentionPolicy","RetentionPolicy","enabled","days","constraints","InclusiveMinimum","Metrics","includeAPIs","CorsRule","allowedOrigins","allowedMethods","allowedHeaders","exposedHeaders","maxAgeInSeconds","StaticWebsite","indexDocument","errorDocument404Path","defaultIndexDocumentPath","StorageError","message","code","authenticationErrorDetail","BlobServiceStatistics","geoReplication","GeoReplication","status","allowedValues","lastSyncOn","ListContainersSegmentResponse","serviceEndpoint","xmlIsAttribute","prefix","marker","maxPageSize","containerItems","continuationToken","ContainerItem","deleted","properties","metadata","value","ContainerProperties","lastModified","etag","leaseStatus","leaseState","leaseDuration","publicAccess","hasImmutabilityPolicy","hasLegalHold","defaultEncryptionScope","preventEncryptionScopeOverride","deletedOn","remainingRetentionDays","isImmutableStorageWithVersioningEnabled","KeyInfo","startsOn","expiresOn","UserDelegationKey","signedObjectId","signedTenantId","signedStartsOn","signedExpiresOn","signedService","signedVersion","FilterBlobSegment","where","blobs","FilterBlobItem","containerName","tags","BlobTags","blobTagSet","BlobTag","key","SignedIdentifier","id","accessPolicy","AccessPolicy","permissions","ListBlobsFlatSegmentResponse","segment","BlobFlatListSegment","blobItems","BlobItemInternal","snapshot","versionId","isCurrentVersion","blobTags","objectReplicationMetadata","hasVersionsOnly","BlobName","encoded","content","xmlIsMsText","BlobPropertiesInternal","createdOn","contentLength","contentType","contentEncoding","contentLanguage","contentMD5","contentDisposition","cacheControl","blobSequenceNumber","blobType","copyId","copyStatus","copySource","copyProgress","copyCompletedOn","copyStatusDescription","serverEncrypted","incrementalCopy","destinationSnapshot","accessTier","accessTierInferred","archiveStatus","customerProvidedKeySha256","encryptionScope","accessTierChangedOn","tagCount","isSealed","rehydratePriority","lastAccessedOn","immutabilityPolicyExpiresOn","immutabilityPolicyMode","legalHold","ListBlobsHierarchySegmentResponse","delimiter","BlobHierarchyListSegment","blobPrefixes","BlobPrefix","BlockLookupList","committed","uncommitted","latest","BlockList","committedBlocks","uncommittedBlocks","Block","size","PageList","pageRange","clearRange","PageRange","start","end","ClearRange","QueryRequest","queryType","expression","inputSerialization","outputSerialization","QuerySerialization","format","QueryFormat","delimitedTextConfiguration","jsonTextConfiguration","arrowConfiguration","parquetTextConfiguration","DelimitedTextConfiguration","columnSeparator","fieldQuote","recordSeparator","escapeChar","headersPresent","JsonTextConfiguration","ArrowConfiguration","schema","ArrowField","precision","scale","ServiceSetPropertiesHeaders","clientRequestId","requestId","errorCode","ServiceSetPropertiesExceptionHeaders","ServiceGetPropertiesHeaders","ServiceGetPropertiesExceptionHeaders","ServiceGetStatisticsHeaders","date","ServiceGetStatisticsExceptionHeaders","ServiceListContainersSegmentHeaders","ServiceListContainersSegmentExceptionHeaders","ServiceGetUserDelegationKeyHeaders","ServiceGetUserDelegationKeyExceptionHeaders","ServiceGetAccountInfoHeaders","skuName","accountKind","isHierarchicalNamespaceEnabled","ServiceGetAccountInfoExceptionHeaders","ServiceSubmitBatchHeaders","ServiceSubmitBatchExceptionHeaders","ServiceFilterBlobsHeaders","ServiceFilterBlobsExceptionHeaders","ContainerCreateHeaders","ContainerCreateExceptionHeaders","ContainerGetPropertiesHeaders","headerCollectionPrefix","blobPublicAccess","denyEncryptionScopeOverride","ContainerGetPropertiesExceptionHeaders","ContainerDeleteHeaders","ContainerDeleteExceptionHeaders","ContainerSetMetadataHeaders","ContainerSetMetadataExceptionHeaders","ContainerGetAccessPolicyHeaders","ContainerGetAccessPolicyExceptionHeaders","ContainerSetAccessPolicyHeaders","ContainerSetAccessPolicyExceptionHeaders","ContainerRestoreHeaders","ContainerRestoreExceptionHeaders","ContainerRenameHeaders","ContainerRenameExceptionHeaders","ContainerSubmitBatchHeaders","ContainerSubmitBatchExceptionHeaders","ContainerFilterBlobsHeaders","ContainerFilterBlobsExceptionHeaders","ContainerAcquireLeaseHeaders","leaseId","ContainerAcquireLeaseExceptionHeaders","ContainerReleaseLeaseHeaders","ContainerReleaseLeaseExceptionHeaders","ContainerRenewLeaseHeaders","ContainerRenewLeaseExceptionHeaders","ContainerBreakLeaseHeaders","leaseTime","ContainerBreakLeaseExceptionHeaders","ContainerChangeLeaseHeaders","ContainerChangeLeaseExceptionHeaders","ContainerListBlobFlatSegmentHeaders","ContainerListBlobFlatSegmentExceptionHeaders","ContainerListBlobHierarchySegmentHeaders","ContainerListBlobHierarchySegmentExceptionHeaders","ContainerGetAccountInfoHeaders","ContainerGetAccountInfoExceptionHeaders","BlobDownloadHeaders","objectReplicationPolicyId","objectReplicationRules","contentRange","acceptRanges","blobCommittedBlockCount","isServerEncrypted","encryptionKeySha256","blobContentMD5","lastAccessed","contentCrc64","BlobDownloadExceptionHeaders","BlobGetPropertiesHeaders","isIncrementalCopy","BlobGetPropertiesExceptionHeaders","BlobDeleteHeaders","BlobDeleteExceptionHeaders","BlobUndeleteHeaders","BlobUndeleteExceptionHeaders","BlobSetExpiryHeaders","BlobSetExpiryExceptionHeaders","BlobSetHttpHeadersHeaders","BlobSetHttpHeadersExceptionHeaders","BlobSetImmutabilityPolicyHeaders","immutabilityPolicyExpiry","BlobSetImmutabilityPolicyExceptionHeaders","BlobDeleteImmutabilityPolicyHeaders","BlobDeleteImmutabilityPolicyExceptionHeaders","BlobSetLegalHoldHeaders","BlobSetLegalHoldExceptionHeaders","BlobSetMetadataHeaders","BlobSetMetadataExceptionHeaders","BlobAcquireLeaseHeaders","BlobAcquireLeaseExceptionHeaders","BlobReleaseLeaseHeaders","BlobReleaseLeaseExceptionHeaders","BlobRenewLeaseHeaders","BlobRenewLeaseExceptionHeaders","BlobChangeLeaseHeaders","BlobChangeLeaseExceptionHeaders","BlobBreakLeaseHeaders","BlobBreakLeaseExceptionHeaders","BlobCreateSnapshotHeaders","BlobCreateSnapshotExceptionHeaders","BlobStartCopyFromURLHeaders","BlobStartCopyFromURLExceptionHeaders","BlobCopyFromURLHeaders","defaultValue","isConstant","xMsContentCrc64","BlobCopyFromURLExceptionHeaders","BlobAbortCopyFromURLHeaders","BlobAbortCopyFromURLExceptionHeaders","BlobSetTierHeaders","BlobSetTierExceptionHeaders","BlobGetAccountInfoHeaders","BlobGetAccountInfoExceptionHeaders","BlobQueryHeaders","copyCompletionTime","BlobQueryExceptionHeaders","BlobGetTagsHeaders","BlobGetTagsExceptionHeaders","BlobSetTagsHeaders","BlobSetTagsExceptionHeaders","PageBlobCreateHeaders","PageBlobCreateExceptionHeaders","PageBlobUploadPagesHeaders","PageBlobUploadPagesExceptionHeaders","PageBlobClearPagesHeaders","PageBlobClearPagesExceptionHeaders","PageBlobUploadPagesFromURLHeaders","PageBlobUploadPagesFromURLExceptionHeaders","PageBlobGetPageRangesHeaders","blobContentLength","PageBlobGetPageRangesExceptionHeaders","PageBlobGetPageRangesDiffHeaders","PageBlobGetPageRangesDiffExceptionHeaders","PageBlobResizeHeaders","PageBlobResizeExceptionHeaders","PageBlobUpdateSequenceNumberHeaders","PageBlobUpdateSequenceNumberExceptionHeaders","PageBlobCopyIncrementalHeaders","PageBlobCopyIncrementalExceptionHeaders","AppendBlobCreateHeaders","AppendBlobCreateExceptionHeaders","AppendBlobAppendBlockHeaders","blobAppendOffset","AppendBlobAppendBlockExceptionHeaders","AppendBlobAppendBlockFromUrlHeaders","AppendBlobAppendBlockFromUrlExceptionHeaders","AppendBlobSealHeaders","AppendBlobSealExceptionHeaders","BlockBlobUploadHeaders","BlockBlobUploadExceptionHeaders","BlockBlobPutBlobFromUrlHeaders","BlockBlobPutBlobFromUrlExceptionHeaders","BlockBlobStageBlockHeaders","BlockBlobStageBlockExceptionHeaders","BlockBlobStageBlockFromURLHeaders","BlockBlobStageBlockFromURLExceptionHeaders","BlockBlobCommitBlockListHeaders","BlockBlobCommitBlockListExceptionHeaders","BlockBlobGetBlockListHeaders","BlockBlobGetBlockListExceptionHeaders","parameterPath","mapper","blobServiceProperties","accept","url","skipEncoding","restype","comp","timeoutInSeconds","accept1","comp2","keyInfo","restype1","body","comp4","multipartContentType","comp5","restype2","access","ifModifiedSince","ifUnmodifiedSince","comp6","comp7","comp8","comp10","action","duration","proposedLeaseId","action1","leaseId1","action2","action3","breakPeriod","action4","proposedLeaseId1","include1","collectionFormat","range","encryptionKey","encryptionAlgorithm","ifMatch","ifNoneMatch","ifTags","blobCacheControl","blobContentType","blobContentEncoding","blobContentLanguage","blobContentDisposition","comp12","tier","sourceIfModifiedSince","sourceIfUnmodifiedSince","sourceIfMatch","sourceIfNoneMatch","sourceIfTags","blobTagsString","legalHold1","sourceContentMD5","copySourceAuthorization","copySourceTags","queryRequest","comp18","transactionalContentMD5","transactionalContentCrc64","contentType1","body1","accept2","comp19","pageWrite","ifSequenceNumberLessThanOrEqualTo","ifSequenceNumberLessThan","ifSequenceNumberEqualTo","sourceUrl","sourceContentCrc64","comp20","comp22","maxSize","appendPosition","sourceRange1","blobType2","comp24","blockId","blocks","comp25","ServiceImpl","constructor","client","this","setProperties","options","sendOperationRequest","setPropertiesOperationSpec","getProperties","getPropertiesOperationSpec","getStatistics","getStatisticsOperationSpec","listContainersSegment","listContainersSegmentOperationSpec","getUserDelegationKey","getUserDelegationKeyOperationSpec","getAccountInfo","getAccountInfoOperationSpec","submitBatch","submitBatchOperationSpec","filterBlobs","filterBlobsOperationSpec","xmlSerializer","path","httpMethod","responses","headersMapper","default","bodyMapper","requestBody","queryParameters","urlParameters","headerParameters","isXML","mediaType","serializer","ContainerImpl","create","createOperationSpec","deleteOperationSpec","setMetadata","setMetadataOperationSpec","getAccessPolicy","getAccessPolicyOperationSpec","setAccessPolicy","setAccessPolicyOperationSpec","restore","restoreOperationSpec","rename","sourceContainerName","renameOperationSpec","acquireLease","acquireLeaseOperationSpec","releaseLease","releaseLeaseOperationSpec","renewLease","renewLeaseOperationSpec","breakLease","breakLeaseOperationSpec","changeLease","changeLeaseOperationSpec","listBlobFlatSegment","listBlobFlatSegmentOperationSpec","listBlobHierarchySegment","listBlobHierarchySegmentOperationSpec","BlobImpl","download","downloadOperationSpec","undelete","undeleteOperationSpec","setExpiry","expiryOptions","setExpiryOperationSpec","setHttpHeaders","setHttpHeadersOperationSpec","setImmutabilityPolicy","setImmutabilityPolicyOperationSpec","deleteImmutabilityPolicy","deleteImmutabilityPolicyOperationSpec","setLegalHold","setLegalHoldOperationSpec","createSnapshot","createSnapshotOperationSpec","startCopyFromURL","startCopyFromURLOperationSpec","copyFromURL","copyFromURLOperationSpec","abortCopyFromURL","abortCopyFromURLOperationSpec","setTier","setTierOperationSpec","query","queryOperationSpec","getTags","getTagsOperationSpec","setTags","setTagsOperationSpec","PageBlobImpl","uploadPages","uploadPagesOperationSpec","clearPages","clearPagesOperationSpec","uploadPagesFromURL","sourceRange","uploadPagesFromURLOperationSpec","getPageRanges","getPageRangesOperationSpec","getPageRangesDiff","getPageRangesDiffOperationSpec","resize","resizeOperationSpec","updateSequenceNumber","sequenceNumberAction","updateSequenceNumberOperationSpec","copyIncremental","copyIncrementalOperationSpec","AppendBlobImpl","appendBlock","appendBlockOperationSpec","appendBlockFromUrl","appendBlockFromUrlOperationSpec","seal","sealOperationSpec","BlockBlobImpl","upload","uploadOperationSpec","putBlobFromUrl","putBlobFromUrlOperationSpec","stageBlock","stageBlockOperationSpec","stageBlockFromURL","stageBlockFromURLOperationSpec","commitBlockList","commitBlockListOperationSpec","getBlockList","listType","getBlockListOperationSpec","StorageClient","_a","_b","undefined","Error","packageDetails","userAgentPrefix","userAgentOptions","super","Object","assign","requestContentType","endpoint","baseUri","service","container","blob","pageBlob","appendBlob","blockBlob","StorageContextClient","operationArguments","operationSpec","operationSpecToSend","pipeline","accountName","storageClientContext","isHttps","credential","tracingClient","packageName","packageVersion","namespace","BlobSASPermissions","add","delete","deleteVersion","tag","move","execute","permanentDelete","parse","blobSASPermissions","char","RangeError","from","permissionLike","toString","push","join","ContainerSASPermissions","list","filterByTags","containerSASPermissions","UserDelegationKeyCredential","ipRangeToString","ipRange","SASProtocol","SASQueryParameters","ipRangeInner","signature","permissionsOrOptions","services","resourceTypes","protocol","identifier","resource","userDelegationKey","preauthorizedAgentObjectId","correlationId","signedOid","params","queries","param","tryAppendQueryParameter","encodeURIComponent","length","generateBlobSASQueryParameters","blobSASSignatureValues","sharedKeyCredentialOrUserDelegationKey","generateBlobSASQueryParametersInternal","sasQueryParameters","sharedKeyCredential","userDelegationKeyCredential","TypeError","SASSignatureValuesSanityCheckAndAutofill","verifiedPermissions","timestamp","snapshotTime","blobName","stringToSign","getCanonicalName","computeHMACSHA256","generateBlobSASQueryParameters20201206","generateBlobSASQueryParametersUDK20201206","generateBlobSASQueryParameters20181109","generateBlobSASQueryParametersUDK20200210","generateBlobSASQueryParametersUDK20181109","generateBlobSASQueryParameters20150405","elements","BlobLeaseClient","_leaseId","_url","clientContext","_isContainer","_containerOrBlobOperation","_c","_d","_e","conditions","tagConditions","withSpan","async","updatedOptions","abortSignal","modifiedAccessConditions","tracingOptions","response","operationOptions","BlobQueryResponse","originalResponse","blobBody","readableStreamBody","_response","_options","BlockBlobTier","PremiumPageBlobTier","StorageBlobAudience","toAccessTier","ensureCpkIfSpecified","cpk","rangeResponseFromModel","parsedBody","map","x","offset","count","PollerStoppedError","setPrototypeOf","prototype","PollerCancelledError","Poller","operation","resolveOnUnsuccessful","stopped","pollProgressCallbacks","promise","Promise","resolve","reject","catch","startPolling","pollOptions","isStopped","isDone","poll","delay","pollOnce","update","fireProgress","bind","processUpdatedState","state","callback","cancelOnce","cancel","pollOncePromise","clearPollOncePromise","then","error","isCancelled","getResult","pollUntilDone","onProgress","filter","c","Boolean","isCompleted","stopPolling","cancelOperation","cancelPromise","getOperationState","result","BlobBeginCopyFromUrlPoller","blobClient","intervalInMs","resumeFrom","startCopyFromURLOptions","JSON","makeBlobBeginCopyFromURLPollOperation","isStarted","prevCopyProgress","err","stringify","rangeToString","iRange","BatchStates","Batch","concurrency","actives","completed","operations","Good","emitter","EventEmitter","addOperation","parallelExecute","emit","on","nextOperation","BufferScheduler","BlobClient","_name","_containerName","urlOrConnectionString","credentialOrPipelineOrContainerName","blobNameOrOptions","AnonymousCredential","extractedCreds","kind","accountKey","proxyOptions","proxyUri","accountSas","getBlobAndContainerNamesFromUrl","blobContext","_snapshot","Parameters","SNAPSHOT","_versionId","VERSIONID","withSnapshot","withVersion","getAppendBlobClient","AppendBlobClient","getBlockBlobClient","BlockBlobClient","getPageBlobClient","PageBlobClient","customerProvidedKey","res","leaseAccessConditions","requestOptions","onDownloadProgress","rangeGetContentMD5","rangeGetContentCRC64","rangeGetContentCrc64","cpkInfo","wrappedRes","objectReplicationDestinationPolicyId","objectReplicationSourceProperties","maxRetryRequests","updatedDownloadOptions","exists","e","statusCode","details","deleteSnapshots","deleteIfExists","succeeded","parsedHeaders","setHTTPHeaders","blobHTTPHeaders","blobHttpHeaders","getBlobLeaseClient","proposeLeaseId","beginCopyFromURL","poller","args","syncCopyFromURL","sourceConditions","_f","_g","sourceModifiedAccessConditions","sourceAuthorization","immutabilityPolicy","expiriesOn","policyMode","setAccessTier","downloadToBuffer","param1","param2","param3","param4","buffer","Buffer","blockSize","alloc","transferProgress","batch","off","chunkEnd","maxRetryRequestsPerBlock","streamToBuffer","loadedBytes","do","downloadToFile","filePath","blobDownloadStream","parsedUrl","URL","host","split","pathComponents","pathname","match","decodeURIComponent","replace","sealBlob","generateSasUrl","sas","generateSasStringToSign","generateUserDelegationSasUrl","generateUserDelegationSasStringToSign","legalHoldEnabled","appendBlobContext","createIfNotExists","appendPositionAccessConditions","onUploadProgress","appendBlockFromURL","sourceURL","sourceOffset","blockBlobContext","_blobContext","inputTextConfiguration","outputTextConfiguration","onError","syncUploadFromURL","uploadData","data","ArrayBuffer","byteOffset","byteLength","uploadSeekableInternal","slice","browserBlob","Blob","uploadBrowserData","browserData","bodyFactory","maxSingleShotSize","Math","ceil","numBlocks","floor","blockList","blockIDPrefix","i","blockID","uploadFile","fsStat","uploadStream","stream","bufferSize","maxConcurrency","blockNum","scheduler","pageBlobContext","sequenceNumberAccessConditions","destOffset","listPageRangesSegment","listPageRangeItemSegments","arguments","getPageRangeItemSegmentsResponse","listPageRangeItems","e_1","next","done","getPageRangesSegment","e_1_1","return","call","listPageRanges","iter","Symbol","asyncIterator","byPage","settings","prevSnapshot","prevsnapshot","listPageRangesDiffSegment","prevSnapshotOrUrl","listPageRangeDiffItemSegments","listPageRangeDiffItems","e_2","e_2_1","listPageRangesDiff","getPageRangesDiffForManagedDisks","prevSnapshotUrl","sequenceNumber","startCopyIncremental","getBodyAsText","batchResponse","fileReader","FileReader","onloadend","ev","target","onerror","readAsText","blobToString","HTTP_HEADER_DELIMITER","BatchResponseParser","subRequests","responseBatchBoundary","perResponsePrefix","batchResponseEnding","parseBatchResponse","HTTP_ACCEPTED","subResponses","subResponseCount","deserializedSubResponses","Array","subResponsesSucceededCount","subResponsesFailedCount","index","subResponse","deserializedSubResponse","headers","responseLines","subRespHeaderStartFound","subRespHeaderEndFound","subRespFailed","contentId","responseLine","trim","bodyAsText","indexOf","tokens","set","X_MS_ERROR_CODE","startsWith","CONTENT_ID","parseInt","statusMessage","Number","isInteger","_request","get","log","MutexLockStatus","Mutex","lock","keys","UNLOCKED","LOCKED","onUnlockEvent","unlock","emitUnlockEvent","handler","listeners","shift","setImmediate","BlobBatch","batchRequest","InnerBatchRequest","getMultiPartContentType","getMultipartContentType","getHttpRequestBody","getSubRequests","addSubRequestInternal","subRequest","assembleSubRequestFunc","preAddSubRequest","postAddSubRequest","setBatchType","batchType","deleteBlob","urlOrBlobClient","credentialOrOptions","createPipeline","setBlobAccessTier","credentialOrTier","tierOrOptions","operationCount","tempGuid","boundary","subRequestPrefix","CONTENT_TYPE","CONTENT_TRANSFER_ENCODING","batchRequestEnding","Map","corePipeline","addPolicy","stringifyXML","serializerOptions","xml","xmlCharKey","phase","sendRequest","request","xMsHeaderName","X_MS_VERSION","appendSubRequestToBody","afterPhase","scopes","challengeCallbacks","authorizeRequestOnChallenge","Pipeline","_credential","_corePipeline","method","BlobBatchClient","credentialOrPipeline","serviceOrContainerContext","createBatch","deleteBlobs","urlsOrBlobClients","setBlobsAccessTier","batchRequestBody","rawBatchResponse","str","batchResponseParser","responseSummary","ContainerClient","getContainerNameFromUrl","containerContext","getBlobClient","signedIdentifiers","Date","containerAcl","acl","uploadBlockBlob","blockBlobClient","blobItemInternal","blobPrefixInternal","listSegments","marker_1","listBlobsFlatSegmentResponse","listItems","listBlobsFlat","include","includeCopy","includeDeleted","includeMetadata","includeSnapshots","includeVersions","includeUncommitedBlobs","includeTags","includeDeletedWithVersions","includeImmutabilityPolicy","includeLegalHold","listHierarchySegments","delimiter_1","listBlobsHierarchySegmentResponse","listItemsByHierarchy","listBlobsByHierarchy","findBlobsByTagsSegment","tagFilterSqlExpression","tagValue","findBlobsByTagsSegments","tagFilterSqlExpression_1","findBlobsByTagsItems","e_3","e_3_1","findBlobsByTags","listSegmentOptions","hostname","getBlobBatchClient","AccountSASPermissions","process","accountSASPermissions","AccountSASResourceTypes","object","accountSASResourceTypes","AccountSASServices","file","queue","table","accountSASServices","generateAccountSASQueryParametersInternal","accountSASSignatureValues","parsedPermissions","parsedServices","parsedResourceTypes","BlobServiceClient","fromConnectionString","connectionString","serviceContext","getContainerClient","createContainer","containerClient","containerCreateResponse","deleteContainer","undeleteContainer","deletedContainerName","deletedContainerVersion","destinationContainerName","containerUndeleteResponse","renameContainer","containerRenameResponse","sourceLeaseId","sourceCondition","listContainersSegmentResponse","listContainers","includeSystem","generateAccountSasUrl","now","getTime","StorageRetryPolicyFactory","retryOptions","nextPolicy","StorageRetryPolicy","_defaultHttpClient","storageBrowserPolicyName","storageRetryPolicyName","StorageRetryPolicyType","DEFAULT_RETRY_OPTIONS","maxRetryDelayInMs","maxTries","retryDelayInMs","retryPolicyType","EXPONENTIAL","secondaryHost","tryTimeoutInMs","retriableErrors","RETRY_ABORT_ERROR","StorageBrowserPolicy","toUpperCase","FORCE_BROWSER_NO_CACHE","remove","COOKIE","CONTENT_LENGTH","_nextPolicy","StorageBrowserPolicyFactory","storageCorrectContentLengthPolicyName","isPipelineLike","castPipeline","isArray","factories","toServiceClientOptions","httpClient","requestPolicyFactories","newPipeline","pipelineOptions","getCoreClientOptions","v1Client","restOptions","_coreHttpClient","loggingOptions","additionalAllowedHeaderNames","additionalAllowedQueryParameters","logger","info","serializationOptions","deserializationOptions","parseXML","removePolicy","shouldRetry","isPrimaryRetry","attempt","retriableError","includes","calculateDelay","delayTimeInMs","min","pow","FIXED","random","TIMEOUT","String","primaryUrl","secondaryUrl","secondaryHas404","retryAgain","storageRetryPolicy","downlevelResults","knownFactoryFunctions","isAnonymousCredential","isStorageSharedKeyCredential","isCoreHttpBearerTokenFactory","isStorageBrowserPolicyFactory","isStorageRetryPolicyFactory","isStorageTelemetryPolicyFactory","isCoreHttpPolicyFactory","novelFactories","factory","some","knownFactory","hasInjector","isInjectorPolicyFactory","wrappedPolicies","afterRetry","processDownlevelPipeline","getCredentialFromPipeline","audience","allowInsecureConnection","mockRequestPolicyOptions","_logLevel","_message","shouldLog","policyName","clone","knownPolicyName","CredentialPolicy","signRequest","AnonymousCredentialPolicy","Credential","StorageSharedKeyCredential","BaseRequestPolicy","logLevel","attemptSendRequest","newRequest","storageSharedKeyCredentialPolicyName","storageSharedKeyCredentialPolicy","SDK_VERSION","SERVICE_VERSION","BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES","BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES","BLOCK_BLOB_MAX_BLOCKS","DEFAULT_BLOCK_BUFFER_SIZE_BYTES","DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES","DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS","StorageOAuthScopes","URLConstants","SIGNATURE","HTTPURLConnection","HTTP_CONFLICT","HTTP_NOT_FOUND","HTTP_PRECON_FAILED","HTTP_RANGE_NOT_SATISFIABLE","HeaderConstants","AUTHORIZATION","AUTHORIZATION_SCHEME","CONTENT_ENCODING","CONTENT_LANGUAGE","CONTENT_MD5","DATE","IF_MATCH","IF_MODIFIED_SINCE","IF_NONE_MATCH","IF_UNMODIFIED_SINCE","PREFIX_FOR_STORAGE","RANGE","USER_AGENT","X_MS_CLIENT_REQUEST_ID","X_MS_COPY_SOURCE","X_MS_DATE","X_MS_CopySourceErrorCode","ETagNone","ETagAny","BATCH_MAX_REQUEST","HTTP_LINE_ENDING","HTTP_VERSION_1_1","EncryptionAlgorithmAES25","DevelopmentConnectionString","StorageBlobLoggingAllowedHeaderNames","StorageBlobLoggingAllowedQueryParameters","BlobUsesCustomerSpecifiedEncryptionMsg","BlobDoesNotUseCustomerSpecifiedEncryption","PathStylePorts","escapeURLPath","urlParsed","getValueInConnString","argument","extractConnectionStringParts","search","matchCredentials","getProxyUriFromDevConnString","blobEndpoint","endsWith","defaultEndpointsProtocol","endpointSuffix","toLowerCase","getAccountNameFromUrl","substring","appendToURLPath","setURLParameter","encodedName","encodedValue","searchString","searchPieces","pair","getURLParameter","searchParams","setURLHost","getURLPath","getURLScheme","getURLPathAndQuery","pathString","queryString","appendToURLQuery","queryParts","truncatedISO8061Date","withMilliseconds","dateString","toISOString","generateBlockID","blockIndex","maxSourceStringLength","currentString","targetLength","padString","padStart","repeat","btoa","timeInMs","aborter","abortError","timeout","abortHandler","clearTimeout","setTimeout","removeEventListener","addEventListener","iEqual","str1","str2","toLocaleLowerCase","isIpEndpointStyle","test","port","toBlobTagsString","tagPairs","hasOwnProperty","toBlobTags","toTags","blobTag","toQuerySerialization","textConfiguration","escapeCharacter","hasHeaders","parseObjectReplicationRecord","objectReplicationRecord","orProperties","ids","policyPrefix","rule","ruleId","replicationStatus","policyIndex","findIndex","policy","policyId","rules","httpAuthorizationToString","httpAuthorization","scheme","BlobNameToString","ConvertInternalResponseOfListBlobFlat","internalResponse","blobItemInteral","ConvertInternalResponseOfListBlobHierarchy","ExtractPageRangeInfoItems","pageRangeIndex","clearRangeIndex","isClear","EscapePath","assertResponse","_pureAssign","func1","func2","_pureRef","_primitiveTypes","UNDEF_VALUE","NULL_VALUE","EMPTY","FUNCTION","OBJECT","PROTOTYPE","__PROTO__","UNDEFINED","CONSTRUCTOR","SYMBOL","POLYFILL_TAG","LENGTH","NAME","CALL","TO_STRING","StrCls","StrProto","MathCls","ArrCls","ArrProto","ArrSlice","func","argArray","v","apply","_createIs","theType","_createObjIs","theName","objToString","isNullOrUndefined","isDefined","arg","isPrimitiveType","isObject","isDate","isNumber","isBoolean","isError","isTruthy","cb","defValue","objGetOwnPropertyDescriptor","obj","prop","objHasOwn","polyObjHasOwn","theObject","callbackfn","thisArg","propMap","w","g","s","_createProp","l","desc","newValue","objDefineProperties","propDesc","_createKeyValueMap","values","keyType","valueType","completeFn","writable","theMap","_assignMapValue","enumerable","asString","dumpObj","propertyValueDump","objType","stack","throwError","_objFreeze","_doNothing","_getProto","objAssign","objKeys","objFreeze","objGetPrototypeOf","createEnumKeyMap","_globalCfg","_wellKnownSymbolMap","hasInstance","isConcatSpreadable","iterator","matchAll","species","toPrimitive","toStringTag","unscopables","GLOBAL_CONFIG_KEY","_getGlobalValue","globalThis","self","window","_getGlobalConfig","gbl","_unwrapFunction","_unwrapFunctionWithPoly","funcName","clsProto","polyFunc","clsFn","theFunc","theArgs","_unwrapProp","propName","mathMax","strSlice","strSubstr","polyStrSubstr","strLeft","_polySymbols","_wellKnownSymbolCache","_globalLazyTestHooks","UNIQUE_REGISTRY_ID","_globalSymbolRegistry","gblCfg","gblSym","k","polyNewSymbol","description","theSymbol","polySymbolFor","registry","newSymbol_1","regId_1","_initTestHooks","getLazy","lazyValue","b","lzy","configurable","toJSON","_cachedGlobal","WINDOW","_getGlobalInstFn","getFn","cachedValue","getGlobal","useCached","hasDocument","hasWindow","getWindow","_symbol","_symbolFor","getHistory","isNode","versions","node","isWebWorker","WorkerGlobalScope","_initSymbol","_getSymbolKey","_iterSymbol$1","hasSymbol","getSymbol","noPoly","knownName","sym","polyGetKnownSymbol","newSymbol","symbolFor","isStrictNullOrUndefined","iterResult","failed","throw","fnApply","fn","arrAppend","elms","elm","theArray","len","idx","arrMap","arrReduce","_isProtoArray","_unsupportedError","objCreate","polyObjCreate","tempFunc","objSetPrototypeOf","proto","d","_setName","baseClass","constructCb","errorBase","theBaseClass","orgName","captureFn","captureStackTrace","__","_createCustomError","_this","_self","orgProto","polyUtcNow","_createTrimFn","exp","_fnToString","_objCtrFnString","_gblWindow","isPlainObject","Function","ex","_defaultDeepCopyHandler","plainObjDeepCopyHandler","defaultDeepCopyHandlers","copyTo","_deepCopy","visitMap","ctx","userHandler","newPath","concat","newCtx","src","isPlain","isPrim","origin","copy","source","newKey","_copyProps","theEntry","entry","_getSetVisited","newEntry","_doExtend","theArg","objCopyProps","deepExtend","obj1","obj2","obj3","obj4","obj5","obj6","_perf","strSplit","setValueByKey","parts","lastKey","pop","strEndsWith","polyStrEndsWith","searchValue","REF","UNREF","HAS_REF","_createTimerHandler","startTimer","refreshFn","cancelFn","theTimerHandler","ref","timerId","_unref","_cancel","_refresh","refresh","h","dn","_createTimeoutWith","overrideFn","isArr","setFn","clearFn","timerFn","Constructor","Prototype","strFunction","DynInstFuncTable","DynProxyTag","DynClassName","DynInstChkTag","DynAllowInstChkTag","DynProtoDefaultOptions","UnknownValue","str__Proto","DynProtoBaseProto","DynProtoGlobalSettings","DynProtoCurrent","strUseBaseInst","strSetInstFuncs","Obj","_objGetPrototypeOf","_objGetOwnProps","_gbl","_gblInst","o","n","_isObjectOrArrayPrototype","_isObjectArrayOrFunctionPrototype","_getObjProto","newProto","curProto","_forEachProp","props","name_1","lp","_isDynamicCandidate","skipOwn","_throwTypeError","_hasVisited","_populatePrototype","baseInstFuncs","setInstanceFunc","_createDynamicPrototype","dynProtoProxy","instFunc","currentDynProtoProxy","instFuncTable","canAddInst","objProto","visited","protoFunc","_getInstFunc","_getProtoFunc","instFuncs_1","_getObjName","unknownValue","dynamicProto","theClass","delegateFunc","classProto","thisTarget","thisProto","_checkPrototype","perfOptions","useBaseInst","instFuncs","_getInstanceFuncs","baseFuncs","_instFuncProxy","funcHost","baseProto","_getBaseFuncs","strShimObject","strHasOwnProperty","__assignFn","t","p","extendStaticsFn","__proto__","__extendsFn","__spreadArrayFn","to","il","j","_DYN_RD_ONLY","_DYN_NOTIFY","_DYN_WARN_TO_CONSOLE","_DYN_THROW_INTERNAL","_DYN_SET_DF","_DYN_WATCH","_DYN_LOGGER","_DYN_APPLY","_DYN_SPLICE","_DYN_HDLR","_DYN_CANCEL","_DYN_INITIALIZE","_DYN_IDENTIFIER","_DYN_REMOVE_NOTIFICATION_0","_DYN_ADD_NOTIFICATION_LIS1","_DYN_IS_INITIALIZED","_DYN_INSTRUMENTATION_KEY","_DYN__INACTIVE","_DYN_VALUE","_DYN_GET_NOTIFY_MGR","_DYN_GET_PLUGIN","_DYN_I_KEY","_DYN_TIME","_DYN_PROCESS_NEXT","_DYN_GET_PROCESS_TEL_CONT2","_DYN_POLL_INTERNAL_LOGS","_DYN_ENABLED","_DYN_STOP_POLLING_INTERNA3","_DYN_UNLOAD","_DYN_ON_COMPLETE","_DYN_LOGGING_LEVEL_CONSOL4","_DYN_CREATE_NEW","_DYN_TEARDOWN","_DYN_MESSAGE_ID","_DYN_MESSAGE","_DYN_IS_ASYNC","_DYN_DIAG_LOG","_DYN_UPDATE","_DYN_GET_NEXT","_DYN_SET_NEXT_PLUGIN","_DYN_PROTOCOL","_DYN_USER_AGENT","_DYN_NODE_TYPE","_DYN_REPLACE","_DYN_LOG_INTERNAL_MESSAGE","_DYN_STATUS","_DYN_GET_RESPONSE_HEADER","_DYN_GET_ALL_RESPONSE_HEA5","_DYN_IS_CHILD_EVT","_DYN_DATA","_DYN_GET_CTX","_DYN_SET_CTX","_DYN_COMPLETE","_DYN_ITEMS_RECEIVED","_DYN_URL_STRING","_DYN_SEND_POST","_DYN_HEADERS","_DYN_TIMEOUT","_DYN_SET_REQUEST_HEADER","_DYN_GET_ATTRIBUTE","UNDEFINED_VALUE","STR_CHANNELS","STR_CORE","STR_CREATE_PERF_MGR","STR_DISABLED","STR_EXTENSION_CONFIG","STR_EXTENSIONS","STR_PROCESS_TELEMETRY","STR_PRIORITY","STR_EVENTS_SENT","STR_EVENTS_DISCARDED","STR_EVENTS_SEND_REQUEST","STR_PERF_EVENT","STR_OFFLINE_STORE","STR_OFFLINE_SENT","STR_OFFLINE_DROP","STR_GET_PERF_MGR","STR_DOMAIN","STR_PATH","rCamelCase","rNormalizeInvalid","rLeadingNumeric","isNotNullOrUndefined","_all","letter","getExceptionName","setValue","field","valChk","srcChk","theValue","getSetValue","_createProxyFunction","srcFunc","originalArguments","proxyFunctionAs","overwriteTarget","proxyFunctions","functionsToProxy","theFuncName","optimizeObject","extended","argLen","deep","isArgArray","isArgObj","isNewArray","isFeatureEnabled","feature","cfg","rlt","ft","featureOptIn","mode","getResponseText","xhr","responseText","formatErrorMessageXdr","xdr","formatErrorMessageXhr","prependTransports","theTransports","newTransports","strWithCredentials","_appendHeader","theHeaders","_getAllResponseHeaders","isOneDs","headersString","headerEntry","header","strJSON","strMsie","strTrident","strXMLHttpRequest","_isTrident","_navUserAgentCheck","_enableMocks","_useXDomainRequest","_beaconsSupported","_hasProperty","property","supported","getLocation","checkForMock","mockLocation","location","hasJSON","getJSON","isIE","nav","userAgent","getIEVersion","userAgentStr","navigator_1","ua","doc","max","tridentVer","isBeaconsSupported","sendBeacon","isFetchSupported","withKeepAlive","isSupported","useXDomainRequest","XDomainRequest","isXhrSupported","sendCustomEvent","evtName","customDetails","evnt","global","CustomEvent","eventName","event","detail","createEvent","initCustomEvent","createCustomDomEvent","dispatchEvent","UInt32Mask","MaxUInt32","SEED1","SEED2","_mwcSeeded","_mwcW","_mwcZ","_mwcSeed","seedValue","_autoSeedMwc","random32","signed","getRandomValues","Uint32Array","mwcRandom32","newId","maxLength","number","chars","charAt","instanceName","_dataUid","_canAcceptData","createUniqueNamespace","includeVersion","createElmNodeData","addDefault","theCache","_getCache","kill","_isConfigDefaults","isVal","fb","_getDefault","dynamicHandler","theConfig","cfgDefaults","isDefaultValid","dfVal","fallbacks","fallback","fbValue","_resolveDefaultValue","newValue_1","_applyDefaultValue","isValid","mergeDf","reference","readOnly","blkDynamicValue","mrg","usingDefault","cfgValue","dfName","dfValue","CFG_HANDLER_LINK","BLOCK_DYNAMIC","FORCE_DYNAMIC","_cfgDeepCopy","target_1","_canMakeDynamic","getFunc","blkVal","throwInvalidAccess","aggregationErrorType","arrayMethodsToPatch","_throwDynamicError","_getOwnPropGetter","_setDynamicProperty","getter","trk","clr","checkDynamic","isObjectOrArray","_getProperty","_makeDynamicObject","activeHandler","act","chng","ro","upd","isReferenced","rf","hdlr","valueState","newIsObjectOrArray","_createDynamicProperty","_setDynamicPropertyState","flags","isDynamic","inPlace","rdOnly","blkProp","blockDynamicConversion","orgMethod","_i","_patchArray","symPrefix","symPostfix","_createState","cfgHandler","theState","dynamicPropertySymbol","uid","dynamicPropertyReadOnly","dynamicPropertyReferenced","dynamicPropertyBlockValue","dynamicPropertyDetail","_waitingHandlers","_watcherTimer","_useHandler","prevWatcher","setDf","_notifyWatchers","notifyHandlers","watcherFailures_1","sourceErrors","errors","theMessage","srcError","throwAggregationError","use","_createDynamicHandler","getDynamicConfigHandler","newTarget","defaultValues","configHandler","rm","_createAndUseHandler","_block","allowUpdate","prevUpd","createDynamicConfig","config","defaultConfig","onConfigChange","_logInvalidAccess","_debugListener","listenerFuncs","_aiNamespace","_listenerProxyFunc","dbgExt","getDebugExt","listener","ns","disableDbgExt","STR_WARN_TO_CONSOLE","loggingLevelConsole","loggingLevelTelemetry","maxMessageLimit","enableDebug","_logFuncs","_sanitizeDiagnosticText","text","_logToConsole","theConsole","console","logFunc","_InternalLogMessage","msgId","msg","isUserAct","strProps","diagnosticText","dataType","safeGetLogger","core","DiagnosticLogger","_loggingLevelConsole","_loggingLevelTelemetry","_maxInternalMessageLimit","_enableDebug","_unloadHandler","_messageCount","_messageLogged","_logInternalMessage","severity","logMessage","messageKey","_debugExtMsg","throttleLimitMessage","throttleMessage","errorToConsole","_setDefaultsFromConfig","consoleLoggingLevel","debugToConsole","resetInternalMessageCount","isAsync","__ieDyn","_getLogger","_throwInternal","_warnToConsole","createEnumStyle","createValueMap","mapClass","createSimpleMap","StorageType","LocalStorage","SessionStorage","AI","AI_AND_W3C","W3C","Normal","Critical","_DYN_INGESTIONENDPOINT","_DYN_TO_STRING","_DYN_REMOVE_ITEM","_DYN_COUNT","_DYN_PRE_TRIGGER_DATE","_DYN_DISABLED","_DYN_INTERVAL","_DYN_DAYS_OF_MONTH","_DYN_DATE","_DYN_GET_UTCDATE","_DYN_STRINGIFY","_DYN_CORRELATION_HEADER_E0","_DYN_EXCEPTIONS","_DYN_PARSED_STACK","_DYN_PROPERTIES","_DYN_MEASUREMENTS","_DYN_SIZE_IN_BYTES","_DYN_TYPE_NAME","_DYN_SEVERITY_LEVEL","_DYN_PROBLEM_GROUP","_DYN_IS_MANUAL","_DYN__CREATE_FROM_INTERFA1","_DYN_ASSEMBLY","_DYN_FILE_NAME","_DYN_HAS_FULL_STACK","_DYN_LEVEL","_DYN_METHOD","_DYN_LINE","_DYN_DURATION","_DYN_RECEIVED_RESPONSE","_canUseLocalStorage","_canUseSessionStorage","_storagePrefix","_getLocalStorageObject","utlCanUseLocalStorage","_getVerifiedStorageObject","storageType","storage","setItem","fail","getItem","exception","_getSessionStorageObject","utlCanUseSessionStorage","utlSetStoragePrefix","storagePrefix","reset","utlGetLocalStorage","utlSetLocalStorage","utlGetSessionStorage","utlSetSessionStorage","utlRemoveSessionStorage","PropertiesPluginIdentifier","BreezeChannelIdentifier","AnalyticsPluginIdentifier","DisabledPropertyName","SampleRate","ProcessLegacy","HttpMethod","DEFAULT_BREEZE_ENDPOINT","DEFAULT_BREEZE_PATH","strNotSpecified","strIkey","dataSanitizeKeyAndAddUniqueness","origLength","nameTrunc","dataSanitizeKey","uniqueField","dataSanitizeString","valueTrunc","dataSanitizeUrl","dataSanitizeInput","dataSanitizeMessage","messageTrunc","dataSanitizeProperties","tempProps_1","dataSanitizeMeasurements","measurements","tempMeasurements_1","measure","input","_msgId","inputTrunc","createTelemetryItem","item","baseType","envelopeName","customProperties","systemProperties","iKey","telemetryItem","time","ext","baseData","TelemetryItemCreator","Event","aiDataContract","ver","envelopeType","Trace","severityLevel","DataPoint","stdDev","Metric","metrics","dataPoint","isNaN","msToTimeSpan","totalms","ms","round","sec","hour","PageView","durationMs","dataSanitizeId","PageViewPerformance","unused","cs4BaseData","perfTotal","networkConnect","sentRequest","receivedResponse","domProcessing","strError","strStack","strStackDetails","strErrorSrc","strMessage","strDescription","_stringify","convertToString","_formatMessage","theEvent","errorType","evtMessage","_isStackDetails","_convertStackObj","errorStack","items","_getStackFromErrorObj","errorObj","errorMessage","lines","_getOperaStack","reason","_getErrorType","typeName","results","exec","_formatErrorCode","Exception","exceptions","_isExceptionInternal","_ExceptionDetails","CreateAutoException","lineNumber","columnNumber","evt","errorSrc","stackDetails","CreateFromInterface","toInterface","problemGroup","isManual","exceptionDetailsInterface","CreateSimpleException","assembly","fileName","line","formatError","outerId","hasFullStack","parsedStack","_isExceptionDetailsInternal","frames","level_1","totalSizeInBytes_1","frame","theFrame","_StackFrame","regex","parsedFrame","left","right","acceptedLeft","acceptedRight","howMany","splice","_parseStack","exceptionTrunc","dataSanitizeException","_formatStackTrace","sourceFrame","level","matches","sizeInBytes","baseSize","generateW3CId","tmp","hexValues","oct","a","clockSequenceHi","DEFAULT_VERSION","INVALID_VERSION","INVALID_TRACE_ID","INVALID_SPAN_ID","_isValid","invalidValue","_formatValue","_formatFlags","createTraceParent","traceId","spanId","isValidTraceId","isValidSpanId","traceFlags","formatTraceParent","RequestHeaders","requestContextHeader","requestContextTargetKey","requestContextAppIdFormat","requestIdHeader","traceParentHeader","traceStateHeader","sdkContextHeader","sdkContextHeaderAppIdRequest","requestContextHeaderLowerCase","_document","_htmlAnchorIdx","_htmlAnchorElement","urlParseUrl","anchorIdx","anchorCache","tempAnchor","createElement","urlParseHost","href","inclPort","fullHost","urlParseFullHost","_internalEndpoints","_correlationIdPrefix","isInternalApplicationInsightsEndpoint","endpointUrl","correlationIdCanIncludeCorrelationHeader","requestUrl","currentHost","disableCorrelationHeaders","correlationHeaderExcludePatterns","requestHost","enableCorsCorrelation","matchExists_1","includedDomains","correlationHeaderDomains","domain","RegExp","excludedDomains","correlationHeaderExcludedDomains","correlationIdGetCorrelationContext","responseHeader","keyValues","keyValue","correlationIdGetCorrelationContextValue","dateTimeUtilsNow","perf","timing","navigationStart","dateTimeUtilsDuration","createDistributedTraceContextFromTrace","telemetryTrace","parentCtx","trace","getName","setName","getTraceId","traceID","setTraceId","getSpanId","parentID","setSpanId","getTraceFlags","setTraceFlags","newTraceFlags","RemoteDependencyData","absoluteUrl","commandName","success","resultCode","requestAPI","correlationContext","dependencyKind","dependencySource","dependencyTypeName","dependencyFields","pathName","AjaxHelperParseDependencyPath","createDomEvent","initEvent","_stringToBoolOrDefault","cfgDfMerge","cfgDfSet","setter","cfgDfValidate","validator","fallBackName","cfgDfBoolean","_doc","strToGMTString","strToUTCString","strCookie","strExpires","strIsCookieUseDisabled","strDisableCookiesUsage","strConfigCookieMgr","_supportsCookies","_allowUaSameSite","_parsedCookieValue","_cookieCache","_globalCookieConfig","rootDefaultConfig","cookieCfg","ignoreCookies","blockedCookies","cookieDomain","cookiePath","_getDoc","_isMgrEnabled","cookieMgr","isEnabled","_isIgnoredCookie","cookieMgrCfg","_isCfgEnabled","rootConfig","cookieMgrConfig","isCfgEnabled","cookieEnabled","safeGetCookieMgr","getCookieMgr","createCookieMgr","inst","_gblCookieMgr","_path","_domain","unloadHandler","_enabled","_getCookieFn","_setCookieFn","_delCookieFn","getCookie","_getCookieValue","setCookie","_setCookieValue","delCookie","areCookiesSupported","gblManager","setEnabled","maxAgeSec","_isBlockedCookie","_extractParts","_isIE","expireMs","expiry","setTime","_formatDate","location_1","uaDisallowsSameSiteNone","_formatCookieValue","del","purge","thePart","theDate","cookieValue","theCookie","strAttachEvent","strAddEventHelper","strDetachEvent","strRemoveEventListener","strEvents","strVisibilityChangeEvt","strPageHide","strUnload","strBeforeUnload","strPageHideNamespace","rRemoveEmptyNs","rRemoveTrailingEmptyNs","_guid","elmNodeData","eventNamespace","_normalizeNamespace","_getEvtNamespace","evtNamespace","theNamespace_1","parsedEvent","sort","_getRegisteredEvents","aiEvts","registeredEvents","_doDetach","handlerRef","useCapture","_doUnregister","events","unRegFn","capture","mergeEvtNamespace","theNamespace","namespaces","eventOn","_doAttach","registeredEvent","guid","eventOff","evtName_1","found_1","eventCache","evtType","_unregisterEvents","regEvent","_addEventListeners","excludeEvents","added","addEventHandler","removeEventListeners","removeEventHandler","addPageUnloadEventListener","addEventListeners","addPageHideEventListener","newNamespaces","pageUnloadAdded","visibilityState","strExecutionContextKey","strParentContextKey","strChildrenContextKey","_defaultPerfManager","PerfEvent","payloadDetails","theDetails_1","childTime","childEvts","childEvt","exTime","ParentContextKey","ChildrenContextKey","PerfManager","manager","fire","perfEvent","doPerfActiveKey","doPerf","mgrSource","getSource","perfMgr","perfEvt","currentActive","children","pluginStateData","_getPluginState","plugin","initializePlugins","processContext","extensions","pluginState","initPlugins","lastPlugin","proxy","thePlugin","isInitialized","getCfg","sortPlugins","plugins","extA","extB","bHasProcess","strTelemetryPluginChain","strHasRunFlags","strGetTelCtx","_chainId","_createInternalContext","telemetryChain","startAt","_nextProxy","_onComplete","createTelemetryProxyChain","_getNextProxyStart","context","_next","nextProxy","onComplete","completeDetails","diagLog","getExtCfg","newConfig","_getExtCfg","getConfig","extConfig","hasNext","getNext","setNext","nextPlugin","iterate","that","createIfMissing","idCfg","extCfg","createProcessTelemetryContext","internalContext","env","createProcessTelemetryUnloadContext","unloadState","createProcessTelemetryUpdateContext","updateState","firstProxy","lastProxy_1","newProxy","chainId","hasProcessTelemetry","hasSetNext","proxyChain","getPlugin","processTelemetry","_processTelemetry","unload","_unloadPlugin","_updatePlugin","_id","_setNext","_getTelCtx","itemCtx","_processChain","processPluginFn","hasRun","hasRunContext","nextId","hasNextRun","_callProcessTelemetry","unloadCtx","_callTeardown","pluginCore","updateCtx","_callUpdate","createTelemetryPluginProxy","_maxHooks","_hookAddMonitor","aiInstrumentHooks","cbNames","_arrLoop","arr","_doCallbacks","hooks","callDetails","cbArgs","hookCtx","hook","cbks","orgEx","hookErrorCb","_getOwner","checkPrototype","checkParentProto","owner","_createInstrumentHook","callbacks","aiHook","newFunc","orgArgs","funcArgs","_createArgs","f","rslt","_createFunctionHook","theHook","InstrumentFunc","InstrumentEvent","createUnloadHandlerContainer","handlers","run","createUnloadHookContainer","_hooks","oldHooks","strGetPlugin","BaseTelemetryPlugin","_isinitialized","_rootCtx","_nextPlugin","_unloadHandlerContainer","_hookContainer","currentCtx","rootCtx","_setDefaults","pluginChain","_initDefaults","unloadDone","theUnloadCtx","theUnloadState","_unloadCallback","updateDone","theUpdateCtx","theUpdateState","_doUpdate","_updateCallback","setInitialized","_DYN_IS_STORAGE_USE_DISAB0","_DYN__ADD_HOOK","_DYN_CORE","_DYN_DATA_TYPE","_DYN_ENVELOPE_TYPE","_DYN_TRACK","_DYN_TRACK_PAGE_VIEW","_DYN_TRACK_PREVIOUS_PAGE_1","_DYN_SEND_PAGE_VIEW_INTER2","_DYN_START_TIME","_DYN_SEND_PAGE_VIEW_PERFO3","_DYN_POPULATE_PAGE_VIEW_P4","_DYN_HREF","_DYN_SEND_EXCEPTION_INTER5","_DYN_EXCEPTION","_DYN_ERROR","_DYN__ONERROR","_DYN_ERROR_SRC","_DYN_LINE_NUMBER","_DYN_COLUMN_NUMBER","_DYN__CREATE_AUTO_EXCEPTI6","_DYN_ADD_TELEMETRY_INITIA7","_DYN_AUTO_TRACK_PAGE_VISI9","_DYN_IS_BROWSER_LINK_TRAC10","_DYN_ENABLE_AUTO_ROUTE_TR11","_DYN_ENABLE_UNHANDLED_PRO12","_DYN_AUTO_UNHANDLED_PROMI13","_DYN_GET_ENTRIES_BY_TYPE","_DYN_IS_PERFORMANCE_TIMIN14","_DYN_GET_PERFORMANCE_TIMI15","_DYN_NAVIGATION_START","_DYN_SHOULD_COLLECT_DURAT16","_DYN_IS_PERFORMANCE_TIMIN17","_DYN_RESPONSE_START","_DYN_LOAD_EVENT_END","_DYN_RESPONSE_END","_DYN_CONNECT_END","_DYN_PAGE_VISIT_START_TIM18","PageViewManager","appInsights","overridePageViewDuration","pageViewPerformanceManager","_logger","queueTimer","itemQueue","pageViewPerformanceSent","firstPageViewSent","_flushChannels","flush","_startTimer","allItems","doFlush","_addQueue","pageView","title","uri","navigationEntries","timeOrigin","loadEventStart","duration_1","customDuration","pageViewSent","processed","pageViewPerformance","teardown","botAgentNames","_isPerformanceTimingSupported","_isPerformanceTimingDataReady","domainLookupStart","domLoading","_getPerformanceTiming","_getPerformanceNavigationTiming","getEntriesByType","_shouldCollectDuration","durations","isGoogleBot","PageViewPerformanceManager","navigationTiming","total","network","dom","requestStart","responseEnd","PageVisitTimeManager","pageVisitTimeTrackingHandler","prevPageVisitDataKeyName","currentPageName","currentPageUrl","prevPageVisitTimeData","pageName","pageUrl","prevPageVisitData","pageVisitEndTime","pageVisitDataJsonStr","pageVisitTime","stopPageVisitTimer","currPageVisitDataStr","PageVisitData","restartPageVisitTimer","Timing","_events","stop","_dispatchEvent","sessionRenewalMs","_chkConfigMilliseconds","sessionExpirationMs","disableExceptionTracking","samplingPercentage","namePrefix","disableFlushOnBeforeUnload","disableFlushOnUnload","expCfg","inclScripts","expLog","maxLogs","_updateStorageUsage","_debugState","_debugResult","_debugHandled","AnalyticsPlugin","_super","_eventTracking","_pageTracking","_pageViewManager","_pageViewPerformanceManager","_pageVisitTimeManager","_preInitTelemetryInitializers","_isBrowserLinkTrackingEnabled","_browserLinkInitializerAdded","_enableAutoRouteTracking","_historyListenerAdded","_disableExceptionTracking","_autoExceptionInstrumented","_enableUnhandledPromiseRejectionTracking","_autoUnhandledPromiseInstrumented","_extConfig","_autoTrackPageVisitTime","_expCfg","priority","autoRoutePVDelay","_prevUri","_currUri","_evtNamespace","_base","_addHook","throwInternal","processNext","trackEvent","startTrackEvent","stopTrackEvent","trackTrace","trackMetric","metric","inPv","refUri","referrer","trackPageViewPerformance","inPvp","startTrackPage","stopTrackPage","measurement","loc","theError","exceptionPartB","scriptsInfo","scripts","getElementsByTagName","script","crossOrigin","hasAttribute","defer","referrerPolicy","findAllScripts","logs","trackException","_window","isCrossOriginError","_sendCORSException","errorString","telemetryInitializer","initialize","initializer","browserLinkPaths_1","dropBrowserLinkRequests","envelope","remoteData","_addDefaultTelemetryInitializers","_populateDefaults","PageName","PageUrl","average","sampleCount","trackPageVisitTime","pageViewItem","locn","autoExceptionInstrumented","rsp","_location","_getReason","_addUnhandledPromiseRejectionTracking","win","_history","pushState","replaceState","history","_popstateHandler","_locationChangeHandler","distributedTraceCtx","getTraceCtx","_getDistributedTraceCtx","traceLocationName","hash","_addHistoryListener","_updateLocationChange","_doTeardown","Version","STR_PROMISE","REJECTED","doAwaitResponse","doAwait","rejected","resolveFn","rejectFn","finallyFn","doFinally","finally","_promiseDebugEnabled","_hasInitEvent","STRING_STATES","DISPATCH_EVENT","_hasInitEventFn","_hasPromiseRejectionEvent","NODE_UNHANDLED_REJECTION","UNHANDLED_REJECTION","_currentPromiseId","_uniquePromiseId","dumpFnObj","_createPromise","newPromise","processor","executor","_settledValue","_thePromise","additionalArgs","_state","_hasResolved","_queue","_parentId","_handled","_unHandledRejectionHandler","_then","onResolved","onRejected","_processQueue","_strState","pending","_createSettleIfFn","newState","allowState","_notifyUnhandledRejection","populateEvent","useNewEvent","theEvt","emitEvent","onFinally","thenFinally","catchFinally","thePromise","stateFn","resultFn","handledFn","_addDebugState$1","_rejectFn","_createAllPromise","values_1","pending_1","_createAllSettledPromise","processItem","syncItemProcessor","createAsyncPromise","callbackTimeout","timeoutItemProcessor","_promiseCls","createNativePromise","PrmCls","_allSyncSettledCreator","createSyncPromise","_promiseCreator","createPromise","createAllPromise","_DYN_FEATURE_OPT_IN","_DYN_ON_CFG_CHANGE_RECEIV0","_DYN_NON_OVERRIDE_CONFIGS","_DYN_SCHEDULE_FETCH_TIMEO1","replaceByNonOverrideCfg","nonOverrideConfigs","curLevel","maxLevel","exceedMaxLevel","curCfg_1","objExtend","nonOverrideVal","F","M","ON","OFF","applyCdnfeatureCfg","cdnCfg","optInMap","cdnConfig_1","featureVal","userOptInDetails","cdnFt","cdnM","cdnOnV","onCfg","cdnOffV","offCfg","userFt","userM","userOnV","userOffV","blockCdn","blockCdnCfg","onFld","offFld","onV","offV","resolveCdnFeatureCfg","val","ftVal","dVal","_overrideCdnCfgByFeature","EVENT_NAME","udfVal","_defaultConfig","syncMode","blkCdnCfg","customEvtName","cfgUrl","overrideSyncFn","overrideFetchFn","instrumentationKey","CfgSyncPlugin","_extensionConfig","_mainConfig","_evtName","_cfgUrl","_timeoutHandle","_receiveChanges","_broadcastChanges","_blkCdnCfg","_fetchTimeout","_retryCnt","_onCfgChangeReceive","_nonOverrideConfigs","_fetchFn","_overrideFetchFn","_overrideSyncFn","_paused","_setCfg","isAutoSync","_sendCfgsyncEvents","updateCfg","_eventOff","global_1","_updateEventListenerName","global_2","cfgEvent","newCfg","_replaceTartgetByKeys","_addEventListener","_fetchSender","oncomplete","fetchFn","fetch","Request","_doOnComplete","ok","_xhrSender","xhr_1","XMLHttpRequest","open","onreadystatechange","readyState","DONE","ontimeout","send","_onFetchComplete","JSON_1","_setupTimer","_cfg","unref","_clearScheduledTimer","preBlkCdn","newEvtName","_getFetchFnInterface","pause","resume","setCfg","sync","updateEventListenerName","_disableEvents","ActiveStatus","NONE","PENDING","INACTIVE","ACTIVE","_noResponseQs","STR_POST_METHOD","SenderPostManager","_enableSendPromise","_isInitialized","_diagLog","_isOneDs","_onCompleteFuncs","_disableCredentials","_fetchCredentials","_fallbackInst","_disableXhr","_disableBeacon","_disableBeaconSync","_disableFetchKeepAlive","_addNoResponse","_timeoutWrapper","_syncFetchPayload","_sendCredentials","_onError","_onNoPayloadUrl","_doBeaconSend","payload","plainTextBatch","_beaconSender","onRetry","beaconOnRetry","resolveFunc","rejectFunc","disableXhrSync","endPointUrl","urlString","withCredentials","disabled","isSync","_wrapSetXhrProp","openXhr","_doOnReadyFunc","onReadyFunc","xhrOnComplete","headerName","onload","_doFetchSender","requestHeaders","Headers","batchLength","ignoreResponse","responseHandled","init","append","credentials","keepalive","_handleError","onCompleteFunc","fetchOnComplete","response_1","resp","statusText","_xdrSender","onloadFunc","xdrOnComplete","onprogress","hostingProtocol","lastIndexOf","SetConfig","senderOnCompleteCallBack","disableCredentials","fetchCredentials","enableSendPromise","disableXhr","disableBeacon","disableBeaconSync","timeWrapper","addNoResponse","disableFetchKeepAlive","sendPOST","getSyncFetchPayload","getSenderInst","transports","syncSupport","transportType","sendPostFunc","_transport","_isSync","_getSenderInterface","getFallbackInst","runTargetUnload","doUnloadAll","targets","resolved","parseResponse","itemsAccepted","itemsReceived","_aiNameFunc","baseName","aiName","defaults","_aiApplication","_aiDevice","_aiLocation","_aiOperation","_aiSession","_aiUser","_aiCloud","_aiInternal","ContextTagKeys","applicationVersion","applicationBuild","applicationTypeId","applicationId","applicationLayer","deviceId","deviceIp","deviceLanguage","deviceLocale","deviceModel","deviceFriendlyName","deviceNetwork","deviceNetworkName","deviceOEMName","deviceOS","deviceOSVersion","deviceRoleInstance","deviceRoleName","deviceScreenResolution","deviceType","deviceMachineName","deviceVMName","deviceBrowser","deviceBrowserVersion","locationIp","locationCountry","locationProvince","locationCity","operationId","operationName","operationParentId","operationRootId","operationSyntheticSource","operationCorrelationVector","sessionId","sessionIsFirst","sessionIsNew","userAccountAcquisitionDate","userAccountId","userId","userStoreRegion","userAuthUserId","userAnonymousUserAcquisitionDate","userAuthenticatedUserAcquisitionDate","cloudName","cloudRole","cloudRoleVer","cloudRoleInstance","cloudEnvironment","cloudLocation","cloudDeploymentUnit","internalNodeName","internalSdkVersion","internalAgentVersion","internalSnippet","internalSdkSrc","Extensions","CtxTagKeys","Envelope","sampleRate","Data","STR_DURATION","_DYN_TAGS","_DYN_DEVICE_TYPE","_DYN__GET","_DYN_ENQUEUE","_DYN_EVENTS_LIMIT_IN_MEM","_DYN_ITEM","_DYN_EMIT_LINE_DELIMITED_0","_DYN_CLEAR","_DYN_MARK_AS_SENT","_DYN_CLEAR_SENT","_DYN_BUFFER_OVERRIDE","_DYN__BUFFER__KEY","_DYN__SENT__BUFFER__KEY","_DYN_CONCAT","_DYN__MAX__BUFFER__SIZE","_DYN_TRIGGER_SEND","_DYN__SENDER","_DYN_ENDPOINT_URL","_DYN_CUSTOM_HEADERS","_DYN_MAX_BATCH_SIZE_IN_BY1","_DYN_ONUNLOAD_DISABLE_BEA2","_DYN_IS_BEACON_API_DISABL3","_DYN_ALWAYS_USE_XHR_OVERR4","_DYN_DISABLE_XHR","_DYN_ENABLE_SESSION_STORA5","_DYN__BUFFER","_DYN_ONUNLOAD_DISABLE_FET6","_DYN_DISABLE_SEND_BEACON_7","_DYN_ENABLE_SEND_PROMISE","_DYN_GET_SENDER_INST","_DYN_UNLOAD_TRANSPORTS","_DYN_CONVERT_UNDEFINED","_DYN_MAX_BATCH_INTERVAL","_DYN_SERIALIZE","_DYN__ON_ERROR","_DYN__ON_PARTIAL_SUCCESS","_DYN__ON_SUCCESS","_DYN_ITEMS_ACCEPTED","_DYN_ORI_PAYLOAD","_DYN_BASE_TYPE","_DYN_SAMPLE_RATE","_DYN_EVENTS_SEND_REQUEST","_DYN_GET_SAMPLING_SCORE","strBaseType","strBaseData","strProperties","strTrue","_setValueIf","_extractPropsAndMeasurements","_convertPropsUndefinedToCustomDefinedValue","customUndefinedValue","_createEnvelope","startTime","iKeyNoDashes","envTags","itmExt","itmTags","extUser","user","authId","localId","extApp","app","sesId","extDevice","device","deviceClass","ip","model","web","browserLang","browserVer","browser","envData","envBaseData","envProps","screenRes","userConsent","extOs","os","osVer","extTrace","tgs","tg","theTags","EnvelopeCreator","_extractPartAExtensions","EnvelopeCreatorInit","EventEnvelopeCreator","customMeasurements","eventData","BaseSendBuffer","_buffer","_bufferFullMessageSent","_maxRetryCnt","maxRetryCnt","_set","cnt","getItems","batchPayloads","payloads","payloadStr_1","newLogger","canUseSessionStorage","newBuffer","SessionStorageSendBuffer","ArraySendBuffer","PREVIOUS_KEYS","_namePrefix","bufferItems","_getBuffer","itemsInSentBuffer","previousItems","_getItemsFromPreviousKey","prefixEvents","_getPreviousEvents","notDeliveredItems","_removePayloadsFromBuffer","remaining","payloadStr","prefixedKey","_getBufferBase","bufferJson","buffer_1","_setBuffer","transFormedItems_1","internalItem","BUFFER_KEY","sentElements","unsentItems","sentItems","VERSION","SENT_BUFFER_KEY","MAX_BUFFER_SIZE","Serializer","_serializeObject","circularReferenceCheck","output","_serializeStringMap","_serializeArray","contract","isRequired","isHidden","isPresent","isObj","sources","expectedType","num","parseFloat","HashCodeScoreGenerator","getHashCodeScore","getHashCode","INT_MAX_VALUE","charCodeAt","abs","SamplingScoreGenerator","hashCodeGenerator","Sample","samplingRate","samplingScoreGenerator","isSampledIn","_getResponseText","defaultAppInsightsChannelConfig","disableTelemetry","isRetryDisabled","httpXHROverride","retryCodes","EnvelopeTypeCreator","currentContextId","bd","pageType","isLoggedIn","pageViewData","exData","baseMetricData","remoteDepData","responseCode","Sender","_consecutiveErrors","_retryAt","_serializer","_stamp_specific_redirects","_headers","_syncUnloadSender","_offlineListener","_endpointUrl","_orgEndpointUrl","_maxBatchSizeInBytes","_beaconSupported","_beaconOnUnloadSupported","_beaconNormalSupported","_customHeaders","_disableTelemetry","_instrumentationKey","_convertUndefined","_isRetryDisabled","_maxBatchInterval","_sessionStorageUsed","_bufferOverrideUsed","_alwaysUseCustomSend","_fetchKeepAlive","_xhrSend","_fallbackSend","_disableBeaconSplit","_sendPostMgr","_retryCodes","_xdrOnLoad","_xhrReadyStateChange","countOfItemsInPayload","_checkResponsStatus","responseURL","_getPayloadArr","_validate","diagLogger","_sample","_getEnvelope","defaultEnvelopeIkey","aiEnvelope","constructEnvelope","doNotSendItem","callBack","_serialize","valid","_batch","_createPayload","_getHeaders","_doSend","sendInterface","markAsSent","payloadData","_getPayload","_onSuccess","_getOnComplete","_checkMaxSize","incomingPayload","incomingSize","isOnline","responseUrl","_appId","appId","_checkAndUpdateEndPointUrl","_resendPayload","_isRetriable","_doUnloadSend","_isStringArr","_fetchKeepAliveSender","transport","payloadSize","linearFactor","payload_1","delayInSeconds","SlotDelayInSeconds","backOffSlot","backOffDelay","retryAfterTimeSpan","_setRetryTime","retryInterval","timerValue","sendReason","onunloadFlush","addHeader","parentEvtNamespace","_navigator","_isListening","listenerList","rState","onLine","uState","_currentState","calCurrentState","_enableEvents","ononline","_setOnline","_setOffline","listnerNoticeCheck","offlineState","isListening","addListener","setOnlineState","createOfflineListener","senderConfig","curExtUrl","coreUrl","activeStatus","customHeader","bufferOverride","shouldUpdate","disableValidation","disableInstrumentationKeyValidation","_validateInstrumentationKey","sendPostConfig","onCompleteFuncs","resValue","canSend","internalPayload","droppedPayload","thePayload","_onBeaconRetry","_getSendPostMgrConfig","customInterface","httpInterface","syncInterface","xhrInterface","syncTransports","payloadItem","isCompletelyIdle","getOfflineListener","forcedSender","_getNotifyMgr","_notifySendRequest","ieVer","getOfflineSupport","getUrl","createPayload","shouldProcess","retry","reverse","errors_1","extracted","_onPartialSuccess","orig","convertUndefined","parseConnectionString","kvPairs","fields","kv","kvParts","endpointsuffix","locationPrefix","ThrottleMgr","_config","_localStorageObj","_isTriggered","_isReady","_isSpecificDaysGiven","_flushMessage","msgID","saveUnsentMsg","_getCfgByKey","maxValue","limit","_canSampledIn","localStorageObj","_getLocalStorageObjByKey","canThrottle","_canThrottle","throttled","isTriggered","_isTrigger","maxSendNumber","localStorageName","_getLocalStorageName","_resetLocalStorage","_sendMessage","isThrottled","throttleNum","_getQueueByKey","_setCfgByKey","interval","monthInterval","dayInterval","curCfg","configInterval","daysOfMonth","canUseLocalStorage","curDate","_getThrottleDate","monthCheck","monthExpand","getUTCFullYear","getUTCMonth","_checkInterval","dayCheck","daySpan","msgKey","fix","dateStr","getDate","storageName","current","curObj","storageObj","preTriggerDate","_getLocalStorageObj","isTrigger","_isTriggeredOnCurDate","addUnloadHook","coreConfig","throttleMgrCfg","localObj","isReady","flushAll","result_1","isFlushed","onReadyState","sendMessage","perfEvtsSendAll","_runScheduledListeners","asyncNotifications","_runListeners","NotificationManager","_listeners","_asyncNotifications","rn_1","waiting","_finishUnload","asyncUnload","TelemetryInitializerPlugin","_initializers","addTelemetryInitializer","theInitializer","_addInitializer","telemetryInitializersCount","_runInitializers","strValidationError","strSdkUnloadingError","diagnosticLogInterval","_createPerfManager","notificationMgr","_isPluginPresent","_deepMergeConfig","newValues","merge","_findWatcher","newWatcher","theListener","_initDebugListener","unloadContainer","notificationManager","debugListener","getDebugListener","AppInsightsCore","_configHandler","_eventQueue","_notificationManager","_perfManager","_cfgPerfManager","_cookieManager","_pluginChain","_configExtensions","_channelConfig","_channels","_isUnloading","_telemetryInitializerPlugin","_internalLogsEventName","_unloadHandlers","_traceCtx","_cfgListeners","_extensions","_pluginVersionStringArr","_pluginVersionString","_activeStatus","_endpoint","_initInMemoMaxSize","_isStatusSet","_internalLogPoller","_internalLogPollerListening","_forceStopInternalLogPoller","_setStatus","_releaseQueues","releaseQueue","_startLogPoller","alwaysStart","_addUnloadHook","isRunning","createTimeout","_flushInternalLogs","_setPluginVersions","thePlugins","_addPluginVersions","channels","cfgExtensions","_createTelCtx","theCtx","_getPluginChain","_initPluginChain","theExtensions","channelPriority","allExtensions","coreExtensions","extPriorities","extPriority","_validateExtensions","_getPlugin","pluginIdentifier","theExt","channelHosts","getChannel","removeCb","pluginsToRemove","_removePlugins","removed","removeComplete","newConfigExtensions","newChannelConfig","newQueue","channel","track","cbTimeout","doneIterating","cbTimer","doCallback","handled_1","_updateHook","_logOrThrowError","_notifyInvalidEvent","_setPendingStatus","prevCfgPerfMgr","rootCfg","initInMemoMaxSize","ikey","promises","initTimeout","initTimeOut","allPromises","ikeyRes","endpointRes","enablePerfMgr","createPerfMgr","teeController","unloadHdl","_registerDelayedCfgListener","getChannels","controls","getNotifyMgr","setCookieMgr","setPerfMgr","eventCnt","eventQueue","unloadComplete","flushComplete","processUnloadCtx","_doUnload","addPlugin","replaceExisting","addCb","existingPlugin","_addPlugin","removedPlugins_1","mergeExisting","oldCfg","createNew","setTraceCtx","traceCtx","onCfgChange","unloadHook","fnd","_createUnloadHook","getWParam","enableWParam","STR_PROPERTIES","_DYN_REQUEST_URL","_DYN_INST","_DYN_CONTEXT","_DYN_ABORTED","_DYN_TRACE_ID0","_DYN_SPAN_ID1","_DYN_INCLUDE_CORRELATION_2","_DYN_GET_ABSOLUTE_URL","_DYN_REQUEST_HEADERS","_DYN_TRACK_DEPENDENCY_DAT3","_DYN_ENABLE_REQUEST_HEADE4","_DYN_ENABLE_AJAX_ERROR_ST5","_DYN_ENABLE_AJAX_PERF_TRA6","_DYN_MAX_AJAX_CALLS_PER_V7","_DYN_EXCLUDE_REQUEST_FROM8","_DYN_ADD_REQUEST_CONTEXT","_DYN_DISABLE_AJAX_TRACKIN9","_DYN_AJAX_PERF_LOOKUP_DEL10","_DYN_DISABLE_FETCH_TRACKI11","_DYN_ENABLE_RESPONSE_HEAD12","_DYN_STATUS_TEXT","_DYN_HEADER_MAP","_DYN_OPEN_DONE","_DYN_SEND_DONE","_DYN_REQUEST_SENT_TIME","_DYN_ABORT_DONE","_DYN_GET_TRACE_ID","_DYN_GET_TRACE_FLAGS","_DYN_ERROR_STATUS_TEXT","_DYN_STATE_CHANGE_ATTACHE13","_DYN_RESPONSE_TEXT","_DYN_RESPONSE_FINISHED_TI14","_DYN__CREATE_TRACK_ITEM","_DYN_RESPONSE","_DYN_GET_ALL_RESPONSE_HEA15","_DYN_GET_PART_APROPS","_DYN_PERF_MARK","_DYN_PERF_TIMING","_DYN_AJAX_DIAGNOSTICS_MES16","_DYN_CORRELATION_CONTEXT","_DYN_AJAX_TOTAL_DURATION","_DYN_EVENT_TRACE_CTX","_calcPerfDuration","resourceEntry","_setPerfDuration","_setPerfValue","strPerf","XHRMonitoringState","setRequestHeaderDone","ajaxRecord","requestHeadersSize","responseReceivingDuration","callbackDuration","requestSize","responseStartedTime","callbackFinishedTime","endTime","xhrMonitoringState","clientFailure","getAbsoluteUrl","getPathName","ajaxType","enableRequestHeaderTracking","getResponse","ajaxTotalDuration","requestSentTime","responseFinishedTime","dependency","ajaxData","propsSet","strName","strStart","strEnd","strDomainLookup","strConnect","strRedirect","strRequest","strResponse","strStartTime","strDomainLookupStart","strDomainLookupEnd","strConnectStart","strConnectEnd","strRequestStart","strRequestEnd","strResponseStart","strResponseEnd","strRedirectStart","strRedirectEnd","strTransferSize","strEncodedBodySize","strDecodedBodySize","strServerTiming","serverTiming","server_1","perfAttempts","_populatePerfData","headerMap","responseHeaders","responseType","partA","traceExt","strDiagLog","AJAX_DATA_CONTAINER","STR_FETCH","ERROR_HEADER","ERROR_PREFIX","ERROR_POSTFIX","ERROR_NOT_SENT","CORRELATION_HEADER_ERROR","CUSTOM_REQUEST_CONTEXT_ERROR","FAILED_TO_CALCULATE_DURATION_ERROR","_markCount","_getAjaxData","ajaxDataId","_isHeaderSet","xh","_getFailedAjaxDiagnosticsMessage","_throwInternalCritical","ajaxMonitorInstance","_throwInternalWarning","_createErrorCallbackFunc","internalMessage","ajaxDiagnosticsMessage","_ajaxDataId","_indexOf","_addHandler","theHandler","_processDependencyContainer","BLOB_CORE","DfltAjaxCorrelationHeaderExDomains","_internalExcludeEndpoints","distributedTracingMode","maxAjaxPerfLookupAttempts","ignoreHeaders","addIntEndpoints","AjaxMonitor","_fetchInitialized","_xhrInitialized","_currentWindowHost","_enableRequestHeaderTracking","_enableAjaxErrorStatusText","_trackAjaxAttempts","_context","_isUsingW3CHeaders","_isUsingAIHeaders","_markPrefix","_enableAjaxPerfTracking","_maxAjaxCallsPerView","_enableResponseHeaderTracking","_disabledUrls","_disableAjaxTracking","_disableFetchTracking","_excludeRequestFromAutoTrackingPatterns","_addRequestContext","_dependencyHandlerId","_dependencyListeners","_dependencyInitializers","_ignoreHeaders","_maxAjaxPerfLookupAttempts","_ajaxPerfLookupDelay","_distributedTracingMode","_polyfillInitialized","_canIncludeHeaders","_hookProto","InstrumentProto","_isDisabledRequest","isDisabled","theUrl","theRegex","idx2","_isMonitoredXhrInstance","excludeAjaxDataValidation","ajaxValidation","initialized","_createMarkId","performance_1","mark","markId","entries","getEntriesByName","_findPerfResourceEntry","initiatorType","trackCallback","reportError","perfMark","performance","maxAttempts","retryDelay","locateResourceTiming","perfTiming","getEntries","entryType","clearMarks","_getFailedFetchDiagnosticsMessage","_reportFetchMetrics","_reportFetchError","failedProps","errorProps","sysProperties","_reportDependencyInternal","initializers","aborted","propExt","abort","xhrData","theOpen","_supportsAjaxMonitoring","req","spanID","xhrRequestData","ajaxDataCntr","_openHandler","_reportXhrError","ajaxResponse","responseHeadersString","getResponseHeader","_getAjaxCorrelationContext","responseHeaderMap_2","_onAjaxComplete","exceptionText","_attachToOnReadyStateChange","hkErr","_addSharedXhrHeaders","_instrumentXhr","_global","isPolyfill","polyfill","fetchData","forEach","_createFetchRecord","newInit","fetchData_1","fetchDiagnosticsMessage","_getFetchCorrelationContext","responseHeaderMap_1","_instrumentFetch","trackDependencyData","currentWindowHost","_processDependencyListeners","traceParent","addDependencyListener","dependencyListener","addDependencyInitializer","dependencyInitializer","Application","Device","Internal","unloadHookContainer","sdkExtension","sdkVersion","Location","_DYN_SESSION_MANAGER","_DYN_IS_USER_COOKIE_SET","_DYN_IS_NEW_USER","_DYN_GET_TRACE_CTX","_DYN_TELEMETRY_TRACE","_DYN_APPLY_SESSION_CONTEX0","_DYN_APPLY_APPLICATION_CO1","_DYN_APPLY_DEVICE_CONTEXT","_DYN_APPLY_OPERATION_CONT2","_DYN_APPLY_USER_CONTEXT","_DYN_APPLY_OPERATING_SYST3","_DYN_APPLY_LOCATION_CONTE4","_DYN_APPLY_INTERNAL_CONTE5","_DYN_ACCOUNT_ID","_DYN_GET_SESSION_ID","_DYN_NAME_PREFIX","_DYN_USER_COOKIE_POSTFIX","_DYN_ID_LENGTH","_DYN_GET_NEW_ID","_DYN_AUTOMATIC_SESSION","_DYN_AUTHENTICATED_ID","_DYN_ACQUISITION_DATE","_DYN_RENEWAL_DATE","_DYN_JOIN","_DYN_COOKIE_SEPARATOR","_DYN_AUTH_USER_COOKIE_NAM7","Session","_SessionManager","_storageNamePrefix","_cookieUpdatedTimestamp","_sessionExpirationMs","_sessionRenewalMs","sessionCookiePostfix","_initializeAutomaticSessionWithData","session","sessionData","sessionReset","acqMs","renewalMs","_setCookie","nowMs","acq","renewalPeriodMs","acqTimeLeftMs","cookie","isExpired","storageValue","_initializeAutomaticSession","timeSinceAcqMs","timeSinceRenewalMs","getNewId","automaticSession","_renew","backup","renewal","TelemetryTrace","parentId","_validateUserInput","User","isNewUser","isUserCookieSet","userCookiePostfix","userCookieName","_generateNewId","_setUserCookie","_generateNewCookie","utlRemoveStorage","authCookie","authCookieString","decodeURI","acqStr","accountAcquisitionDate","setAuthenticatedUserContext","authenticatedUserId","accountId","storeInCookie","encodeURI","clearAuthenticatedUserContext","cookieSeparator","authUserCookieName","strExt","strTags","_removeEmpty","_nullResult","undefString","TelemetryContext","previousTraceCtx","application","internal","autoSession","build","agentVersion","snippetVer","sdkSrc","applyWebContext","cleanUp","nullValue","isBrowserLinkTrackingEnabled","PropertiesPlugin","_distributedTraceCtx","_previousTraceCtx","_disableUserInitMessage","disableUserInitMessage","_unloadHooks","breezeChannel","theContext","userCtx","_processTelemetryInternal","_internalSdkSrc","_AUTHENTICATED_USER_CONTEXT","_TRACK","STR_SNIPPET","STR_FLUSH","STR_ADD_TELEMETRY_INITIALIZER","STR_POLL_INTERNAL_LOGS","STR_GET_PLUGIN","STR_EVT_NAMESPACE","STR_TRACK_EVENT","STR_TRACK_TRACE","STR_TRACK_METRIC","STR_TRACK_PAGE_VIEW","STR_TRACK_EXCEPTION","STR_TRACK_DEPENDENCY_DATA","STR_SET_AUTHENTICATED_USER_CONTEXT","STR_CLEAR_AUTHENTICATED_USER_CONTEXT","_DYN_QUEUE","_DYN_CONNECTION_STRING","_DYN_INSTRUMENTATIONKEY0","_DYN_USER_OVERRIDE_ENDPOI1","_DYN_ONUNLOAD_FLUSH","_DYN_ADD_HOUSEKEEPING_BEF2","_DYN_SEND_MESSAGE","_ignoreUpdateSnippetProperties","IKEY_USAGE","CDN_USAGE","SDK_LOADER_VER","default_throttle_config","defaultConfigValues","extensionConfig","AppInsightsSku","snippet","dependencies","_sender","_snippetVersion","_houseKeepingNamespace","_core","_analyticsPlugin","_cfgSyncPlugin","_throttleMgr","_iKeySentMessage","_cdnSentMessage","_sdkVerSentMessage","sv","_removePageEventHandlers","removePageHideEventListener","configCs","_parseCs","curCs","parsedCs","ikeyPromise","cs","ingest","flushDone","loadAppInsights","legacyMode","throwUnsupported","isModule","cdns","scrpt","document","currentScript","url_1","src_1","_findSdkSourceFile","_updateSnippetProperties","emptyQueue","defaultEnable","chkSet","_loop_1","proxyAssign","length_1","appInsightsInstance","performHousekeeping_1","loadedPlugin","propertiesPlugin","_sessionManager","added_1","analyticsPlugin","excludePageUnloadEvents","disablePageUnloadEvents","product","getSender","exports","Backbone","_","Radio","_len","_key","extend","Model","normalizeMethods","reduce","normalizedHash","isFunction","MarionetteError","urlRoot","pick","normalizeBindings","bindings","bindEvents","entity","listenTo","unbindEvents","stopListening","normalizeBindings$1","bindRequests","reply","unbindRequests","stopReplying","getOption","optionName","mergeOptions","each","option","triggerMethodChildren","view","shouldTrigger","_getImmediateChildren","child","triggerMethod","shouldTriggerAttach","_isAttached","shouldAttach","shouldTriggerDetach","shouldDetach","triggerDOMRefresh","_isRendered","triggerDOMRemove","handleBeforeAttach","handleAttach","handleBeforeDetach","handleDetach","handleBeforeRender","handleRender","monitorViewEvents","_areViewEventsMonitored","splitter","methodCache","getEventName","getOnMethodName","methodName","drop","trigger","Events","CommonMixin","_setOptions","classOptions","DestroyMixin","_isDestroyed","isDestroyed","destroy","RadioMixin","_initRadio","channelName","_channel","radioEvents","radioRequests","_destroyRadio","ClassOptions","MarionetteObject","cid","uniqueId","cidPrefix","_invoke","invokeMap","invoke","getBehaviorClass","behaviorClass","BehaviorClass","parseBehaviors","behaviors","allBehaviors","reducedBehaviors","behaviorDefiniton","_getBehaviorClass","behavior","BehaviorsMixin","_initBehaviors","_behaviors","_getBehaviorTriggers","triggers","memo","_triggers","_getBehaviorEvents","_proxyBehaviorViewProperties","_delegateBehaviorEntityEvents","_undelegateBehaviorEntityEvents","_destroyBehaviors","_removeBehavior","undelegate","without","_bindBehaviorUIElements","_unbindBehaviorUIElements","_triggerEventOnBehaviors","DelegateEntityEventsMixin","_delegateEntityEvents","collection","_modelEvents","_collectionEvents","_undelegateEntityEvents","_deleteEntityEventHandlers","TemplateRenderMixin","_renderTemplate","template","mixinTemplateContext","serializeData","html","_renderHtml","attachElContent","getTemplate","serializedData","templateContext","serializeModel","serializeCollection","attributes","models","Dom","setContents","el","$el","delegateEventSplitter","getNamespacedEventName","FEATURES","childViewEventPrefix","triggersStopPropagation","triggersPreventDefault","DEV_MODE","buildViewTrigger","triggerDef","isString","shouldPreventDefault","preventDefault","shouldStopPropagation","stopPropagation","TriggersMixin","_getViewTriggers","_normalizeUIKeys","ui","_normalizeUIString","uiRegEx","uiString","r","_normalizeUIValues","propertyVal","UIMixin","normalizeUIKeys","uiBindings","_getUIBindings","normalizeUIString","normalizeUIValues","_bindUIElements","_uiBindings","_ui","selector","$","_unbindUIElements","_this2","_getUI","_getEl","setDomApi","mixin","DomApi","createBuffer","createDocumentFragment","getDocumentEl","ownerDocument","documentElement","getEl","findEl","find","hasEl","childEl","contains","parentNode","detachEl","detach","replaceEl","newEl","oldEl","parent","replaceChild","swapEl","el1","el2","parent1","parent2","next1","nextSibling","next2","insertBefore","appendContents","contents","_ref","_ref$_$el","_$el","_ref$_$contents","_$contents","hasContents","hasChildNodes","detachContents","ViewMixin","_isElAttached","supportsRenderLifecycle","supportsDestroyLifecycle","isRendered","isAttached","delegateEvents","_buildEventProxies","combinedEvents","_getEvents","_getTriggers","View","delegateEntityEvents","undelegateEntityEvents","_isDestroying","_disableDetachEvents","unbindUIElements","_removeElement","_removeChildren","removeData","bindUIElements","getUI","_childViewEvents","_childViewTriggers","_eventPrefix","_getEventPrefix","defaultPrefix","_proxyChildViewEvents","_childViewEventHandler","childViewEvents","childViewTriggers","renderView","render","destroyView","disableDetachEvents","classErrorName","ClassOptions$1","Region","_initEl","buildRegion","definition","buildRegionFromObject","regionClass","RegionClass","replaceElement","_isReplaced","_isSwappingView","show","_ensureElement","_getView","currentView","_isShown","empty","_setupChildView","_attachView","_setEl","_setElement","shouldReplace","_restoreEl","_replaceEl","attachHtml","_empty","parentView","_parentView","_shouldDisableMonitoring","shouldReplaceEl","allowMissingEl","viewOptions","_getViewOptions","_detachView","isReplaced","isSwappingView","detachHtml","shouldDestroy","removeView","_stopChildViewEvents","detachView","shouldRestoreEl","hasView","_removeReferences","RegionsMixin","_initRegions","regions","_regions","addRegions","_reInitRegions","addRegion","isEmpty","_addRegions","regionDefinitions","parentEl","partial","_addRegion","region","removeRegion","_removeRegion","removeRegions","_getRegions","emptyRegions","getRegions","hasRegion","getRegion","showChildView","detachChildView","getChildView","setRenderer","renderer","ClassOptions$2","childReducer","setElement","Container","_init","methods","stringComparator","comparator","_views","_viewsByCid","_indexByModel","_updateLength","_add","_addViewIndexes","_sort","_sortBy","sortedViews","sortBy","views","shouldReset","_swap","view1","view2","view1Index","findIndexByView","view2Index","swapView","findByModel","findByModelCid","modelCid","findByIndex","findByCid","_remove","classErrorName$1","ClassOptions$3","CollectionView","sortWithCollection","_initChildViewStorage","getEmptyRegion","_children","$emptyEl","$container","_emptyRegion","_initialEvents","_onCollectionSort","_onCollectionReset","_onCollectionUpdate","viewComparator","_destroyChildren","_addChildModels","changes","removedViews","_removeChildModels","_addedViews","_detachChildren","_removeChildViews","_removeChildModel","_removeChild","_addChildModel","_createChildView","_addChild","ChildView","_getChildView","childViewOptions","_getChildViewOptions","buildChildView","childView","ChildViewClass","removeChildView","_getChildViewContainer","childViewContainer","_sortChildren","getComparator","setComparator","preventRender","shouldSort","removeComparator","_viewComparator","_filterChildren","_renderChildren","viewFilter","_getFilter","attachViews","detachViews","getFilter","matcher","setFilter","shouldRender","removeFilter","detachingViews","_detachChildView","_hasUnrenderedViews","_showEmptyView","_destroyEmptyView","els","_attachChildren","_this3","elBuffer","EmptyView","_getEmptyView","_getEmptyViewOptions","emptyView","emptyRegion","emptyViewOptions","swapChildViews","addChildView","hasIndex","_removeChildView","_destroyChildView","ClassOptions$4","Behavior","proxyViewProperties","behaviorEvents","behaviorHandler","behaviorTriggers","ClassOptions$5","_initRegion","_region","showView","getView","bindEvents$1","unbindEvents$1","bindRequests$1","unbindRequests$1","mergeOptions$1","getOption$1","normalizeMethods$1","triggerMethod$1","setDomApi$1","setRenderer$1","backbone_marionette","MnObject","defineProperty","Marionette","Mn","module","_typeof","previousRadio","noConflict","DEBUG","_debugText","warning","debugLog","warn","eventSplitter","removeHandler","store","_callback","removeHandlers","names","matched","_eventsApi","rest","_callHandler","a1","a2","a3","_logs","_partial","makeCallback","toArray","tuneIn","_tunedIn","tuneOut","Requests","requests","_requests","replyOnce","once","Channel","systems","system","previousSyphon","Syphon","ignoredTypes","serialize","buildConfig","getInputElements","getElementType","keyExtractors","keyExtractor","inputReaders","inputReader","keyAssignmentValidators","validKeyAssignment","keychain","keySplitter","assignKeyValue","deserialize","flattenedData","flattenData","inputWriters","inputWriter","formInputs","getForm","myType","extractor","foundInIgnored","ignoredTypeOrSelector","is","foundInInclude","foundInExclude","exclude","tagName","attr","viewOrForm","isUndefined","InputReaders","InputWriters","KeyExtractors","KeySplitter","keyJoiner","KeyJoiner","KeyAssignmentValidators","parentKey","flatData","keyName","TypeRegistry","registeredTypes","has","register","registerDefault","unregister","KeyExtractorSet","InputReaderSet","InputWriterSet","checked","KeyAssignmentValidatorSet","childKey","root","previousBackbone","emulateHTTP","emulateJSON","addMethod","attribute","iteratee","defaultVal","unshift","addUnderscoreMethods","Class","instance","_isModel","modelMatcher","attrs","eventsApi","opts","internalOn","listening","onApi","_listenId","listeningTo","_listeningTo","thisId","objId","offApi","onceMap","listenToOnce","offer","triggerApi","objEvents","allEvents","all","triggerEvents","unbind","changed","validationError","idAttribute","escape","unset","silent","changing","_changing","_previousAttributes","prev","isEqual","_pending","clear","hasChanged","changedAttributes","diff","old","previous","previousAttributes","serverAttrs","wrapError","save","wait","validate","isNew","patch","base","urlError","pairs","invert","omit","chain","Collection","_reset","setOptions","addOptions","array","insert","at","tail","singular","_removeModels","merged","toAdd","toMerge","toRemove","modelMap","sortable","sortAttr","existing","_prepareModel","_addReference","orderChanged","m","_removeReference","previousModels","_byId","modelId","first","findWhere","pluck","callbackOpts","_onModelEvent","prevId","collect","foldl","inject","reduceRight","foldr","detect","select","every","any","head","take","initial","last","difference","shuffle","sample","partition","groupBy","countBy","indexBy","findLastIndex","undelegateEvents","delegate","_createElement","_setAttributes","methodMap","_method","beforeSend","setRequestHeader","processData","textStatus","errorThrown","ajax","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","escapeRegExp","route","isRegExp","_routeToRegExp","router","fragment","_extractParameters","navigate","optional","History","checkUrl","routeStripper","rootStripper","pathStripper","started","atRoot","getSearch","matchRoot","decodeFragment","getHash","getPath","getFragment","_usePushState","_wantsHashChange","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","_hasPushState","rootPath","iframe","style","display","tabIndex","iWindow","firstChild","contentWindow","close","attachEvent","_checkUrlInterval","setInterval","loadUrl","detachEvent","removeChild","clearInterval","_updateHash","protoProps","staticProps","__super__","bottom","auto","basePlacements","clippingParents","viewport","popper","variationPlacements","acc","placement","beforeRead","afterRead","beforeMain","main","afterMain","beforeWrite","afterWrite","modifierPhases","getNodeName","nodeName","defaultView","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","styles","removeAttribute","setAttribute","effect","_ref2","initialStyles","position","strategy","top","margin","arrow","requires","getBasePlacement","getUAString","uaData","navigator","userAgentData","brands","brand","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","width","offsetHeight","height","visualViewport","addVisualOffsets","offsetLeft","y","offsetTop","getLayoutRect","rootNode","getRootNode","isSameNode","getComputedStyle","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mergePaddingObject","paddingObject","expandToHashMap","hashMap","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","axisProp","centerOffset","_options$element","querySelector","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","passive","_options$scroll","scroll","_options$resize","scrollParents","scrollParent","getOppositePlacement","getOppositeVariationPlacement","getWindowScroll","scrollLeft","pageXOffset","scrollTop","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","_element$ownerDocumen","isBody","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","getClippingRect","rootBoundary","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","_loop","fittingPlacement","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","order","modifiers","Set","modifier","dep","depModifier","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","orderedModifiers","effectCleanupFns","setOptionsAction","cleanupModifierEffects","orderModifiers","_ref$options","cleanupFn","noopFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","createPopper","eventListeners","elementMap","instanceMap","TRANSITION_END","parseSelector","CSS","triggerTransitionEnd","jquery","nodeType","getElement","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","Node","ELEMENT_NODE","classList","getAttribute","findShadowRoot","attachShadow","noop","reflow","getjQuery","jQuery","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","JQUERY_NO_CONFLICT","jQueryInterface","possibleCallback","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","getTransitionDurationFromElement","called","getNextActiveElement","activeElement","shouldGetNext","isCycleAllowed","listLength","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","makeEventUid","getElementEvents","findHandler","callable","delegationSelector","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","wrapFunction","relatedTarget","delegateTarget","previousFunction","domElements","querySelectorAll","domElement","hydrateObj","EventHandler","bootstrapDelegationHandler","bootstrapHandler","removeNamespacedHandlers","storeElementEvent","handlerKey","one","inNamespace","isNamespace","elementEvent","keyHandlers","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","cancelable","meta","_unused","normalizeData","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","getDataAttributes","bsKeys","dataset","pureKey","getDataAttribute","Config","Default","DefaultType","_getConfig","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","configTypes","expectedTypes","BaseComponent","_element","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","getSelector","hrefAttribute","sel","SelectorEngine","findOne","parents","ancestor","previousElementSibling","nextElementSibling","focusableChildren","focusables","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","clickEvent","EVENT_KEY$b","EVENT_CLOSE","EVENT_CLOSED","Alert","_destroyElement","SELECTOR_DATA_TOGGLE$5","Button","toggle","button","EVENT_KEY$9","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","Default$c","endCallback","leftCallback","rightCallback","DefaultType$c","Swipe","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","pointerType","maxTouchPoints","EVENT_KEY$8","DATA_API_KEY$5","ARROW_LEFT_KEY$1","ARROW_RIGHT_KEY$1","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN$1","EVENT_MOUSEENTER$1","EVENT_MOUSELEAVE$1","EVENT_DRAG_START","EVENT_LOAD_DATA_API$3","EVENT_CLICK_DATA_API$5","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$2","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","KEY_TO_DIRECTION","Default$b","keyboard","ride","touch","wrap","DefaultType$b","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","_maybeEnableCycle","_getItems","activeIndex","_getItemIndex","_getActive","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","isCycling","directionalClassName","orderClassName","_isAnimated","carousel","slideIndex","carousels","EVENT_KEY$7","EVENT_SHOW$6","EVENT_SHOWN$6","EVENT_HIDE$6","EVENT_HIDDEN$6","EVENT_CLICK_DATA_API$4","CLASS_NAME_SHOW$7","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_DEEPER_CHILDREN","SELECTOR_DATA_TOGGLE$4","Default$a","DefaultType$a","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","hide","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","scrollSize","selected","triggerArray","isOpen","NAME$a","EVENT_KEY$6","DATA_API_KEY$3","ARROW_UP_KEY$1","ARROW_DOWN_KEY$1","EVENT_HIDE$5","EVENT_HIDDEN$5","EVENT_SHOW$5","EVENT_SHOWN$5","EVENT_CLICK_DATA_API$3","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_SHOW$6","SELECTOR_DATA_TOGGLE$3","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default$9","autoClose","popperConfig","DefaultType$9","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","focus","_completeHide","referenceElement","_getPopperConfig","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","_selectMenuItem","clearMenus","openToggles","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","NAME$9","CLASS_NAME_SHOW$5","EVENT_MOUSEDOWN","Default$8","clickCallback","rootElement","DefaultType$8","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","EVENT_KEY$5","EVENT_FOCUSIN$2","EVENT_KEYDOWN_TAB","TAB_NAV_BACKWARD","Default$7","autofocus","trapElement","DefaultType$7","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","shiftKey","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","innerWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_resetElementAttributes","isOverflowing","_saveInitialAttribute","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","EVENT_KEY$4","EVENT_HIDE$4","EVENT_HIDE_PREVENTED$1","EVENT_HIDDEN$4","EVENT_SHOW$4","EVENT_SHOWN$4","EVENT_RESIZE$1","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS$1","EVENT_CLICK_DATA_API$2","CLASS_NAME_OPEN","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","Default$6","DefaultType$6","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","handleUpdate","modalBody","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","initialOverflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","EVENT_KEY$3","DATA_API_KEY$1","EVENT_LOAD_DATA_API$2","CLASS_NAME_SHOW$3","CLASS_NAME_SHOWING$1","CLASS_NAME_HIDING","OPEN_SELECTOR","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_HIDE$3","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$3","EVENT_RESIZE","EVENT_CLICK_DATA_API$1","EVENT_KEYDOWN_DISMISS","Default$5","DefaultType$5","Offcanvas","blur","DefaultAllowlist","area","br","col","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","li","ol","pre","small","span","sub","sup","strong","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","allowedAttributeList","attributeName","nodeValue","attributeRegex","Default$4","allowList","extraClass","sanitize","sanitizeFn","DefaultType$4","DefaultContentType","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","innerHTML","_maybeSanitize","_setContent","templateElement","_putElementInTemplate","textContent","unsafeHtml","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","sanitizeHtml","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$2","CLASS_NAME_SHOW$2","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","animation","customClass","DefaultType$3","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","click","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","getElementById","getUID","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","attachment","eventIn","eventOut","_setTimeout","dataAttributes","dataAttribute","SELECTOR_TITLE","SELECTOR_CONTENT","Default$2","DefaultType$2","Popover","_getContent","EVENT_KEY$2","EVENT_ACTIVATE","EVENT_CLICK","EVENT_LOAD_DATA_API$1","CLASS_NAME_ACTIVE$1","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LINKS","SELECTOR_LINK_ITEMS","Default$1","rootMargin","smoothScroll","threshold","DefaultType$1","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","observe","observableSection","scrollTo","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","_activateParents","listGroup","activeNodes","spy","EVENT_KEY$1","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK_DATA_API","EVENT_KEYDOWN","EVENT_LOAD_DATA_API","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","CLASS_NAME_ACTIVE","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","SELECTOR_DROPDOWN_TOGGLE","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DATA_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSIN","EVENT_FOCUSOUT","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","ReflectOwnKeys","R","Reflect","ReflectApply","receiver","ownKeys","getOwnPropertySymbols","NumberIsNaN","errorListener","removeListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","prepend","newListener","warned","onceWrapper","fired","wrapFn","_onceWrap","wrapped","unwrap","evlistener","ret","unwrapListeners","arrayClone","listenerCount","wrapListener","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","prependListener","prependOnceListener","originalListener","spliceOne","removeAllListeners","rawListeners","eventNames","_interopRequireDefault","__esModule","_interopRequireWildcard","newObj","_handlebarsSafeString2","_handlebarsException2","Utils","runtime","_handlebarsNoConflict2","hb","HandlebarsEnvironment","SafeString","escapeExpression","VM","spec","_utils","_exception2","_helpers","_decorators","_logger2","_internalProtoAccess","COMPILER_REVISION","LAST_COMPATIBLE_COMPILER_REVISION","REVISION_CHANGES","objectType","helpers","partials","decorators","registerDefaultHelpers","registerDefaultDecorators","registerHelper","unregisterHelper","registerPartial","unregisterPartial","registerDecorator","unregisterDecorator","resetLoggedPropertyAccesses","resetLoggedProperties","createFrame","_decoratorsInline2","_decoratorsInline","original","endLineNumber","column","endColumn","nop","_helpersBlockHelperMissing2","_helpersEach2","_helpersHelperMissing2","_helpersIf2","_helpersLog2","_helpersLookup2","_helpersWith2","moveHelperToHooks","helperName","keepHelper","inverse","contextPath","appendContextPath","_exception","priorKey","execIteration","blockParams","newContext","it","conditional","includeZero","lookupProperty","createNewLookupObject","createProtoAccessControl","runtimeOptions","defaultMethodWhiteList","defaultPropertyWhiteList","whitelist","_createNewLookupObject","allowedProtoProperties","allowProtoPropertiesByDefault","allowedProtoMethods","allowProtoMethodsByDefault","resultIsAllowed","protoAccessControl","checkWhiteList","loggedProperties","protoAccessControlForType","logUnexpecedPropertyAccessOnce","wrapHelper","helper","transformOptionsFn","lookupLevel","levelMap","Handlebars","__defineGetter__","__magic__","$Handlebars","checkRevision","compilerInfo","compilerRevision","currentRevision","runtimeVersions","compilerVersions","templateSpec","decorator","main_d","compiler","templateWasPrecompiledWithCompilerV7","strict","lookup","depths","lambda","invokePartial","resolvePartial","extendedOptions","compile","compilerOptions","indent","programs","program","declaredBlockParams","programWrapper","wrapProgram","depth","mergeIfNeeded","common","nullContext","_setup","useData","initData","useBlockParams","useDepths","executeDecorators","isTop","mergedHelpers","_internalWrapHelper","passLookupPropertyOption","wrapHelpersToPassLookupProperty","usePartial","useDecorators","keepHelperInHelpers","allowCallsToHelperMissing","_child","currentPartialBlock","partialBlock","prog","currentDepths","string","toHTML","possible","badChars","noGlobal","getProto","flat","class2type","hasOwn","fnToString","ObjectFunctionString","support","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","appendChild","toType","rhtmlSuffix","isArrayLike","pushStack","elems","prevObject","eq","even","grep","_elem","odd","copyIsArray","expando","Ctor","isEmptyObject","globalEval","makeArray","inArray","isXMLDoc","namespaceURI","docElem","second","callbackExpect","whitespace","rtrimCSS","bup","compareDocumentPosition","rcssescape","fcssescape","ch","asCodePoint","escapeSelector","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","nonHex","high","fromCharCode","setDocument","inDisabledFieldset","addCombinator","childNodes","seed","nid","groups","newSelector","getElementsByClassName","testContext","scope","tokenize","toSelector","qsaError","cache","cacheLength","markFunction","assert","createInputPseudo","createButtonPseudo","createDisabledPseudo","createPositionalPseudo","matchIndexes","subWindow","webkitMatchesSelector","msMatchesSelector","getById","getElementsByName","disconnectedMatch","cssHas","attrId","getAttributeNode","compare","sortDetached","expr","matchesSelector","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","what","_argument","simple","forward","ofType","outerCache","nodeIndex","useCache","lastChild","pseudo","setFilters","not","unmatched","lang","elemLang","safeActiveElement","hasFocus","selectedIndex","_matchIndexes","lt","gt","nth","radio","checkbox","password","image","submit","parseOnly","soFar","preFilters","cached","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","matcherOut","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","filters","unique","getText","selectors","until","truncate","siblings","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","sibling","cur","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","rnothtmlwhite","Identity","Thrower","adoptValue","noValue","Callbacks","flag","createOptions","firing","memory","locked","firingIndex","stopOnFalse","fireWith","Deferred","tuples","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","maxDepth","special","mightThrow","notifyWith","resolveWith","exceptionHook","rejectWith","getErrorHook","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","readyException","readyList","readyWait","doScroll","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","camelCase","acceptData","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","getData","_data","_removeData","dequeue","startLength","_queueHooks","clearQueue","pnum","rcssNum","cssExpand","composed","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","checkClone","cloneNode","noCloneChecked","wrapMap","thead","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","rhtml","buildFragment","selection","ignored","attached","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","types","origFn","leverageNative","isSetup","saved","delegateType","stopImmediatePropagation","handleObjIn","eventHandle","handleObj","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","removeEvent","nativeEvent","handlerQueue","preDispatch","currentTarget","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","originalEvent","load","noBubble","beforeunload","returnValue","timeStamp","isSimulated","altKey","changedTouches","ctrlKey","eventPhase","metaKey","pageX","pageY","charCode","keyCode","buttons","clientY","offsetX","offsetY","pointerId","screenX","screenY","targetTouches","toElement","which","focusMappedHandler","simulate","attaches","dataHolder","pointerenter","pointerleave","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","before","after","replaceWith","appendTo","prependTo","insertAfter","replaceAll","rnumnonpx","rcustomProp","getStyles","opener","swap","rboxStyle","curCSS","computed","minWidth","maxWidth","isCustomProp","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","trChild","trStyle","borderTopWidth","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","box","isBorderBox","computedVal","extra","delta","marginDelta","getWidthOrHeight","valueIsBorderBox","offsetProp","Tween","easing","cssHooks","opacity","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","isFinite","scrollboxSizeBuggy","border","suffix","expand","expanded","propHooks","percent","eased","pos","step","fx","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","requestAnimationFrame","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","prefilters","currentTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","prefilter","speed","opt","speeds","fadeTo","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","addClass","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","rquery","parserErrorElem","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","isLocal","accepts","json","responseFields","converters","ajaxSetup","ajaxPrefilter","ajaxTransport","cacheURL","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","requestHeadersNames","strAbort","getAllResponseHeaders","overrideMimeType","mimeType","finalText","crossDomain","ifModified","nativeStatusText","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","visible","xhrSuccessStatus","xhrSupported","errorCallback","username","xhrFields","onabort","binary","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","parentOffset","Height","Width","defaultExtra","hover","fnOver","fnOut","rtrim","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","step2list","step3list","C","V","meq1","mgr1","s_v","re_mgr0","re_mgr1","re_meq1","re_s_v","re_1a","re2_1a","re_1b","re2_1b","re_1b_2","re2_1b_2","re3_1b_2","re4_1b_2","re_1c","re_2","re_3","re_4","re2_4","re_5","re_5_1","re3_5","porterStemmer","lunr","builder","Builder","trimmer","stopWordFilter","stemmer","searchPipeline","utils","FieldRef","docRef","fieldName","stringValue","_stringValue","joiner","fromString","fieldRef","intersect","other","union","intersection","idf","posting","documentCount","documentsWithTerm","Token","tokenizer","sliceEnd","sliceStart","sliceLength","separator","tokenMetadata","_stack","registeredFunctions","registerFunction","label","warnIfFunctionNotRegistered","serialised","fnName","existingFn","newFn","stackLength","runString","Vector","_magnitude","positionForIndex","pivotPoint","pivotIndex","insertIdx","upsert","magnitude","sumOfSquares","elementsLength","sqrt","dot","otherVector","dotProduct","aLen","bLen","aVal","bVal","similarity","stem","firstch","re","re2","re3","re4","substr","fp","generateStopWordFilter","stopWords","words","stopWord","TokenSet","edges","_nextId","fromArray","fromClause","clause","fromFuzzyString","term","editDistance","editsRemaining","noEditNode","insertionNode","substitutionNode","transposeNode","charA","charB","edge","_str","labels","qNode","qEdges","qLen","nEdges","nLen","q","qEdge","nEdge","previousWord","uncheckedNodes","minimizedNodes","word","commonPrefix","minimize","nextNode","downTo","Index","invertedIndex","fieldVectors","tokenSet","QueryParser","Query","matchingFields","queryVectors","termFieldCache","requiredMatches","prohibitedMatches","clauses","terms","clauseMatches","usePipeline","termTokenSet","expandedTerms","presence","REQUIRED","expandedTerm","termIndex","_index","fieldPosting","matchingDocumentRefs","termField","matchingDocumentsSet","PROHIBITED","boost","fieldMatch","matchingDocumentRef","matchingFieldRef","MatchData","allRequiredMatches","allProhibitedMatches","matchingFieldRefs","isNegated","docMatch","fieldVector","score","matchData","combine","serializedIndex","serializedVectors","serializedInvertedIndex","tokenSetBuilder","_fields","_documents","fieldTermFrequencies","fieldLengths","_k1","metadataWhitelist","k1","fieldTerms","metadataKey","calculateAverageFieldLengths","fieldRefs","numberOfFields","accumulator","documentsWithField","averageFieldLength","createFieldVectors","fieldRefsLength","termIdfCache","fieldLength","termFrequencies","termsLength","fieldBoost","docBoost","scoreWithPrecision","tf","createTokenSet","clonedMetadata","metadataKeys","otherMatchData","allFields","wildcard","LEADING","TRAILING","OPTIONAL","QueryParseError","QueryLexer","lexemes","escapeCharPositions","lexText","sliceString","subSlices","EOS","ignore","acceptDigitRun","more","FIELD","TERM","EDIT_DISTANCE","BOOST","PRESENCE","lexField","lexer","lexTerm","lexEditDistance","lexBoost","lexEOS","termSeparator","currentClause","lexemeIdx","parseClause","peekLexeme","consumeLexeme","lexeme","nextClause","completedClause","parser","parsePresence","parseField","parseTerm","nextLexeme","possibleFields","parseEditDistance","parseBoost","AppRouter","appRoutes","controller","_getController","processAppRoutes","_processOnRoute","appRoute","_addAppRoute","routeName","routeArgs","onRoute","routePath","routeNames","AbortError","isTokenCredential","castCredential","getToken","encodeByteArray","decodeString","byteString","atob","Uint8Array","XML_ATTRKEY","XML_CHARKEY","validateISODuration","validUuidRegex","flattenResponse","fullResponse","responseSpec","isNullable","nullable","expectedBodyTypeName","isPageableResponse","arrayResponse","responseObject","combinedHeadersAndBody","hasNullableType","shouldWrapBody","handleNullableResponseAndWrappableBody","mapperTypeName","SerializerImpl","modelMappers","validateConstraints","objectName","failValidation","constraintName","constraintValue","ExclusiveMaximum","ExclusiveMinimum","InclusiveMaximum","MaxItems","MaxLength","MinItems","MinLength","MultipleOf","Pattern","UniqueItems","ar","rootName","includeRoot","mapperType","valueOf","uuid","tee","isView","serializeBasicTypes","serializeEnumType","toUTCString","dateToUnixTime","isDuration","serializeDateTypes","serializeByteArrayType","trimEnd","bufferToBase64Url","serializeBase64UrlType","isXml","elementType","tempArray","serializedValue","xmlNamespace","xmlnsKey","xmlNamespacePrefix","serializeSequenceType","tempDictionary","getXmlObjectValue","serializeDictionaryType","getPolymorphicDiscriminatorRecursively","getPolymorphicMapper","modelProps","resolveModelProperties","propertyMapper","parentObject","paths","splitSerializeName","childObject","propertyObjectName","toSerialize","polymorphicDiscriminator","clientName","additionalPropertiesMapper","additionalProperties","modelMapper","resolveReferencedMapper","resolveAdditionalProperties","propNames","clientPropName","pn","serializeCompositeType","responseBody","ignoreUnknownProperties","handledPropertyNames","dictionary","headerKey","elementList","propertyInstance","steps","arrayInstance","isAdditionalProperty","responsePropName","isSpecialXmlProperty","deserializeCompositeType","unixTimeToDate","base64UrlToByteArray","deserializeSequenceType","deserializeDictionaryType","createSerializer","classes","partialclass","subwords","polymorphicPropertyName","discriminatorName","discriminatorValue","uberParent","polymorphicMapper","discriminators","typeNamesToCheck","currentName","indexDiscriminator","getIndexDiscriminator","getPolymorphicDiscriminatorSafely","MapperTypeNames","Base64Url","ByteArray","Composite","DateTime","DateTimeRfc1123","Dictionary","Enum","Sequence","Stream","TimeSpan","UnixTime","operationRequestMap","WeakMap","getOperationArgumentValueFromParameter","parameter","fallbackObject","parameterMapper","propertySearchResult","getPropertyFromParameterPath","propertyFound","useDefaultValue","propertyValue","parameterPathPart","originalRequestSymbol","for","getOperationRequestInfo","hasOriginalRequest","defaultJsonContentTypes","defaultXmlContentTypes","deserializationPolicyName","deserializationPolicy","jsonContentTypes","expectedContentTypes","xmlContentTypes","parsedResponse","operationResponse","streamResponseStatusCodes","contentComponents","errCode","PARSE_ERROR","operationInfo","shouldDeserialize","shouldDeserializeResponse","operationResponseGetter","getOperationResponseMap","shouldReturnResponse","isSuccessByStatus","isExpectedStatusCode","expectedStatusCodes","isOperationSpecEmpty","errorResponseSpec","initialErrorMessage","defaultBodyMapper","defaultHeadersMapper","deserializedError","valueToDeserialize","internalError","defaultError","handleErrorResponse","deserializeError","deserializeResponseBody","getPathStringFromParameter","serializationPolicyName","serializationPolicy","headerParameter","headerValue","customHeaders","customHeaderName","serializeHeaders","requestBodyParameterPathString","isStream","getXmlValueWithNamespace","xmlNamespaceKey","prepareXMLRootList","formDataParameters","formData","formDataParameter","formDataParameterValue","formDataParameterPropertyName","serializeRequestBody","createClientPipeline","credentialOptions","credentialScopes","cachedHttpClient","CollectionFormatToDelimiterMap","CSV","SSV","Multi","TSV","Pipes","getRequestUrl","urlReplacements","urlParameter","urlParameterValue","parameterPathString","calculateUrlReplacements","isAbsolutePath","pathToAppend","searchStart","appendPath","queryParams","sequenceParams","queryParameter","queryParameterValue","calculateQueryParameters","noOverwrite","combinedParams","existingValue","simpleParseQueryParams","valueSet","subValue","appendQueryParams","replacements","replaceValue","ServiceClient","_requestContentType","_allowInsecureConnection","_httpClient","getCredentialScopes","createDefaultPipeline","additionalPolicies","baseUrl","getStreamingResponseStatusCodes","rawResponse","flatResponse","onResponse","Constants","authorizeRequestOnTenantChallenge","challengeOptions","challenge","getChallenge","challengeInfo","bearerChallenge","challengeParts","parseChallenge","challengeScopes","resource_id","buildScopes","tenantId","parsedAuthUri","authorization_uri","extractTenantId","accessToken","getAccessToken","disableKeepAlivePolicyName","originalClientRequestSymbol","toPipelineRequest","webResource","toJson","preserveCase","disableKeepAlive","keepAlive","proxySettings","originalRequest","toWebResourceLike","toHttpHeadersLike","prepare","validateRequestProperties","createProxy","Proxy","HttpHeaders","getHeaderKey","rawHeaders","_headersMap","headersArray","headerNames","headerValues","resultPreservingCasing","toCompatResponse","toPipelineResponse","compatResponse","ExtendedServiceClient","keepAliveOptions","getOrderedPolicies","redirectOptions","handleRedirects","userProvidedCallBack","lastResponse","HttpPipelineLogLevel","requestPolicyFactoryPolicyName","createRequestPolicyFactoryPolicy","orderedFactories","httpPipeline","httpRequest","webResourceLike","convertHttpClient","requestPolicyClient","ValidPhaseNames","HttpPipeline","policies","_policies","_orderedPolicies","removedPolicies","policyDescriptor","orderPolicies","policyMap","createPhase","hasAfterPolicies","serializePhase","noPhase","deserializePhase","retryPhase","signPhase","orderedPhases","getPhase","descriptor","dependsOn","dependants","afterPolicies","afterPolicyName","afterNode","beforePolicies","beforePolicyName","beforeNode","walkPhase","dependant","walkPhases","iteration","initialResultLength","createEmptyPipeline","RedactedString","defaultAllowedHeaderNames","defaultAllowedQueryParameters","Sanitizer","allowedHeaderNames","allowedQueryParameters","seen","sanitizeHeaders","sanitizeUrl","sanitizeQuery","sanitized","logPolicyName","redirectPolicyName","allowedRedirect","redirectPolicy","maxRetries","handleRedirect","currentRetries","locationHeader","getUserAgentValue","runtimeInfo","localNavigator","osPlatform","entropyValues","getHighEntropyValues","architecture","platform","platformVersion","brandOrder","foundBrand","getBrandVersionString","browserRegexes","getBrowserInfo","EdgeRuntime","setPlatformSpecificData","defaultAgent","telemetryInfo","getUserAgentString","UserAgentHeaderName","userAgentPolicyName","rawContent","getRawContent","isWebReadableStream","getReader","toBlobPart","Response","encodeHeaders","getLength","buildRequestBody","flatMap","part","partLength","getTotalLength","multipartPolicyName","maxBoundaryLength","validBoundaryCharacters","multipartPolicy","multipartBody","contentTypeHeader","parsedHeader","parsedBoundary","assertValidBoundary","decompressResponsePolicyName","StandardAbortMessage","delayInMs","onAborted","rejectOnAbort","abortErrorMsg","removeListeners","parseHeaderValueAsNumber","valueAsNum","RetryAfterHeader","AllRetryAfterHeaders","getRetryAfterInMs","retryAfterValue","retryAfterHeader","DEFAULT_CLIENT_RETRY_INTERVAL","DEFAULT_CLIENT_MAX_RETRY_INTERVAL","maxRetryInterval","retryAfterInMs","retryCount","responseError","matchedSystemError","isSystemError","ignoreSystemErrors","isExponential","isExponentialRetryResponse","ignoreExponentialResponse","ignoreHttpStatusCodes","unknownResponse","isThrottlingRetryResponse","skipStrategy","errorToThrow","exponentialDelay","clampedExponentialDelay","retryPolicyLogger","retryPolicyName","strategies","retryRequest","strategiesLoop","strategyLogger","redirectTo","defaultRetryPolicyName","normalizeName","HttpHeadersImpl","normalizedName","headerIterator","createHttpHeaders","formDataPolicyName","formDataPolicy","FormData","formDataMap","formDataToFormDataMap","urlSearchParams","URLSearchParams","wwwFormUrlEncode","prepareFormData","getDefaultProxySettings","setClientRequestIdPolicyName","tlsPolicyName","custom","errorSanitizer","RestError","isRestError","REQUEST_SEND_ERROR","tracingPolicyName","tracingPolicy","userAgentPromise","sanitizer","tryCreateTracingClient","spanAttributes","tracingContext","startSpan","spanKind","isRecording","createRequestHeaders","tryCreateSpan","withContext","serviceRequestId","setStatus","tryProcessResponse","tryProcessError","createPipelineFromOptions","tlsSettings","tlsOptions","proxyPolicy","decompressResponsePolicy","userAgentValue","userAgentPolicy","requestIdHeaderName","setClientRequestIdPolicy","telemetryOptions","clientRequestIdHeaderName","defaultRetryPolicy","logPolicy","FetchHttpClient","abortController","abortControllerCleanup","AbortController","abortListener","setupAbortSignal","pipelineHeaders","buildFetchHeaders","streaming","buildBodyStream","requestInit","signal","duplex","httpResponse","buildPipelineHeaders","bodyStream","onEnd","POSITIVE_INFINITY","enableBrowserStreams","browserStreamBody","responseStream","buildPipelineResponse","makeRequest","getError","readableStream","pipeThrough","TransformStream","isTransformStreamSupported","chunk","enqueue","terminate","reader","ReadableStream","pull","releaseLock","createDefaultHttpClient","PipelineRequestImpl","createPipelineRequest","DEFAULT_CYCLER_OPTIONS","forcedRefreshWindowInMs","retryIntervalInMs","refreshWindowInMs","tokenCyclerOptions","refreshWorker","cycler","isRefreshing","shouldRefresh","refreshAfterTimestamp","expiresOnTimestamp","mustRefresh","getTokenOptions","refreshTimeout","tryGetAccessToken","finalToken","beginRefresh","_token","tokenOptions","hasClaimChallenge","claims","tenantIdChanged","bearerTokenAuthenticationPolicyName","defaultAuthorizeRequest","bearerTokenAuthenticationPolicy","authorizeRequest","knownContextKeys","createTracingContext","TracingContextImpl","parentContext","initialContext","_contextMap","getValue","deleteValue","instrumenterImplementation","getInstrumenter","parseTraceparentHeader","spanOptions","recordException","addEvent","callbackArgs","createTracingClient","startSpanResult","traceparentHeader","buildPromise","cleanupBeforeAbort","onAbort","createAbortablePromise","hasName","hasMessage","getErrorMessage","stringified","TextEncoder","encode","utf8StringToUint8Array","base64ToUint8Array","base64String","base64UrlToUint8Array","bytes","highNibble","lowNibble","hexDigits","hexStringToUint8Array","generateUUID","randomNumber","uuidFunction","crypto","randomUUID","importScripts","Deno","deno","Bun","isNodeLike","XMLSerializer","ttPolicy","trustedTypes","createPolicy","createHTML","createDocument","cdataPropName","stopNodes","parserErrors","errorNS","invalidXML","getErrorNamespace","throwIfError","domToObject","childNodeCount","firstChildNode","onlyChildTextValue","TEXT_NODE","elementWithAttributes","hasAttributes","asElementWithAttributes","CDATA_SECTION_NODE","buildNode","serializeToString","buildAttributes","createAttribute","arrayElem","createElementNS","setNamedItem","cdataElement","createCDATASection","debugEnvVariable","enabledString","enabledNamespaces","skippedNamespaces","debuggers","debugObj","createDebugger","firstArg","debug","namespaceList","skipped","enabledNamespace","newDebugger","registeredLoggers","logLevelFromEnv","AZURE_LOG_LEVEL","azureLogLevel","AzureLogger","AZURE_LOG_LEVELS","isAzureLogLevel","shouldEnable","setLogLevel","verbose","createClientLogger","clientRootLogger","patchLogMethod","createLogger","captionContent","horizontalEdgeThreshold","mobileCaptionOverlapRatio","mobileLayoutBreakpoint","verticallyCenterImage","lightbox","pswp","initCaption","showCaption","currSlide","onCalcSlideSize","slide","dynamicCaption","currZoomLevel","zoomLevels","hideCaption","captionYOffset","shiftedAmount","pan","bounds","setCaptionYOffset","adjustPanArea","destZoomLevel","zoomLevel","adjustedPanAreaSize","panAreaSize","originalPanAreaSize","useMobileLayout","captionElement","captionFadeTimeout","setCaptionPosition","captionEl","isOnHorizontalEdge","setCaptionWidth","setCaptionType","prevType","pswpCaptionType","updateCaptionPosition","imageWidth","imageHeight","captionSize","useMobileVersion","captionHTML","getCaptionHTML","holderElement","storeOriginalPanAreaSize","measureCaptionSize","captionWidth","horizontalEnding","recalculateZoomLevelAndBounds","viewportSize","captionHeight","verticalEnding","verticalLeftover","initialPanAreaHeight","maxPositionX","storeAdjustedPanAreaSize","currSlideElement","hiddenCaption","appendToEl","setWidthHeight","LOAD_STATE","getElementsFromOption","legacySelector","NodeList","isSafari","vendor","PhotoSwipeEvent","Eventable","_filters","addFilter","_this$_filters$name","_this$_filters$name2","_this$pswp","f1","f2","applyFilters","_this$_filters$name3","_this$_listeners$name","_this$pswp2","_this$pswp3","_this$_listeners$name2","Placeholder","imageSrc","imgEl","decoding","alt","setDisplayedSize","transformOrigin","propValue","toTransformString","_this$element","Content","itemData","placeholder","displayedImageWidth","displayedImageHeight","hasSlide","isDecoding","removePlaceholder","keepPlaceholder","isLazy","reload","usePlaceholder","placeholderEl","parentElement","placeholderSrc","msrc","isFirstSlide","isImageContent","loadImage","updateContentSize","_this$data$src","_this$data$alt","imageElement","updateSrcsetSizes","srcset","onLoaded","setSlide","heavyAppended","displayError","isLoading","isInitialSizeUpdate","isZoomable","sizesWidth","largestUsedSize","sizes","lazyLoad","_this$instance$option","_this$instance$option2","errorMsgEl","innerText","errorMsg","supportsDecode","decode","appendImage","parsePaddingOption","paddingValue","paddingFn","legacyPropName","ZoomLevel","elementSize","fit","fill","vFill","secondary","maxHeight","hRatio","vRatio","_getInitial","_getSecondary","_getMax","slideData","_parseZoomLevelOption","optionPrefix","optionValue","lazyLoadData","createContentFromData","getViewportSizeFn","newViewportSize","innerHeight","getViewportSize","getPanAreaSize","PhotoSwipeBase","getNumItems","_this$options","numItems","dataSource","_getGalleryDOMElements","gallery","getItemData","_this$options2","dataSourceItem","_domElementToItemData","galleryElement","_this$options3","_this$options4","childSelector","linkEl","pswpSrc","pswpSrcset","pswpWidth","pswpHeight","pswpType","thumbnailEl","_thumbnailEl$getAttri","currentSrc","pswpCropped","cropped","thumbCropped","PhotoSwipeLightbox","_uid","shouldOpen","_preloadedContent","onThumbnailsClick","gallerySelector","specialKeyUsed","initialPoint","clickedIndex","getClickedIndex","loadAndOpen","getClickedIndexFn","clickedTarget","clickedChildIndex","galleryElements","initialPointerPos","preload","promiseArray","pswpModuleType","pswpModule","goTo","openPromise","preloadFirstSlide","lazyLoadSlide","iterableModules","mainModule","_openPhotoswipe","contentLoader","addToCache","equalizePoints","p1","p2","roundPoint","getDistanceBetween","pointsEqual","clamp","setTransform","setTransitionStyle","ease","transition","supportsPassive","DOMEvents","_pool","_toggleListener","removeAll","poolItem","skipPool","eType","eventOptions","PanBounds","_updateAxis","elSize","correctPan","panOffset","Slide","currIndex","currentResolution","getContentBySlide","prevDisplayedWidth","prevDisplayedHeight","setIsActive","calculateSize","appendHeavy","zoomAndPanToInitial","applyCurrentZoomPan","mainScroll","isShifted","panTo","force","scaleMultiplier","sizeChanged","getPlaceholderElement","_this$content$placeho","zoomTo","centerPoint","ignoreBounds","animations","stopAllPan","prevZoomLevel","setZoomLevel","calculateZoomToPanOffset","finishTransition","_setResolution","startTransition","isPan","getCurrentTransform","toggleZoom","zoomAnimationDuration","point","getViewportCenterPoint","zoomFactor","panX","panY","isPannable","_applyZoomTransform","newResolution","DragHandler","gestures","startPan","stopAll","change","prevP1","dragAxis","closeOnVerticalDrag","isMultitouch","_setPanWithFriction","bgOpacity","_getVerticalDragRatio","applyBgOpacity","_panOrMoveMainScroll","velocity","indexDiff","currentSlideVisibilityRatio","getCurrSlideX","moveIndexBy","correctZoomPan","_finishPanGestureForAxis","panPos","restoreBgOpacity","projectedPosition","initialVelocity","decelerationRate","project","vDragRatio","projectedVDragRatio","correctedPanPosition","dampingRatio","initialBgOpacity","totalPanDist","startSpring","onUpdate","animationProgressRatio","newMainScrollX","moveTo","newPan","allowPanToNext","currSlideMainScrollX","mainScrollShiftDiff","isLeftToRight","isRightToLeft","_this$pswp$currSlide$","_this$pswp$currSlide","potentialPan","customFriction","getZoomPointsCenter","ZoomHandler","_startPan","_startZoomPoint","_zoomPoint","_wasOverFitZoomLevel","_startZoomLevel","startP1","startP2","minZoomLevel","maxZoomLevel","pinchToClose","_calculatePanForZoomLevel","ignoreGesture","destinationZoomLevel","currZoomLevelNeedsChange","initialPan","destinationPan","panNeedsChange","naturalFrequency","newZoomLevel","didTapOnMainContent","TapHandler","targetClassList","isImageClick","isBackgroundClick","_doClickOrTapAction","tap","doubleTap","actionName","_this$gestures$pswp$e","actionFullName","clickToCloseNonZoomable","Gestures","prevP2","_lastStartP1","_intervalP1","_numActivePoints","_ongoingPointers","_touchEventEnabled","_pointerEventEnabled","supportsTouch","_intervalTime","_velocityCalculated","isDragging","isZooming","raf","_tapTimer","drag","tapHandler","scrollWrap","_onClick","_bindEvents","ontouchmove","ontouchend","pref","down","up","cancelEvent","onPointerDown","onPointerMove","onPointerUp","isMousePointer","mouseDetected","_preventPointerEventBehaviour","_updatePoints","_clearTapTimer","_finishDrag","_updateStartPoints","_rafStopLoop","_rafRenderLoop","_calculateDragDirection","_updateVelocity","_finishTap","_updatePrevPoints","_getVelocity","tapDelay","doubleTapAction","displacement","cancelAnimationFrame","pointerEvent","pointerIndex","ongoingPointer","_convertEventPosToPoint","touchEvent","axisToCheck","MainScroll","slideWidth","_currPositionIndex","_prevPositionIndex","_containerShiftIndex","itemHolders","resizeSlides","newSlideWidth","spacing","slideWidthChanged","itemHolder","resetPosition","appendHolders","canBeSwiped","velocityX","newIndex","potentialIndex","numSlides","canLoop","getLoopedIndex","stopMainScroll","destinationX","isMainScroll","updateCurrItem","currDiff","currDistance","_this$itemHolders$","positionDifference","tempHolder","diffAbs","_itemHolder$slide","updateLazy","dragging","newSlideIndexOffset","KeyboardKeyCodesMap","Escape","z","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","getKeyboardEventKey","isKeySupported","Keyboard","_wasFocused","trapFocus","_focusRoot","_onFocusIn","_onKeyDown","lastActiveElement","returnFocus","keydownAction","isForward","escKey","arrowKeys","DEFAULT_EASING","CSSAnimation","_props$prop","onFinish","_target","_finished","_onTransitionEnd","_helperTimeout","_finalizeAnimation","SpringEaser","_dampingRatio","_naturalFrequency","_dampedFrequency","easeFrame","deltaPosition","deltaTime","coeff","naturalDumpingPow","E","dumpedFCos","dumpedFSin","sin","SpringAnimation","_raf","easer","prevTime","animationLoop","Animations","activeAnimations","isSpring","isPanRunning","ScrollWheel","_onWheel","deltaX","deltaY","wheelToZoom","deltaMode","UIElement","_container","elementHTML","isButton","ariaLabel","ariaText","htmlData","isCustomSVG","svgData","out","outlineID","inner","addElementHTML","onInit","onClick","onclick","topBar","initArrowButton","isNextButton","loop","arrowPrev","arrowNext","closeButton","zoomButton","loadingIndicator","indicatorElement","delayTimeout","setIndicatorVisibility","updatePreloaderVisibility","_pswp$currSlide","_pswp$currSlide2","preloaderDelay","counterIndicator","counterElement","indexIndicatorSep","setZoomedIn","isZoomedIn","UI","isRegistered","uiElementsData","_lastUpdatedZoomLevel","uiElementData","registerElement","_pswp$element","_onZoomPanUpdate","elementData","isClosing","currZoomLevelDiff","imageClickAction","ContentLoader","_cachedItems","loadSlideByIndex","initialIndex","getContentByIndex","removeByIndex","indexToRemove","MIN_OPACITY","Opener","isClosed","isOpening","_duration","_useAnimation","_croppedZoom","_animateRootOpacity","_animateBgOpacity","_placeholder","_opacityElement","_cropContainer1","_cropContainer2","_thumbBounds","_prepareOpen","hideAnimationDuration","maxWidthToAnimate","_applyStartProps","showAnimationDuration","_options$showHideOpac","showHideAnimationType","showHideOpacity","_initialThumbBounds","getThumbBounds","_animateZoom","bg","innerRect","_setClosedStateZoomPan","decoded","isDelaying","_initiate","_this$pswp$element","_this$pswp$element2","_animateToOpenState","_animateToClosedState","_onAnimationComplete","_animateTo","containerOnePanX","containerOnePanY","containerTwoPanX","containerTwoPanY","animProps","bgClickAction","tapAction","PhotoSwipe","_prepareOptions","_prevViewportSize","isDestroying","hasMouse","_initialItemData","_createMainStructure","rootClasses","mainClass","scrollWheel","updateSize","_handlePageResize","_updatePageScrollOffset","_this$currSlide","_this$currSlide2","_itemHolder$slide2","refreshSlideContent","_this$currSlide$index","_this$currSlide3","potentialHolderIndex","_itemHolder$slide3","holder","matchMedia","_this$element2","setScrollOffset","thumbBounds","thumbnail","thumbSelector","thumbAreaRect","fillZoomLevel","getCroppedBoundsByElement","getBoundsByElement","__rest","propertyIsEnumerable","__values","__await","__asyncGenerator","_arguments","generator","AsyncIterator","verb","fulfill","settle","__asyncDelegator","__asyncValues","SuppressedError","ArrayProto","ObjProto","SymbolProto","supportsArrayBuffer","supportsDataView","DataView","nativeIsArray","nativeKeys","nativeCreate","nativeIsView","_isNaN","_isFinite","hasEnumBug","nonEnumerableProps","MAX_ARRAY_INDEX","restArguments","startIndex","isNull","tagTester","nodelist","Int8Array","hasDataViewBug","isIE11","isDataView","getInt8","isArrayBuffer","isArguments","isSymbol","constant","createSizePropertyCheck","getSizeProperty","sizeProperty","shallowProperty","typedArrayPattern","collectNonEnumProps","emulatedSet","nonEnumIdx","isMatch","_keys","_wrapped","toBufferView","bufferSource","tagDataView","aStack","bStack","deepEq","areArrays","aCtor","bCtor","allKeys","ie11fingerprint","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","functions","createAssigner","keysFunc","baseCreate","extendOwn","interceptor","toPath","deepGet","identity","optimizeCb","argCount","baseIteratee","Infinity","mapObject","currentKey","propertyOf","times","accum","createEscaper","escaper","testRegexp","replaceRegexp","templateSettings","evaluate","interpolate","noMatch","escapes","bareIdentifier","oldSettings","variable","idCounter","_chain","executeBound","sourceFunc","boundFunc","callingContext","boundArgs","bound","callArgs","flatten","memoize","hasher","address","throttle","later","leading","_now","trailing","debounce","immediate","passed","debounced","_args","wrapper","negate","predicate","compose","findKey","createPredicateIndexFinder","sortedIndex","low","mid","createIndexFinder","predicateFind","createReduce","reducer","fromIndex","guard","lastComputed","reStrSymbol","rand","criteria","group","pass","keyInObj","compact","otherArrays","uniq","isSorted","arrays","argsLength","unzip","chainResult","rnds8","byteToHex","unsafeStringify","buf","rnds","rng"],"sourceRoot":""}