botframework-webchat-api 4.17.1 → 4.18.1-hotfix.20260127.b53acdf
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/decorator.js +3 -0
- package/dist/botframework-webchat-api.d.mts +213 -55
- package/dist/botframework-webchat-api.d.ts +1612 -0
- package/dist/botframework-webchat-api.decorator.d.mts +30 -0
- package/dist/botframework-webchat-api.decorator.d.ts +30 -0
- package/dist/botframework-webchat-api.decorator.js +3 -0
- package/dist/botframework-webchat-api.decorator.js.map +1 -0
- package/dist/botframework-webchat-api.decorator.mjs +3 -0
- package/dist/botframework-webchat-api.decorator.mjs.LEGAL.txt +0 -0
- package/dist/botframework-webchat-api.decorator.mjs.map +1 -0
- package/dist/botframework-webchat-api.internal.d.mts +18 -1
- package/dist/botframework-webchat-api.internal.d.ts +20 -0
- package/dist/botframework-webchat-api.internal.js +3 -0
- package/dist/botframework-webchat-api.internal.js.LEGAL.txt +0 -0
- package/dist/botframework-webchat-api.internal.js.map +1 -0
- package/dist/botframework-webchat-api.internal.mjs +1 -1
- package/dist/botframework-webchat-api.internal.mjs.map +1 -1
- package/dist/botframework-webchat-api.js +3 -0
- package/dist/botframework-webchat-api.js.LEGAL.txt +0 -0
- package/dist/botframework-webchat-api.js.map +1 -0
- package/dist/botframework-webchat-api.mjs +1 -1
- package/dist/botframework-webchat-api.mjs.map +1 -1
- package/dist/chunk-2HABAU7C.mjs +3 -0
- package/dist/chunk-2HABAU7C.mjs.LEGAL.txt +0 -0
- package/dist/chunk-2HABAU7C.mjs.map +1 -0
- package/dist/chunk-45Z2ZE4M.js +3 -0
- package/dist/chunk-45Z2ZE4M.js.LEGAL.txt +0 -0
- package/dist/chunk-45Z2ZE4M.js.map +1 -0
- package/dist/chunk-7K3OK5TS.mjs +3 -0
- package/dist/chunk-7K3OK5TS.mjs.LEGAL.txt +0 -0
- package/dist/chunk-7K3OK5TS.mjs.map +1 -0
- package/dist/chunk-LXPINC7N.js +3 -0
- package/dist/chunk-LXPINC7N.js.LEGAL.txt +0 -0
- package/dist/chunk-LXPINC7N.js.map +1 -0
- package/dist/chunk-PRWGXTDA.mjs +3 -0
- package/dist/chunk-PRWGXTDA.mjs.LEGAL.txt +0 -0
- package/dist/chunk-PRWGXTDA.mjs.map +1 -0
- package/dist/chunk-WH7VSYKK.js +3 -0
- package/dist/chunk-WH7VSYKK.js.LEGAL.txt +0 -0
- package/dist/chunk-WH7VSYKK.js.map +1 -0
- package/dist/metafile-cjs.json +1 -0
- package/dist/metafile-esm.json +1 -1
- package/dist/types-BXPldIKA.d.mts +86 -0
- package/dist/types-BXPldIKA.d.ts +86 -0
- package/internal.js +1 -1
- package/package.json +68 -70
- package/src/StyleOptions.ts +123 -4
- package/src/decorator/ActivityBorder/ActivityBorderDecorator.tsx +48 -0
- package/src/decorator/ActivityBorder/private/ActivityBorderDecoratorMiddleware.ts +51 -0
- package/src/decorator/ActivityBorder/types.ts +1 -0
- package/src/decorator/ActivityGrouping/ActivityGroupingDecorator.tsx +31 -0
- package/src/decorator/ActivityGrouping/private/ActivityGroupingDecoratorMiddleware.ts +38 -0
- package/src/decorator/ActivityGrouping/types.ts +1 -0
- package/src/decorator/DecoratorComposer.tsx +22 -0
- package/src/decorator/internal/InternalDecoratorComposer.tsx +61 -0
- package/src/decorator/internal/LowPriorityDecoratorComposer.tsx +19 -0
- package/src/decorator/private/DecoratorComposerContext.ts +16 -0
- package/src/decorator/private/PassthroughFallback.tsx +12 -0
- package/src/decorator/private/templateMiddleware.test.tsx +100 -0
- package/src/decorator/private/templateMiddleware.ts +60 -0
- package/src/decorator/types.ts +15 -0
- package/src/decorator.ts +16 -0
- package/src/defaultStyleOptions.ts +26 -5
- package/{lib/external/PrecompiledGlobalize.cjs → src/external/PrecompiledGlobalize.js} +8 -7
- package/src/hooks/Composer.tsx +75 -53
- package/src/hooks/index.ts +7 -1
- package/src/hooks/internal/SendBoxMiddleware.ts +5 -3
- package/src/hooks/internal/SendBoxToolbarMiddleware.ts +5 -3
- package/src/hooks/internal/Tracker.ts +1 -1
- package/src/hooks/internal/WebChatAPIContext.ts +12 -5
- package/src/hooks/internal/private/templateMiddleware.ts +3 -43
- package/src/hooks/internal/usePrevious.ts +5 -2
- package/src/hooks/middleware/concatMiddleware.spec.js +20 -0
- package/src/hooks/middleware/concatMiddleware.ts +6 -5
- package/src/hooks/private/numberWithInfinity.spec.ts +9 -0
- package/src/hooks/private/numberWithInfinity.ts +15 -0
- package/src/hooks/private/reduceIterable.spec.ts +29 -0
- package/src/hooks/private/reduceIterable.ts +13 -0
- package/src/hooks/useActiveTyping.ts +31 -28
- package/src/hooks/useDisabled.ts +8 -2
- package/src/hooks/useGetActivitiesByKey.ts +3 -0
- package/src/hooks/useSuggestedActions.ts +17 -4
- package/src/hooks/useUIState.ts +18 -0
- package/src/hooks/validation/uiState.parseUIState.spec.ts +21 -0
- package/src/hooks/validation/uiState.ts +10 -0
- package/src/index.ts +4 -4
- package/src/internal.ts +3 -1
- package/src/localization/ar-SA.json +19 -0
- package/src/localization/bg-BG.json +19 -0
- package/src/localization/ca-ES.json +19 -0
- package/src/localization/cs-CZ.json +19 -0
- package/src/localization/da-DK.json +19 -0
- package/src/localization/de-DE.json +19 -0
- package/src/localization/el-GR.json +19 -0
- package/src/localization/en-US.json +20 -2
- package/src/localization/es-ES.json +19 -0
- package/src/localization/et-EE.json +19 -0
- package/src/localization/eu-ES.json +19 -0
- package/src/localization/fi-FI.json +19 -0
- package/src/localization/fr-FR.json +19 -0
- package/src/localization/gl-ES.json +19 -0
- package/src/localization/he-IL.json +20 -1
- package/src/localization/hi-IN.json +19 -0
- package/src/localization/hr-HR.json +19 -0
- package/src/localization/hu-HU.json +19 -0
- package/src/localization/id-ID.json +19 -0
- package/src/localization/it-IT.json +19 -0
- package/src/localization/ja-JP.json +19 -0
- package/src/localization/kk-KZ.json +19 -0
- package/src/localization/ko-KR.json +19 -0
- package/src/localization/lt-LT.json +19 -0
- package/src/localization/lv-LV.json +19 -0
- package/src/localization/ms-MY.json +19 -0
- package/src/localization/nb-NO.json +19 -0
- package/src/localization/nl-NL.json +19 -0
- package/src/localization/pl-PL.json +19 -0
- package/src/localization/pt-BR.json +19 -0
- package/src/localization/pt-PT.json +19 -0
- package/src/localization/ro-RO.json +19 -0
- package/src/localization/ru-RU.json +19 -0
- package/src/localization/sk-SK.json +19 -0
- package/src/localization/sl-SI.json +19 -0
- package/src/localization/sr-Cyrl-CS.json +19 -0
- package/src/localization/sr-Latn-CS.json +19 -0
- package/src/localization/sv-SE.json +19 -0
- package/src/localization/th-TH.json +19 -0
- package/src/localization/tr-TR.json +19 -0
- package/src/localization/uk-UA.json +19 -0
- package/src/localization/vi-VN.json +19 -0
- package/src/localization/zh-CN.json +21 -2
- package/src/localization/zh-HK.json +19 -0
- package/src/localization/zh-TW.json +19 -0
- package/src/normalizeStyleOptions.ts +45 -0
- package/src/providers/ActivityAcknowledgement/useLastReadActivityKey.ts +1 -1
- package/src/providers/ActivityKeyer/ActivityKeyerComposer.tsx +50 -30
- package/src/providers/ActivityKeyer/private/Context.ts +2 -1
- package/src/providers/ActivityKeyer/private/lastOf.spec.ts +6 -0
- package/src/providers/ActivityKeyer/private/lastOf.ts +3 -0
- package/src/providers/ActivityKeyer/private/someIterable.spec.ts +44 -0
- package/src/providers/ActivityKeyer/private/someIterable.ts +9 -0
- package/src/providers/ActivityKeyer/useGetActivitiesByKey.ts +7 -0
- package/src/providers/ActivityListener/ActivityListenerComposer.tsx +28 -0
- package/src/providers/ActivityListener/private/Context.tsx +16 -0
- package/src/providers/ActivityListener/private/useContext.ts +6 -0
- package/src/providers/ActivityListener/useUpsertedActivities.ts +6 -0
- package/src/providers/ActivitySendStatus/ActivitySendStatusComposer.tsx +2 -2
- package/src/providers/ActivityTyping/ActivityTypingComposer.tsx +170 -0
- package/src/providers/ActivityTyping/private/Context.ts +16 -0
- package/src/providers/ActivityTyping/private/useContext.ts +6 -0
- package/src/providers/ActivityTyping/private/useMemoWithPrevious.ts +17 -0
- package/src/providers/ActivityTyping/private/useReduceActivities.spec.tsx +231 -0
- package/src/providers/ActivityTyping/private/useReduceActivities.ts +48 -0
- package/src/providers/ActivityTyping/types/AllTyping.ts +8 -0
- package/src/providers/ActivityTyping/useAllTyping.ts +6 -0
- package/src/providers/GroupActivities/GroupActivitiesComposer.tsx +115 -0
- package/src/providers/GroupActivities/private/GroupActivitiesContext.ts +23 -0
- package/src/providers/GroupActivities/private/createDefaultGroupActivitiesMiddleware.ts +93 -0
- package/src/providers/GroupActivities/private/isGroupingValid.ts +41 -0
- package/src/providers/GroupActivities/private/useGroupActivitiesContext.ts +6 -0
- package/src/providers/GroupActivities/useGroupActivities.ts +20 -0
- package/src/providers/GroupActivities/useGroupActivitiesByName.ts +17 -0
- package/src/tsconfig.json +1 -5
- package/src/types/AttachmentForScreenReaderMiddleware.ts +9 -2
- package/src/types/AvatarMiddleware.ts +5 -1
- package/src/types/CardActionMiddleware.ts +2 -0
- package/src/types/ComponentMiddleware.ts +1 -1
- package/src/types/GroupActivitiesMiddleware.ts +7 -11
- package/src/types/Typing.ts +2 -3
- package/src/utils/validateProps.spec.ts +74 -0
- package/src/utils/validateProps.ts +56 -0
- package/dist/chunk-4ZIUY4G5.mjs +0 -3
- package/dist/chunk-4ZIUY4G5.mjs.map +0 -1
- package/lib/StyleOptions.d.ts +0 -697
- package/lib/StyleOptions.d.ts.map +0 -1
- package/lib/StyleOptions.js +0 -2
- package/lib/defaultStyleOptions.d.ts +0 -4
- package/lib/defaultStyleOptions.d.ts.map +0 -1
- package/lib/defaultStyleOptions.js +0 -277
- package/lib/hooks/Composer.d.ts +0 -88
- package/lib/hooks/Composer.d.ts.map +0 -1
- package/lib/hooks/Composer.js +0 -602
- package/lib/hooks/index.d.ts +0 -72
- package/lib/hooks/index.d.ts.map +0 -1
- package/lib/hooks/index.js +0 -497
- package/lib/hooks/internal/ErrorBox.js +0 -47
- package/lib/hooks/internal/SendBoxMiddleware.d.ts +0 -34
- package/lib/hooks/internal/SendBoxMiddleware.d.ts.map +0 -1
- package/lib/hooks/internal/SendBoxMiddleware.js +0 -17
- package/lib/hooks/internal/SendBoxToolbarMiddleware.d.ts +0 -34
- package/lib/hooks/internal/SendBoxToolbarMiddleware.d.ts.map +0 -1
- package/lib/hooks/internal/SendBoxToolbarMiddleware.js +0 -17
- package/lib/hooks/internal/Tracker.d.ts +0 -4
- package/lib/hooks/internal/Tracker.d.ts.map +0 -1
- package/lib/hooks/internal/Tracker.js +0 -15
- package/lib/hooks/internal/WebChatAPIContext.d.ts +0 -80
- package/lib/hooks/internal/WebChatAPIContext.d.ts.map +0 -1
- package/lib/hooks/internal/WebChatAPIContext.js +0 -12
- package/lib/hooks/internal/WebChatReduxContext.js +0 -17
- package/lib/hooks/internal/defaultSelectVoice.js +0 -28
- package/lib/hooks/internal/private/templateMiddleware.d.ts +0 -28
- package/lib/hooks/internal/private/templateMiddleware.d.ts.map +0 -1
- package/lib/hooks/internal/private/templateMiddleware.js +0 -48
- package/lib/hooks/internal/useCreateActivityRendererInternal.d.ts +0 -4
- package/lib/hooks/internal/useCreateActivityRendererInternal.d.ts.map +0 -1
- package/lib/hooks/internal/useCreateActivityRendererInternal.js +0 -37
- package/lib/hooks/internal/useDebugDeps.js +0 -39
- package/lib/hooks/internal/useDirFromProps.js +0 -12
- package/lib/hooks/internal/useErrorBoxClass.js +0 -14
- package/lib/hooks/internal/useForceRender.js +0 -24
- package/lib/hooks/internal/useLocalizedGlobalize.js +0 -12
- package/lib/hooks/internal/useLocalizedStrings.js +0 -14
- package/lib/hooks/internal/useMarkActivity.js +0 -12
- package/lib/hooks/internal/usePrevious.d.ts +0 -2
- package/lib/hooks/internal/usePrevious.d.ts.map +0 -1
- package/lib/hooks/internal/usePrevious.js +0 -15
- package/lib/hooks/internal/useReadTelemetryDimensions.js +0 -20
- package/lib/hooks/internal/useSetDictateState.d.ts +0 -2
- package/lib/hooks/internal/useSetDictateState.d.ts.map +0 -1
- package/lib/hooks/internal/useSetDictateState.js +0 -12
- package/lib/hooks/internal/useTimer.d.ts +0 -5
- package/lib/hooks/internal/useTimer.d.ts.map +0 -1
- package/lib/hooks/internal/useTimer.js +0 -43
- package/lib/hooks/internal/useTracker.js +0 -42
- package/lib/hooks/internal/useValueRef.d.ts +0 -3
- package/lib/hooks/internal/useValueRef.d.ts.map +0 -1
- package/lib/hooks/internal/useValueRef.js +0 -22
- package/lib/hooks/internal/useWebChatAPIContext.d.ts +0 -83
- package/lib/hooks/internal/useWebChatAPIContext.d.ts.map +0 -1
- package/lib/hooks/internal/useWebChatAPIContext.js +0 -17
- package/lib/hooks/middleware/UserlandBoundary.js +0 -48
- package/lib/hooks/middleware/applyMiddleware.js +0 -122
- package/lib/hooks/middleware/concatMiddleware.d.ts +0 -6
- package/lib/hooks/middleware/concatMiddleware.d.ts.map +0 -1
- package/lib/hooks/middleware/concatMiddleware.js +0 -33
- package/lib/hooks/middleware/createDefaultCardActionMiddleware.d.ts +0 -3
- package/lib/hooks/middleware/createDefaultCardActionMiddleware.d.ts.map +0 -1
- package/lib/hooks/middleware/createDefaultCardActionMiddleware.js +0 -43
- package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.d.ts +0 -7
- package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.d.ts.map +0 -1
- package/lib/hooks/middleware/createDefaultGroupActivitiesMiddleware.js +0 -68
- package/lib/hooks/useActiveTyping.d.ts +0 -6
- package/lib/hooks/useActiveTyping.d.ts.map +0 -1
- package/lib/hooks/useActiveTyping.js +0 -81
- package/lib/hooks/useActivities.d.ts +0 -3
- package/lib/hooks/useActivities.d.ts.map +0 -1
- package/lib/hooks/useActivities.js +0 -14
- package/lib/hooks/useActivityKeys.d.ts +0 -3
- package/lib/hooks/useActivityKeys.d.ts.map +0 -1
- package/lib/hooks/useActivityKeys.js +0 -11
- package/lib/hooks/useActivityKeysByRead.d.ts +0 -3
- package/lib/hooks/useActivityKeysByRead.d.ts.map +0 -1
- package/lib/hooks/useActivityKeysByRead.js +0 -11
- package/lib/hooks/useAvatarForBot.d.ts +0 -5
- package/lib/hooks/useAvatarForBot.d.ts.map +0 -1
- package/lib/hooks/useAvatarForBot.js +0 -26
- package/lib/hooks/useAvatarForUser.d.ts +0 -5
- package/lib/hooks/useAvatarForUser.d.ts.map +0 -1
- package/lib/hooks/useAvatarForUser.js +0 -26
- package/lib/hooks/useByteFormatter.d.ts +0 -2
- package/lib/hooks/useByteFormatter.d.ts.map +0 -1
- package/lib/hooks/useByteFormatter.js +0 -43
- package/lib/hooks/useConnectivityStatus.d.ts +0 -2
- package/lib/hooks/useConnectivityStatus.d.ts.map +0 -1
- package/lib/hooks/useConnectivityStatus.js +0 -14
- package/lib/hooks/useCreateActivityRenderer.d.ts +0 -3
- package/lib/hooks/useCreateActivityRenderer.d.ts.map +0 -1
- package/lib/hooks/useCreateActivityRenderer.js +0 -14
- package/lib/hooks/useCreateActivityStatusRenderer.d.ts +0 -10
- package/lib/hooks/useCreateActivityStatusRenderer.d.ts.map +0 -1
- package/lib/hooks/useCreateActivityStatusRenderer.js +0 -72
- package/lib/hooks/useCreateAttachmentForScreenReaderRenderer.d.ts +0 -3
- package/lib/hooks/useCreateAttachmentForScreenReaderRenderer.d.ts.map +0 -1
- package/lib/hooks/useCreateAttachmentForScreenReaderRenderer.js +0 -12
- package/lib/hooks/useCreateAvatarRenderer.d.ts +0 -6
- package/lib/hooks/useCreateAvatarRenderer.d.ts.map +0 -1
- package/lib/hooks/useCreateAvatarRenderer.js +0 -44
- package/lib/hooks/useCreateScrollToEndButtonRenderer.d.ts +0 -3
- package/lib/hooks/useCreateScrollToEndButtonRenderer.d.ts.map +0 -1
- package/lib/hooks/useCreateScrollToEndButtonRenderer.js +0 -12
- package/lib/hooks/useDateFormatter.d.ts +0 -2
- package/lib/hooks/useDateFormatter.d.ts.map +0 -1
- package/lib/hooks/useDateFormatter.js +0 -35
- package/lib/hooks/useDebouncedNotifications.d.ts +0 -13
- package/lib/hooks/useDebouncedNotifications.d.ts.map +0 -1
- package/lib/hooks/useDebouncedNotifications.js +0 -118
- package/lib/hooks/useDictateInterims.d.ts +0 -2
- package/lib/hooks/useDictateInterims.d.ts.map +0 -1
- package/lib/hooks/useDictateInterims.js +0 -16
- package/lib/hooks/useDictateState.d.ts +0 -2
- package/lib/hooks/useDictateState.d.ts.map +0 -1
- package/lib/hooks/useDictateState.js +0 -15
- package/lib/hooks/useDirection.d.ts +0 -2
- package/lib/hooks/useDirection.d.ts.map +0 -1
- package/lib/hooks/useDirection.js +0 -38
- package/lib/hooks/useDisabled.d.ts +0 -2
- package/lib/hooks/useDisabled.d.ts.map +0 -1
- package/lib/hooks/useDisabled.js +0 -12
- package/lib/hooks/useDismissNotification.d.ts +0 -2
- package/lib/hooks/useDismissNotification.d.ts.map +0 -1
- package/lib/hooks/useDismissNotification.js +0 -12
- package/lib/hooks/useEmitTypingIndicator.d.ts +0 -2
- package/lib/hooks/useEmitTypingIndicator.d.ts.map +0 -1
- package/lib/hooks/useEmitTypingIndicator.js +0 -12
- package/lib/hooks/useGetActivityByKey.d.ts +0 -3
- package/lib/hooks/useGetActivityByKey.d.ts.map +0 -1
- package/lib/hooks/useGetActivityByKey.js +0 -11
- package/lib/hooks/useGetHasAcknowledgedByActivityKey.d.ts +0 -3
- package/lib/hooks/useGetHasAcknowledgedByActivityKey.d.ts.map +0 -1
- package/lib/hooks/useGetHasAcknowledgedByActivityKey.js +0 -11
- package/lib/hooks/useGetKeyByActivity.d.ts +0 -3
- package/lib/hooks/useGetKeyByActivity.d.ts.map +0 -1
- package/lib/hooks/useGetKeyByActivity.js +0 -11
- package/lib/hooks/useGetKeyByActivityId.d.ts +0 -3
- package/lib/hooks/useGetKeyByActivityId.d.ts.map +0 -1
- package/lib/hooks/useGetKeyByActivityId.js +0 -11
- package/lib/hooks/useGetSendTimeoutForActivity.d.ts +0 -5
- package/lib/hooks/useGetSendTimeoutForActivity.d.ts.map +0 -1
- package/lib/hooks/useGetSendTimeoutForActivity.js +0 -33
- package/lib/hooks/useGrammars.d.ts +0 -2
- package/lib/hooks/useGrammars.d.ts.map +0 -1
- package/lib/hooks/useGrammars.js +0 -12
- package/lib/hooks/useGroupActivities.d.ts +0 -8
- package/lib/hooks/useGroupActivities.d.ts.map +0 -1
- package/lib/hooks/useGroupActivities.js +0 -12
- package/lib/hooks/useGroupTimestamp.d.ts +0 -2
- package/lib/hooks/useGroupTimestamp.d.ts.map +0 -1
- package/lib/hooks/useGroupTimestamp.js +0 -21
- package/lib/hooks/useLanguage.d.ts +0 -2
- package/lib/hooks/useLanguage.d.ts.map +0 -1
- package/lib/hooks/useLanguage.js +0 -19
- package/lib/hooks/useLastAcknowledgedActivityKey.d.ts +0 -3
- package/lib/hooks/useLastAcknowledgedActivityKey.d.ts.map +0 -1
- package/lib/hooks/useLastAcknowledgedActivityKey.js +0 -11
- package/lib/hooks/useLastReadActivityKey.d.ts +0 -3
- package/lib/hooks/useLastReadActivityKey.d.ts.map +0 -1
- package/lib/hooks/useLastReadActivityKey.js +0 -11
- package/lib/hooks/useLocalizer.d.ts +0 -13
- package/lib/hooks/useLocalizer.d.ts.map +0 -1
- package/lib/hooks/useLocalizer.js +0 -75
- package/lib/hooks/useMarkActivityAsSpoken.d.ts +0 -3
- package/lib/hooks/useMarkActivityAsSpoken.d.ts.map +0 -1
- package/lib/hooks/useMarkActivityAsSpoken.js +0 -16
- package/lib/hooks/useMarkActivityKeyAsRead.d.ts +0 -3
- package/lib/hooks/useMarkActivityKeyAsRead.d.ts.map +0 -1
- package/lib/hooks/useMarkActivityKeyAsRead.js +0 -11
- package/lib/hooks/useMarkAllAsAcknowledged.d.ts +0 -3
- package/lib/hooks/useMarkAllAsAcknowledged.d.ts.map +0 -1
- package/lib/hooks/useMarkAllAsAcknowledged.js +0 -11
- package/lib/hooks/useNotifications.d.ts +0 -3
- package/lib/hooks/useNotifications.d.ts.map +0 -1
- package/lib/hooks/useNotifications.js +0 -14
- package/lib/hooks/usePerformCardAction.d.ts +0 -3
- package/lib/hooks/usePerformCardAction.d.ts.map +0 -1
- package/lib/hooks/usePerformCardAction.js +0 -12
- package/lib/hooks/usePonyfill.d.ts +0 -3
- package/lib/hooks/usePonyfill.d.ts.map +0 -1
- package/lib/hooks/usePonyfill.js +0 -11
- package/lib/hooks/usePostActivity.d.ts +0 -3
- package/lib/hooks/usePostActivity.d.ts.map +0 -1
- package/lib/hooks/usePostActivity.js +0 -12
- package/lib/hooks/useReferenceGrammarID.d.ts +0 -2
- package/lib/hooks/useReferenceGrammarID.d.ts.map +0 -1
- package/lib/hooks/useReferenceGrammarID.js +0 -14
- package/lib/hooks/useRelativeTimeFormatter.d.ts +0 -2
- package/lib/hooks/useRelativeTimeFormatter.d.ts.map +0 -1
- package/lib/hooks/useRelativeTimeFormatter.js +0 -61
- package/lib/hooks/useRenderAttachment.d.ts +0 -3
- package/lib/hooks/useRenderAttachment.d.ts.map +0 -1
- package/lib/hooks/useRenderAttachment.js +0 -14
- package/lib/hooks/useRenderToast.d.ts +0 -3
- package/lib/hooks/useRenderToast.d.ts.map +0 -1
- package/lib/hooks/useRenderToast.js +0 -12
- package/lib/hooks/useRenderTypingIndicator.d.ts +0 -3
- package/lib/hooks/useRenderTypingIndicator.d.ts.map +0 -1
- package/lib/hooks/useRenderTypingIndicator.js +0 -12
- package/lib/hooks/useSendBoxAttachments.d.ts +0 -6
- package/lib/hooks/useSendBoxAttachments.d.ts.map +0 -1
- package/lib/hooks/useSendBoxAttachments.js +0 -23
- package/lib/hooks/useSendBoxValue.d.ts +0 -2
- package/lib/hooks/useSendBoxValue.d.ts.map +0 -1
- package/lib/hooks/useSendBoxValue.js +0 -16
- package/lib/hooks/useSendEvent.d.ts +0 -2
- package/lib/hooks/useSendEvent.d.ts.map +0 -1
- package/lib/hooks/useSendEvent.js +0 -12
- package/lib/hooks/useSendFiles.d.ts +0 -10
- package/lib/hooks/useSendFiles.d.ts.map +0 -1
- package/lib/hooks/useSendFiles.js +0 -35
- package/lib/hooks/useSendMessage.d.ts +0 -6
- package/lib/hooks/useSendMessage.d.ts.map +0 -1
- package/lib/hooks/useSendMessage.js +0 -33
- package/lib/hooks/useSendMessageBack.d.ts +0 -2
- package/lib/hooks/useSendMessageBack.d.ts.map +0 -1
- package/lib/hooks/useSendMessageBack.js +0 -12
- package/lib/hooks/useSendPostBack.d.ts +0 -2
- package/lib/hooks/useSendPostBack.d.ts.map +0 -1
- package/lib/hooks/useSendPostBack.js +0 -12
- package/lib/hooks/useSendStatusByActivityKey.d.ts +0 -22
- package/lib/hooks/useSendStatusByActivityKey.d.ts.map +0 -1
- package/lib/hooks/useSendStatusByActivityKey.js +0 -31
- package/lib/hooks/useSendTimeoutForActivity.d.ts +0 -4
- package/lib/hooks/useSendTimeoutForActivity.d.ts.map +0 -1
- package/lib/hooks/useSendTimeoutForActivity.js +0 -22
- package/lib/hooks/useSendTypingIndicator.d.ts +0 -2
- package/lib/hooks/useSendTypingIndicator.d.ts.map +0 -1
- package/lib/hooks/useSendTypingIndicator.js +0 -14
- package/lib/hooks/useSetNotification.d.ts +0 -3
- package/lib/hooks/useSetNotification.d.ts.map +0 -1
- package/lib/hooks/useSetNotification.js +0 -12
- package/lib/hooks/useShouldSpeakIncomingActivity.d.ts +0 -2
- package/lib/hooks/useShouldSpeakIncomingActivity.d.ts.map +0 -1
- package/lib/hooks/useShouldSpeakIncomingActivity.js +0 -22
- package/lib/hooks/useStartDictate.d.ts +0 -2
- package/lib/hooks/useStartDictate.d.ts.map +0 -1
- package/lib/hooks/useStartDictate.js +0 -12
- package/lib/hooks/useStopDictate.d.ts +0 -2
- package/lib/hooks/useStopDictate.d.ts.map +0 -1
- package/lib/hooks/useStopDictate.js +0 -12
- package/lib/hooks/useStyleOptions.d.ts +0 -3
- package/lib/hooks/useStyleOptions.d.ts.map +0 -1
- package/lib/hooks/useStyleOptions.js +0 -12
- package/lib/hooks/useSubmitSendBox.d.ts +0 -4
- package/lib/hooks/useSubmitSendBox.d.ts.map +0 -1
- package/lib/hooks/useSubmitSendBox.js +0 -49
- package/lib/hooks/useSuggestedActions.d.ts +0 -3
- package/lib/hooks/useSuggestedActions.d.ts.map +0 -1
- package/lib/hooks/useSuggestedActions.js +0 -25
- package/lib/hooks/useTimeoutForSend.d.ts +0 -3
- package/lib/hooks/useTimeoutForSend.d.ts.map +0 -1
- package/lib/hooks/useTimeoutForSend.js +0 -21
- package/lib/hooks/useTrackDimension.d.ts +0 -2
- package/lib/hooks/useTrackDimension.d.ts.map +0 -1
- package/lib/hooks/useTrackDimension.js +0 -14
- package/lib/hooks/useTrackEvent.d.ts +0 -10
- package/lib/hooks/useTrackEvent.d.ts.map +0 -1
- package/lib/hooks/useTrackEvent.js +0 -51
- package/lib/hooks/useTrackException.d.ts +0 -2
- package/lib/hooks/useTrackException.d.ts.map +0 -1
- package/lib/hooks/useTrackException.js +0 -31
- package/lib/hooks/useTrackTiming.d.ts +0 -2
- package/lib/hooks/useTrackTiming.d.ts.map +0 -1
- package/lib/hooks/useTrackTiming.js +0 -93
- package/lib/hooks/useUserID.d.ts +0 -2
- package/lib/hooks/useUserID.d.ts.map +0 -1
- package/lib/hooks/useUserID.js +0 -12
- package/lib/hooks/useUsername.d.ts +0 -2
- package/lib/hooks/useUsername.d.ts.map +0 -1
- package/lib/hooks/useUsername.js +0 -12
- package/lib/hooks/useVoiceSelector.d.ts +0 -2
- package/lib/hooks/useVoiceSelector.d.ts.map +0 -1
- package/lib/hooks/useVoiceSelector.js +0 -16
- package/lib/hooks/utils/ErrorBoundary.js +0 -68
- package/lib/hooks/utils/observableToPromise.d.ts +0 -3
- package/lib/hooks/utils/observableToPromise.d.ts.map +0 -1
- package/lib/hooks/utils/observableToPromise.js +0 -28
- package/lib/index.d.ts +0 -37
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -88
- package/lib/internal.d.ts +0 -3
- package/lib/internal.d.ts.map +0 -1
- package/lib/internal.js +0 -14
- package/lib/localization/Localize.d.ts +0 -4
- package/lib/localization/Localize.d.ts.map +0 -1
- package/lib/localization/Localize.js +0 -50
- package/lib/localization/ar-EG.json +0 -42
- package/lib/localization/ar-JO.json +0 -45
- package/lib/localization/ar-SA.json +0 -97
- package/lib/localization/bg-BG.json +0 -97
- package/lib/localization/ca-ES.json +0 -97
- package/lib/localization/cs-CZ.json +0 -97
- package/lib/localization/da-DK.json +0 -97
- package/lib/localization/de-DE.json +0 -97
- package/lib/localization/el-GR.json +0 -97
- package/lib/localization/en-US.json +0 -167
- package/lib/localization/es-ES.json +0 -97
- package/lib/localization/et-EE.json +0 -97
- package/lib/localization/eu-ES.json +0 -97
- package/lib/localization/fi-FI.json +0 -97
- package/lib/localization/fr-FR.json +0 -97
- package/lib/localization/getAllLocalizedStrings.d.ts +0 -6
- package/lib/localization/getAllLocalizedStrings.d.ts.map +0 -1
- package/lib/localization/getAllLocalizedStrings.js +0 -117
- package/lib/localization/getRTLList.d.ts +0 -2
- package/lib/localization/getRTLList.d.ts.map +0 -1
- package/lib/localization/getRTLList.js +0 -46
- package/lib/localization/gl-ES.json +0 -97
- package/lib/localization/he-IL.json +0 -97
- package/lib/localization/hi-IN.json +0 -97
- package/lib/localization/hr-HR.json +0 -97
- package/lib/localization/hu-HU.json +0 -97
- package/lib/localization/id-ID.json +0 -97
- package/lib/localization/it-IT.json +0 -97
- package/lib/localization/ja-JP.json +0 -97
- package/lib/localization/kk-KZ.json +0 -97
- package/lib/localization/ko-KR.json +0 -97
- package/lib/localization/lt-LT.json +0 -97
- package/lib/localization/lv-LV.json +0 -97
- package/lib/localization/mergeLocalizedStrings.d.ts +0 -7
- package/lib/localization/mergeLocalizedStrings.d.ts.map +0 -1
- package/lib/localization/mergeLocalizedStrings.js +0 -49
- package/lib/localization/ms-MY.json +0 -97
- package/lib/localization/nb-NO.json +0 -97
- package/lib/localization/nl-NL.json +0 -97
- package/lib/localization/overrides.json +0 -257
- package/lib/localization/pl-PL.json +0 -97
- package/lib/localization/pt-BR.json +0 -97
- package/lib/localization/pt-PT.json +0 -97
- package/lib/localization/ro-RO.json +0 -97
- package/lib/localization/ru-RU.json +0 -97
- package/lib/localization/sk-SK.json +0 -97
- package/lib/localization/sl-SI.json +0 -97
- package/lib/localization/sl-SL.json +0 -3
- package/lib/localization/sr-Cyrl-CS.json +0 -97
- package/lib/localization/sr-Cyrl.json +0 -3
- package/lib/localization/sr-Latn-CS.json +0 -97
- package/lib/localization/sr-Latn.json +0 -3
- package/lib/localization/sv-SE.json +0 -97
- package/lib/localization/th-TH.json +0 -97
- package/lib/localization/tr-TR.json +0 -97
- package/lib/localization/uk-UA.json +0 -97
- package/lib/localization/vi-VN.json +0 -97
- package/lib/localization/yue.json +0 -100
- package/lib/localization/zh-CN.json +0 -97
- package/lib/localization/zh-HK.json +0 -97
- package/lib/localization/zh-TW.json +0 -97
- package/lib/normalizeStyleOptions.d.ts +0 -3
- package/lib/normalizeStyleOptions.d.ts.map +0 -1
- package/lib/normalizeStyleOptions.js +0 -147
- package/lib/patchStyleOptionsFromDeprecatedProps.js +0 -21
- package/lib/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.d.ts +0 -6
- package/lib/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.d.ts.map +0 -1
- package/lib/providers/ActivityAcknowledgement/ActivityAcknowledgementComposer.js +0 -153
- package/lib/providers/ActivityAcknowledgement/private/Context.d.ts +0 -13
- package/lib/providers/ActivityAcknowledgement/private/Context.d.ts.map +0 -1
- package/lib/providers/ActivityAcknowledgement/private/Context.js +0 -14
- package/lib/providers/ActivityAcknowledgement/private/useContext.d.ts +0 -3
- package/lib/providers/ActivityAcknowledgement/private/useContext.d.ts.map +0 -1
- package/lib/providers/ActivityAcknowledgement/private/useContext.js +0 -18
- package/lib/providers/ActivityAcknowledgement/useActivityKeysByRead.d.ts +0 -5
- package/lib/providers/ActivityAcknowledgement/useActivityKeysByRead.d.ts.map +0 -1
- package/lib/providers/ActivityAcknowledgement/useActivityKeysByRead.js +0 -15
- package/lib/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.d.ts +0 -2
- package/lib/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.d.ts.map +0 -1
- package/lib/providers/ActivityAcknowledgement/useGetHasAcknowledgedByActivityKey.js +0 -12
- package/lib/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.d.ts +0 -2
- package/lib/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.d.ts.map +0 -1
- package/lib/providers/ActivityAcknowledgement/useLastAcknowledgedActivityKey.js +0 -12
- package/lib/providers/ActivityAcknowledgement/useLastReadActivityKey.d.ts +0 -2
- package/lib/providers/ActivityAcknowledgement/useLastReadActivityKey.d.ts.map +0 -1
- package/lib/providers/ActivityAcknowledgement/useLastReadActivityKey.js +0 -12
- package/lib/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.d.ts +0 -2
- package/lib/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.d.ts.map +0 -1
- package/lib/providers/ActivityAcknowledgement/useMarkActivityKeyAsRead.js +0 -12
- package/lib/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.d.ts +0 -2
- package/lib/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.d.ts.map +0 -1
- package/lib/providers/ActivityAcknowledgement/useMarkAllAsAcknowledged.js +0 -12
- package/lib/providers/ActivityKeyer/ActivityKeyerComposer.d.ts +0 -20
- package/lib/providers/ActivityKeyer/ActivityKeyerComposer.d.ts.map +0 -1
- package/lib/providers/ActivityKeyer/ActivityKeyerComposer.js +0 -119
- package/lib/providers/ActivityKeyer/private/Context.d.ts +0 -12
- package/lib/providers/ActivityKeyer/private/Context.d.ts.map +0 -1
- package/lib/providers/ActivityKeyer/private/Context.js +0 -10
- package/lib/providers/ActivityKeyer/private/getActivityId.d.ts +0 -3
- package/lib/providers/ActivityKeyer/private/getActivityId.d.ts.map +0 -1
- package/lib/providers/ActivityKeyer/private/getActivityId.js +0 -10
- package/lib/providers/ActivityKeyer/private/getClientActivityId.d.ts +0 -3
- package/lib/providers/ActivityKeyer/private/getClientActivityId.d.ts.map +0 -1
- package/lib/providers/ActivityKeyer/private/getClientActivityId.js +0 -11
- package/lib/providers/ActivityKeyer/private/uniqueId.d.ts +0 -2
- package/lib/providers/ActivityKeyer/private/uniqueId.d.ts.map +0 -1
- package/lib/providers/ActivityKeyer/private/uniqueId.js +0 -15
- package/lib/providers/ActivityKeyer/private/useContext.d.ts +0 -3
- package/lib/providers/ActivityKeyer/private/useContext.d.ts.map +0 -1
- package/lib/providers/ActivityKeyer/private/useContext.js +0 -18
- package/lib/providers/ActivityKeyer/useActivityKeys.d.ts +0 -2
- package/lib/providers/ActivityKeyer/useActivityKeys.d.ts.map +0 -1
- package/lib/providers/ActivityKeyer/useActivityKeys.js +0 -12
- package/lib/providers/ActivityKeyer/useGetActivityByKey.d.ts +0 -3
- package/lib/providers/ActivityKeyer/useGetActivityByKey.d.ts.map +0 -1
- package/lib/providers/ActivityKeyer/useGetActivityByKey.js +0 -12
- package/lib/providers/ActivityKeyer/useGetKeyByActivity.d.ts +0 -3
- package/lib/providers/ActivityKeyer/useGetKeyByActivity.d.ts.map +0 -1
- package/lib/providers/ActivityKeyer/useGetKeyByActivity.js +0 -12
- package/lib/providers/ActivityKeyer/useGetKeyByActivityId.d.ts +0 -2
- package/lib/providers/ActivityKeyer/useGetKeyByActivityId.d.ts.map +0 -1
- package/lib/providers/ActivityKeyer/useGetKeyByActivityId.js +0 -12
- package/lib/providers/ActivitySendStatus/ActivitySendStatusComposer.d.ts +0 -4
- package/lib/providers/ActivitySendStatus/ActivitySendStatusComposer.d.ts.map +0 -1
- package/lib/providers/ActivitySendStatus/ActivitySendStatusComposer.js +0 -149
- package/lib/providers/ActivitySendStatus/private/Context.d.ts +0 -9
- package/lib/providers/ActivitySendStatus/private/Context.d.ts.map +0 -1
- package/lib/providers/ActivitySendStatus/private/Context.js +0 -13
- package/lib/providers/ActivitySendStatus/private/isMapEqual.d.ts +0 -7
- package/lib/providers/ActivitySendStatus/private/isMapEqual.d.ts.map +0 -1
- package/lib/providers/ActivitySendStatus/private/isMapEqual.js +0 -55
- package/lib/providers/ActivitySendStatus/private/useContext.d.ts +0 -3
- package/lib/providers/ActivitySendStatus/private/useContext.d.ts.map +0 -1
- package/lib/providers/ActivitySendStatus/private/useContext.js +0 -18
- package/lib/providers/ActivitySendStatus/useSendStatusByActivityKey.d.ts +0 -22
- package/lib/providers/ActivitySendStatus/useSendStatusByActivityKey.d.ts.map +0 -1
- package/lib/providers/ActivitySendStatus/useSendStatusByActivityKey.js +0 -31
- package/lib/providers/ActivitySendStatusTelemetry/ActivitySendStatusTelemetryComposer.d.ts +0 -3
- package/lib/providers/ActivitySendStatusTelemetry/ActivitySendStatusTelemetryComposer.d.ts.map +0 -1
- package/lib/providers/ActivitySendStatusTelemetry/ActivitySendStatusTelemetryComposer.js +0 -71
- package/lib/providers/Ponyfill/PonyfillComposer.d.ts +0 -17
- package/lib/providers/Ponyfill/PonyfillComposer.d.ts.map +0 -1
- package/lib/providers/Ponyfill/PonyfillComposer.js +0 -87
- package/lib/providers/Ponyfill/private/PonyfillContext.d.ts +0 -8
- package/lib/providers/Ponyfill/private/PonyfillContext.d.ts.map +0 -1
- package/lib/providers/Ponyfill/private/PonyfillContext.js +0 -10
- package/lib/providers/Ponyfill/private/useContext.d.ts +0 -6
- package/lib/providers/Ponyfill/private/useContext.d.ts.map +0 -1
- package/lib/providers/Ponyfill/private/useContext.js +0 -17
- package/lib/providers/Ponyfill/usePonyfill.d.ts +0 -3
- package/lib/providers/Ponyfill/usePonyfill.d.ts.map +0 -1
- package/lib/providers/Ponyfill/usePonyfill.js +0 -12
- package/lib/tsconfig.json +0 -18
- package/lib/types/ActivityMiddleware.d.ts +0 -24
- package/lib/types/ActivityMiddleware.d.ts.map +0 -1
- package/lib/types/ActivityMiddleware.js +0 -2
- package/lib/types/ActivityStatusMiddleware.d.ts +0 -17
- package/lib/types/ActivityStatusMiddleware.d.ts.map +0 -1
- package/lib/types/ActivityStatusMiddleware.js +0 -2
- package/lib/types/AttachmentForScreenReaderMiddleware.d.ts +0 -14
- package/lib/types/AttachmentForScreenReaderMiddleware.d.ts.map +0 -1
- package/lib/types/AttachmentForScreenReaderMiddleware.js +0 -2
- package/lib/types/AttachmentMiddleware.d.ts +0 -12
- package/lib/types/AttachmentMiddleware.d.ts.map +0 -1
- package/lib/types/AttachmentMiddleware.js +0 -2
- package/lib/types/AvatarMiddleware.d.ts +0 -15
- package/lib/types/AvatarMiddleware.d.ts.map +0 -1
- package/lib/types/AvatarMiddleware.js +0 -2
- package/lib/types/CardActionMiddleware.d.ts +0 -19
- package/lib/types/CardActionMiddleware.d.ts.map +0 -1
- package/lib/types/CardActionMiddleware.js +0 -2
- package/lib/types/ComponentMiddleware.d.ts +0 -31
- package/lib/types/ComponentMiddleware.d.ts.map +0 -1
- package/lib/types/ComponentMiddleware.js +0 -2
- package/lib/types/ContextOf.d.ts +0 -4
- package/lib/types/ContextOf.d.ts.map +0 -1
- package/lib/types/ContextOf.js +0 -2
- package/lib/types/FunctionMiddleware.d.ts +0 -6
- package/lib/types/FunctionMiddleware.d.ts.map +0 -1
- package/lib/types/FunctionMiddleware.js +0 -2
- package/lib/types/GroupActivitiesMiddleware.d.ts +0 -22
- package/lib/types/GroupActivitiesMiddleware.d.ts.map +0 -1
- package/lib/types/GroupActivitiesMiddleware.js +0 -2
- package/lib/types/LocalizedStrings.d.ts +0 -5
- package/lib/types/LocalizedStrings.d.ts.map +0 -1
- package/lib/types/LocalizedStrings.js +0 -2
- package/lib/types/Notification.d.ts +0 -10
- package/lib/types/Notification.d.ts.map +0 -1
- package/lib/types/Notification.js +0 -2
- package/lib/types/PrecompiledGlobalize.d.ts +0 -13
- package/lib/types/PrecompiledGlobalize.d.ts.map +0 -1
- package/lib/types/PrecompiledGlobalize.js +0 -2
- package/lib/types/ScrollToEndButtonMiddleware.d.ts +0 -30
- package/lib/types/ScrollToEndButtonMiddleware.d.ts.map +0 -1
- package/lib/types/ScrollToEndButtonMiddleware.js +0 -2
- package/lib/types/SendStatus.d.ts +0 -3
- package/lib/types/SendStatus.d.ts.map +0 -1
- package/lib/types/SendStatus.js +0 -2
- package/lib/types/TelemetryMeasurementEvent.d.ts +0 -31
- package/lib/types/TelemetryMeasurementEvent.d.ts.map +0 -1
- package/lib/types/TelemetryMeasurementEvent.js +0 -2
- package/lib/types/ToastMiddleware.d.ts +0 -11
- package/lib/types/ToastMiddleware.d.ts.map +0 -1
- package/lib/types/ToastMiddleware.js +0 -2
- package/lib/types/Typing.d.ts +0 -8
- package/lib/types/Typing.d.ts.map +0 -1
- package/lib/types/Typing.js +0 -2
- package/lib/types/TypingIndicatorMiddleware.d.ts +0 -17
- package/lib/types/TypingIndicatorMiddleware.d.ts.map +0 -1
- package/lib/types/TypingIndicatorMiddleware.js +0 -2
- package/lib/types/WebSpeechPonyfill.d.ts +0 -19
- package/lib/types/WebSpeechPonyfill.d.ts.map +0 -1
- package/lib/types/WebSpeechPonyfill.js +0 -2
- package/lib/types/WebSpeechPonyfillFactory.d.ts +0 -6
- package/lib/types/WebSpeechPonyfillFactory.d.ts.map +0 -1
- package/lib/types/WebSpeechPonyfillFactory.js +0 -2
- package/lib/utils/createCustomEvent.d.ts +0 -4
- package/lib/utils/createCustomEvent.d.ts.map +0 -1
- package/lib/utils/createCustomEvent.js +0 -34
- package/lib/utils/findLastIndex.d.ts +0 -2
- package/lib/utils/findLastIndex.d.ts.map +0 -1
- package/lib/utils/findLastIndex.js +0 -22
- package/lib/utils/findMin.d.ts +0 -7
- package/lib/utils/findMin.d.ts.map +0 -1
- package/lib/utils/findMin.js +0 -46
- package/lib/utils/freezeArray.d.ts +0 -8
- package/lib/utils/freezeArray.d.ts.map +0 -1
- package/lib/utils/freezeArray.js +0 -19
- package/lib/utils/isObject.js +0 -12
- package/lib/utils/mapMap.d.ts +0 -6
- package/lib/utils/mapMap.d.ts.map +0 -1
- package/lib/utils/mapMap.js +0 -27
- package/lib/utils/normalizeLanguage.d.ts +0 -2
- package/lib/utils/normalizeLanguage.d.ts.map +0 -1
- package/lib/utils/normalizeLanguage.js +0 -115
- package/lib/utils/randomId.d.ts +0 -2
- package/lib/utils/randomId.d.ts.map +0 -1
- package/lib/utils/randomId.js +0 -15
- package/lib/utils/warnOnce.d.ts +0 -2
- package/lib/utils/warnOnce.d.ts.map +0 -1
- package/lib/utils/warnOnce.js +0 -16
- package/src/external/PrecompiledGlobalize.cjs +0 -8855
- package/src/hooks/middleware/createDefaultGroupActivitiesMiddleware.ts +0 -75
- package/src/hooks/useGroupActivities.ts +0 -10
- /package/dist/{chunk-4ZIUY4G5.mjs.LEGAL.txt → botframework-webchat-api.decorator.js.LEGAL.txt} +0 -0
package/lib/hooks/Composer.js
DELETED
|
@@ -1,602 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _botframeworkWebchatCore = require("botframework-webchat-core");
|
|
8
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
-
var _reactRedux = require("react-redux");
|
|
11
|
-
var _simpleUpdateIn = _interopRequireDefault(require("simple-update-in"));
|
|
12
|
-
var _usePonyfill5 = _interopRequireDefault(require("../hooks/usePonyfill"));
|
|
13
|
-
var _getAllLocalizedStrings = _interopRequireDefault(require("../localization/getAllLocalizedStrings"));
|
|
14
|
-
var _normalizeStyleOptions = _interopRequireDefault(require("../normalizeStyleOptions"));
|
|
15
|
-
var _patchStyleOptionsFromDeprecatedProps = _interopRequireDefault(require("../patchStyleOptionsFromDeprecatedProps"));
|
|
16
|
-
var _ActivityAcknowledgementComposer = _interopRequireDefault(require("../providers/ActivityAcknowledgement/ActivityAcknowledgementComposer"));
|
|
17
|
-
var _ActivityKeyerComposer = _interopRequireDefault(require("../providers/ActivityKeyer/ActivityKeyerComposer"));
|
|
18
|
-
var _ActivitySendStatusComposer = _interopRequireDefault(require("../providers/ActivitySendStatus/ActivitySendStatusComposer"));
|
|
19
|
-
var _ActivitySendStatusTelemetryComposer = _interopRequireDefault(require("../providers/ActivitySendStatusTelemetry/ActivitySendStatusTelemetryComposer"));
|
|
20
|
-
var _PonyfillComposer = _interopRequireDefault(require("../providers/Ponyfill/PonyfillComposer"));
|
|
21
|
-
var _createCustomEvent = _interopRequireDefault(require("../utils/createCustomEvent"));
|
|
22
|
-
var _isObject = _interopRequireDefault(require("../utils/isObject"));
|
|
23
|
-
var _mapMap = _interopRequireDefault(require("../utils/mapMap"));
|
|
24
|
-
var _normalizeLanguage = _interopRequireDefault(require("../utils/normalizeLanguage"));
|
|
25
|
-
var _SendBoxMiddleware = require("./internal/SendBoxMiddleware");
|
|
26
|
-
var _SendBoxToolbarMiddleware = require("./internal/SendBoxToolbarMiddleware");
|
|
27
|
-
var _Tracker = _interopRequireDefault(require("./internal/Tracker"));
|
|
28
|
-
var _WebChatAPIContext = _interopRequireDefault(require("./internal/WebChatAPIContext"));
|
|
29
|
-
var _WebChatReduxContext = _interopRequireWildcard(require("./internal/WebChatReduxContext"));
|
|
30
|
-
var _defaultSelectVoice = _interopRequireDefault(require("./internal/defaultSelectVoice"));
|
|
31
|
-
var _applyMiddleware = _interopRequireWildcard(require("./middleware/applyMiddleware"));
|
|
32
|
-
var _createDefaultCardActionMiddleware = _interopRequireDefault(require("./middleware/createDefaultCardActionMiddleware"));
|
|
33
|
-
var _createDefaultGroupActivitiesMiddleware = _interopRequireDefault(require("./middleware/createDefaultGroupActivitiesMiddleware"));
|
|
34
|
-
var _useMarkAllAsAcknowledged = _interopRequireDefault(require("./useMarkAllAsAcknowledged"));
|
|
35
|
-
var _ErrorBoundary = _interopRequireDefault(require("./utils/ErrorBoundary"));
|
|
36
|
-
var _observableToPromise = _interopRequireDefault(require("./utils/observableToPromise"));
|
|
37
|
-
var _PrecompiledGlobalize = _interopRequireDefault(require("../external/PrecompiledGlobalize.cjs"));
|
|
38
|
-
var _excluded = ["onTelemetry", "store"],
|
|
39
|
-
_excluded2 = ["internalRenderErrorBox", "onTelemetry", "ponyfill"];
|
|
40
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
41
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
42
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
43
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
44
|
-
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
45
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
46
|
-
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
47
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
48
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
49
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
50
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
51
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
52
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
53
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
54
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
55
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
56
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
57
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
58
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
59
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } // PrecompileGlobalize is a generated file and is not ES module. TypeScript don't work with UMD.
|
|
60
|
-
// @ts-ignore
|
|
61
|
-
// List of Redux actions factory we are hoisting as Web Chat functions
|
|
62
|
-
var DISPATCHERS = {
|
|
63
|
-
clearSuggestedActions: _botframeworkWebchatCore.clearSuggestedActions,
|
|
64
|
-
dismissNotification: _botframeworkWebchatCore.dismissNotification,
|
|
65
|
-
emitTypingIndicator: _botframeworkWebchatCore.emitTypingIndicator,
|
|
66
|
-
markActivity: _botframeworkWebchatCore.markActivity,
|
|
67
|
-
postActivity: _botframeworkWebchatCore.postActivity,
|
|
68
|
-
sendEvent: _botframeworkWebchatCore.sendEvent,
|
|
69
|
-
sendFiles: _botframeworkWebchatCore.sendFiles,
|
|
70
|
-
sendMessage: _botframeworkWebchatCore.sendMessage,
|
|
71
|
-
sendMessageBack: _botframeworkWebchatCore.sendMessageBack,
|
|
72
|
-
sendPostBack: _botframeworkWebchatCore.sendPostBack,
|
|
73
|
-
setDictateInterims: _botframeworkWebchatCore.setDictateInterims,
|
|
74
|
-
setDictateState: _botframeworkWebchatCore.setDictateState,
|
|
75
|
-
setNotification: _botframeworkWebchatCore.setNotification,
|
|
76
|
-
setSendBox: _botframeworkWebchatCore.setSendBox,
|
|
77
|
-
setSendBoxAttachments: _botframeworkWebchatCore.setSendBoxAttachments,
|
|
78
|
-
setSendTimeout: _botframeworkWebchatCore.setSendTimeout,
|
|
79
|
-
startDictate: _botframeworkWebchatCore.startDictate,
|
|
80
|
-
startSpeakingActivity: _botframeworkWebchatCore.startSpeakingActivity,
|
|
81
|
-
stopDictate: _botframeworkWebchatCore.stopDictate,
|
|
82
|
-
stopSpeakingActivity: _botframeworkWebchatCore.stopSpeakingActivity,
|
|
83
|
-
submitSendBox: _botframeworkWebchatCore.submitSendBox
|
|
84
|
-
};
|
|
85
|
-
function createCardActionContext(_ref) {
|
|
86
|
-
var cardActionMiddleware = _ref.cardActionMiddleware,
|
|
87
|
-
directLine = _ref.directLine,
|
|
88
|
-
dispatch = _ref.dispatch,
|
|
89
|
-
markAllAsAcknowledged = _ref.markAllAsAcknowledged,
|
|
90
|
-
ponyfill = _ref.ponyfill;
|
|
91
|
-
var runMiddleware = _applyMiddleware.default.apply(void 0, ['card action'].concat(_toConsumableArray(cardActionMiddleware), [(0, _createDefaultCardActionMiddleware.default)()]))({
|
|
92
|
-
dispatch: dispatch
|
|
93
|
-
});
|
|
94
|
-
return {
|
|
95
|
-
onCardAction: function onCardAction(cardAction) {
|
|
96
|
-
var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
97
|
-
target = _ref2.target;
|
|
98
|
-
markAllAsAcknowledged();
|
|
99
|
-
return runMiddleware({
|
|
100
|
-
cardAction: cardAction,
|
|
101
|
-
getSignInUrl: cardAction.type === 'signin' ? function () {
|
|
102
|
-
var value = cardAction.value;
|
|
103
|
-
if (directLine.getSessionId) {
|
|
104
|
-
/**
|
|
105
|
-
* @todo TODO: [P3] We should change this one to async/await.
|
|
106
|
-
* This is the first place in this project to use async.
|
|
107
|
-
* Thus, we need to add @babel/plugin-transform-runtime and @babel/runtime.
|
|
108
|
-
*/
|
|
109
|
-
return (0, _observableToPromise.default)(directLine.getSessionId(), ponyfill).then(function (sessionId) {
|
|
110
|
-
return "".concat(value).concat(encodeURIComponent("&code_challenge=".concat(sessionId)));
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
console.warn('botframework-webchat: OAuth is not supported on this Direct Line adapter.');
|
|
114
|
-
return value;
|
|
115
|
-
} : null,
|
|
116
|
-
target: target
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
function createGroupActivitiesContext(_ref3) {
|
|
122
|
-
var groupActivitiesMiddleware = _ref3.groupActivitiesMiddleware,
|
|
123
|
-
groupTimestamp = _ref3.groupTimestamp,
|
|
124
|
-
ponyfill = _ref3.ponyfill;
|
|
125
|
-
var runMiddleware = _applyMiddleware.default.apply(void 0, ['group activities'].concat(_toConsumableArray(groupActivitiesMiddleware), [(0, _createDefaultGroupActivitiesMiddleware.default)({
|
|
126
|
-
groupTimestamp: groupTimestamp,
|
|
127
|
-
ponyfill: ponyfill
|
|
128
|
-
})]));
|
|
129
|
-
return {
|
|
130
|
-
groupActivities: runMiddleware({})
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
function mergeStringsOverrides(localizedStrings, language, overrideLocalizedStrings) {
|
|
134
|
-
if (!overrideLocalizedStrings) {
|
|
135
|
-
return localizedStrings;
|
|
136
|
-
} else if (typeof overrideLocalizedStrings === 'function') {
|
|
137
|
-
var merged = overrideLocalizedStrings(localizedStrings, language);
|
|
138
|
-
if (!(0, _isObject.default)(merged)) {
|
|
139
|
-
throw new Error('botframework-webchat: overrideLocalizedStrings function must return an object.');
|
|
140
|
-
}
|
|
141
|
-
return merged;
|
|
142
|
-
}
|
|
143
|
-
if (!(0, _isObject.default)(overrideLocalizedStrings)) {
|
|
144
|
-
throw new Error('botframework-webchat: overrideLocalizedStrings must be either a function, an object, or falsy.');
|
|
145
|
-
}
|
|
146
|
-
return _objectSpread(_objectSpread({}, localizedStrings), overrideLocalizedStrings);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
// It seems "react/require-default-props" did not pick up `ComposerCore.defaultProps`.
|
|
150
|
-
// And it falsely complaint `optional?: string` must have a corresponding `ComposerCore.defaultProps.optional = undefined`, even we already set it below.
|
|
151
|
-
// Since we set both TypeScript `Props` class and `ComposerCore.propTypes`, this check will be done there as well.
|
|
152
|
-
// Ignoring it in TypeScript version should be safe, as we have `propTypes` version to protect us.
|
|
153
|
-
|
|
154
|
-
var ComposerCore = function ComposerCore(_ref4) {
|
|
155
|
-
var activityMiddleware = _ref4.activityMiddleware,
|
|
156
|
-
activityStatusMiddleware = _ref4.activityStatusMiddleware,
|
|
157
|
-
attachmentForScreenReaderMiddleware = _ref4.attachmentForScreenReaderMiddleware,
|
|
158
|
-
attachmentMiddleware = _ref4.attachmentMiddleware,
|
|
159
|
-
avatarMiddleware = _ref4.avatarMiddleware,
|
|
160
|
-
cardActionMiddleware = _ref4.cardActionMiddleware,
|
|
161
|
-
children = _ref4.children,
|
|
162
|
-
dir = _ref4.dir,
|
|
163
|
-
directLine = _ref4.directLine,
|
|
164
|
-
disabled = _ref4.disabled,
|
|
165
|
-
downscaleImageToDataURL = _ref4.downscaleImageToDataURL,
|
|
166
|
-
grammars = _ref4.grammars,
|
|
167
|
-
groupActivitiesMiddleware = _ref4.groupActivitiesMiddleware,
|
|
168
|
-
internalErrorBoxClass = _ref4.internalErrorBoxClass,
|
|
169
|
-
locale = _ref4.locale,
|
|
170
|
-
onTelemetry = _ref4.onTelemetry,
|
|
171
|
-
overrideLocalizedStrings = _ref4.overrideLocalizedStrings,
|
|
172
|
-
renderMarkdown = _ref4.renderMarkdown,
|
|
173
|
-
scrollToEndButtonMiddleware = _ref4.scrollToEndButtonMiddleware,
|
|
174
|
-
selectVoice = _ref4.selectVoice,
|
|
175
|
-
sendBoxMiddleware = _ref4.sendBoxMiddleware,
|
|
176
|
-
sendBoxToolbarMiddleware = _ref4.sendBoxToolbarMiddleware,
|
|
177
|
-
sendTypingIndicator = _ref4.sendTypingIndicator,
|
|
178
|
-
styleOptions = _ref4.styleOptions,
|
|
179
|
-
toastMiddleware = _ref4.toastMiddleware,
|
|
180
|
-
typingIndicatorMiddleware = _ref4.typingIndicatorMiddleware,
|
|
181
|
-
userID = _ref4.userID,
|
|
182
|
-
username = _ref4.username;
|
|
183
|
-
var _usePonyfill = (0, _usePonyfill5.default)(),
|
|
184
|
-
_usePonyfill2 = _slicedToArray(_usePonyfill, 1),
|
|
185
|
-
ponyfill = _usePonyfill2[0];
|
|
186
|
-
var dispatch = (0, _WebChatReduxContext.useDispatch)();
|
|
187
|
-
var telemetryDimensionsRef = (0, _react.useRef)({});
|
|
188
|
-
var patchedDir = (0, _react.useMemo)(function () {
|
|
189
|
-
return dir === 'ltr' || dir === 'rtl' ? dir : 'auto';
|
|
190
|
-
}, [dir]);
|
|
191
|
-
var patchedGrammars = (0, _react.useMemo)(function () {
|
|
192
|
-
return grammars || [];
|
|
193
|
-
}, [grammars]);
|
|
194
|
-
var patchedStyleOptions = (0, _react.useMemo)(function () {
|
|
195
|
-
return (0, _normalizeStyleOptions.default)((0, _patchStyleOptionsFromDeprecatedProps.default)(styleOptions));
|
|
196
|
-
}, [styleOptions]);
|
|
197
|
-
(0, _react.useEffect)(function () {
|
|
198
|
-
dispatch((0, _botframeworkWebchatCore.setLanguage)(locale));
|
|
199
|
-
}, [dispatch, locale]);
|
|
200
|
-
(0, _react.useEffect)(function () {
|
|
201
|
-
dispatch((0, _botframeworkWebchatCore.setSendTypingIndicator)(!!sendTypingIndicator));
|
|
202
|
-
}, [dispatch, sendTypingIndicator]);
|
|
203
|
-
(0, _react.useEffect)(function () {
|
|
204
|
-
dispatch((0, _botframeworkWebchatCore.connect)({
|
|
205
|
-
directLine: directLine,
|
|
206
|
-
userID: userID,
|
|
207
|
-
username: username
|
|
208
|
-
}));
|
|
209
|
-
return function () {
|
|
210
|
-
/**
|
|
211
|
-
* @todo TODO: [P3] disconnect() is an async call (pending -> fulfilled), we need to wait, or change it to reconnect()
|
|
212
|
-
*/
|
|
213
|
-
dispatch((0, _botframeworkWebchatCore.disconnect)());
|
|
214
|
-
};
|
|
215
|
-
}, [dispatch, directLine, userID, username]);
|
|
216
|
-
var markAllAsAcknowledged = (0, _useMarkAllAsAcknowledged.default)();
|
|
217
|
-
var cardActionContext = (0, _react.useMemo)(function () {
|
|
218
|
-
return createCardActionContext({
|
|
219
|
-
cardActionMiddleware: Object.freeze(_toConsumableArray((0, _botframeworkWebchatCore.singleToArray)(cardActionMiddleware))),
|
|
220
|
-
directLine: directLine,
|
|
221
|
-
dispatch: dispatch,
|
|
222
|
-
markAllAsAcknowledged: markAllAsAcknowledged,
|
|
223
|
-
ponyfill: ponyfill
|
|
224
|
-
});
|
|
225
|
-
}, [cardActionMiddleware, directLine, dispatch, markAllAsAcknowledged, ponyfill]);
|
|
226
|
-
var patchedSelectVoice = (0, _react.useMemo)(function () {
|
|
227
|
-
return selectVoice || _defaultSelectVoice.default.bind(null, {
|
|
228
|
-
language: locale
|
|
229
|
-
});
|
|
230
|
-
}, [locale, selectVoice]);
|
|
231
|
-
var groupActivitiesContext = (0, _react.useMemo)(function () {
|
|
232
|
-
return createGroupActivitiesContext({
|
|
233
|
-
groupActivitiesMiddleware: Object.freeze(_toConsumableArray((0, _botframeworkWebchatCore.singleToArray)(groupActivitiesMiddleware))),
|
|
234
|
-
groupTimestamp: patchedStyleOptions.groupTimestamp,
|
|
235
|
-
ponyfill: ponyfill
|
|
236
|
-
});
|
|
237
|
-
}, [groupActivitiesMiddleware, patchedStyleOptions.groupTimestamp, ponyfill]);
|
|
238
|
-
var hoistedDispatchers = (0, _react.useMemo)(function () {
|
|
239
|
-
return (0, _mapMap.default)(DISPATCHERS, function (dispatcher) {
|
|
240
|
-
return function () {
|
|
241
|
-
return (
|
|
242
|
-
// @ts-expect-error
|
|
243
|
-
dispatch(dispatcher.apply(void 0, arguments))
|
|
244
|
-
);
|
|
245
|
-
};
|
|
246
|
-
});
|
|
247
|
-
}, [dispatch]);
|
|
248
|
-
var patchedLocalizedStrings = (0, _react.useMemo)(function () {
|
|
249
|
-
return mergeStringsOverrides((0, _getAllLocalizedStrings.default)()[(0, _normalizeLanguage.default)(locale)], locale, overrideLocalizedStrings);
|
|
250
|
-
}, [locale, overrideLocalizedStrings]);
|
|
251
|
-
var localizedGlobalize = (0, _react.useMemo)(function () {
|
|
252
|
-
var _ref5 = patchedLocalizedStrings || {},
|
|
253
|
-
GLOBALIZE = _ref5.GLOBALIZE,
|
|
254
|
-
GLOBALIZE_LANGUAGE = _ref5.GLOBALIZE_LANGUAGE;
|
|
255
|
-
return GLOBALIZE || GLOBALIZE_LANGUAGE && (0, _PrecompiledGlobalize.default)(GLOBALIZE_LANGUAGE) || (0, _PrecompiledGlobalize.default)('en');
|
|
256
|
-
}, [patchedLocalizedStrings]);
|
|
257
|
-
var trackDimension = (0, _react.useCallback)(function (name, data) {
|
|
258
|
-
if (!name || typeof name !== 'string') {
|
|
259
|
-
return console.warn('botframework-webchat: Telemetry dimension name must be a string.');
|
|
260
|
-
}
|
|
261
|
-
var type = _typeof(data);
|
|
262
|
-
if (type !== 'string' && type !== 'undefined') {
|
|
263
|
-
return console.warn('botframework-webchat: Telemetry dimension data must be a string or undefined.');
|
|
264
|
-
}
|
|
265
|
-
telemetryDimensionsRef.current = (0, _simpleUpdateIn.default)(telemetryDimensionsRef.current, [name], type === 'undefined' ? data : function () {
|
|
266
|
-
return data;
|
|
267
|
-
});
|
|
268
|
-
}, [telemetryDimensionsRef]);
|
|
269
|
-
var patchedActivityRenderer = (0, _react.useMemo)(function () {
|
|
270
|
-
return _applyMiddleware.forRenderer.apply(void 0, ['activity', {
|
|
271
|
-
strict: false
|
|
272
|
-
}].concat(_toConsumableArray((0, _botframeworkWebchatCore.singleToArray)(activityMiddleware)), [function () {
|
|
273
|
-
return function () {
|
|
274
|
-
return function (_ref6) {
|
|
275
|
-
var activity = _ref6.activity;
|
|
276
|
-
if (activity) {
|
|
277
|
-
throw new Error("No renderer for activity of type \"".concat(activity.type, "\""));
|
|
278
|
-
} else {
|
|
279
|
-
throw new Error('No activity to render');
|
|
280
|
-
}
|
|
281
|
-
};
|
|
282
|
-
};
|
|
283
|
-
}]))({});
|
|
284
|
-
}, [activityMiddleware]);
|
|
285
|
-
var patchedActivityStatusRenderer = (0, _react.useMemo)(function () {
|
|
286
|
-
return _applyMiddleware.forRenderer.apply(void 0, ['activity status', {
|
|
287
|
-
strict: false
|
|
288
|
-
}].concat(_toConsumableArray((0, _botframeworkWebchatCore.singleToArray)(activityStatusMiddleware)), [function () {
|
|
289
|
-
return function () {
|
|
290
|
-
return function () {
|
|
291
|
-
return false;
|
|
292
|
-
};
|
|
293
|
-
};
|
|
294
|
-
}]))({});
|
|
295
|
-
}, [activityStatusMiddleware]);
|
|
296
|
-
var patchedAttachmentForScreenReaderRenderer = (0, _react.useMemo)(function () {
|
|
297
|
-
return _applyMiddleware.forRenderer.apply(void 0, ['attachment for screen reader', {
|
|
298
|
-
strict: true
|
|
299
|
-
}].concat(_toConsumableArray((0, _botframeworkWebchatCore.singleToArray)(attachmentForScreenReaderMiddleware)), [function () {
|
|
300
|
-
return function () {
|
|
301
|
-
return function (_ref7) {
|
|
302
|
-
var attachment = _ref7.attachment;
|
|
303
|
-
if (attachment) {
|
|
304
|
-
console.warn("No renderer for attachment for screen reader of type \"".concat(attachment.contentType, "\""));
|
|
305
|
-
return false;
|
|
306
|
-
}
|
|
307
|
-
return function () {
|
|
308
|
-
/**
|
|
309
|
-
* @todo TODO: [P4] Might be able to throw without returning a function -- investigate and possibly fix
|
|
310
|
-
*/
|
|
311
|
-
throw new Error('No attachment to render');
|
|
312
|
-
};
|
|
313
|
-
};
|
|
314
|
-
};
|
|
315
|
-
}]))({});
|
|
316
|
-
}, [attachmentForScreenReaderMiddleware]);
|
|
317
|
-
var patchedAttachmentRenderer = (0, _react.useMemo)(function () {
|
|
318
|
-
return _applyMiddleware.forLegacyRenderer.apply(void 0, ['attachment'].concat(_toConsumableArray((0, _botframeworkWebchatCore.singleToArray)(attachmentMiddleware)), [function () {
|
|
319
|
-
return function () {
|
|
320
|
-
return function (_ref8) {
|
|
321
|
-
var attachment = _ref8.attachment;
|
|
322
|
-
if (attachment) {
|
|
323
|
-
throw new Error("No renderer for attachment of type \"".concat(attachment.contentType, "\""));
|
|
324
|
-
} else {
|
|
325
|
-
throw new Error('No attachment to render');
|
|
326
|
-
}
|
|
327
|
-
};
|
|
328
|
-
};
|
|
329
|
-
}]))({});
|
|
330
|
-
}, [attachmentMiddleware]);
|
|
331
|
-
var patchedAvatarRenderer = (0, _react.useMemo)(function () {
|
|
332
|
-
return _applyMiddleware.forRenderer.apply(void 0, ['avatar', {
|
|
333
|
-
strict: false
|
|
334
|
-
}].concat(_toConsumableArray((0, _botframeworkWebchatCore.singleToArray)(avatarMiddleware)), [function () {
|
|
335
|
-
return function () {
|
|
336
|
-
return function () {
|
|
337
|
-
return false;
|
|
338
|
-
};
|
|
339
|
-
};
|
|
340
|
-
}]))({});
|
|
341
|
-
}, [avatarMiddleware]);
|
|
342
|
-
var patchedToastRenderer = (0, _react.useMemo)(function () {
|
|
343
|
-
return _applyMiddleware.forRenderer.apply(void 0, ['toast', {
|
|
344
|
-
strict: false
|
|
345
|
-
}].concat(_toConsumableArray((0, _botframeworkWebchatCore.singleToArray)(toastMiddleware)), [function () {
|
|
346
|
-
return function () {
|
|
347
|
-
return function (_ref9) {
|
|
348
|
-
var notification = _ref9.notification;
|
|
349
|
-
if (notification) {
|
|
350
|
-
throw new Error("No renderer for notification of type \"".concat(notification.contentType, "\""));
|
|
351
|
-
} else {
|
|
352
|
-
throw new Error('No notification to render');
|
|
353
|
-
}
|
|
354
|
-
};
|
|
355
|
-
};
|
|
356
|
-
}]))({});
|
|
357
|
-
}, [toastMiddleware]);
|
|
358
|
-
var patchedTypingIndicatorRenderer = (0, _react.useMemo)(function () {
|
|
359
|
-
return _applyMiddleware.forRenderer.apply(void 0, ['typing indicator', {
|
|
360
|
-
strict: false
|
|
361
|
-
}].concat(_toConsumableArray((0, _botframeworkWebchatCore.singleToArray)(typingIndicatorMiddleware)), [function () {
|
|
362
|
-
return function () {
|
|
363
|
-
return function () {
|
|
364
|
-
return false;
|
|
365
|
-
};
|
|
366
|
-
};
|
|
367
|
-
}]))({});
|
|
368
|
-
}, [typingIndicatorMiddleware]);
|
|
369
|
-
var scrollToEndButtonRenderer = (0, _react.useMemo)(function () {
|
|
370
|
-
return _applyMiddleware.forRenderer.apply(void 0, ['scroll to end button', {
|
|
371
|
-
strict: true
|
|
372
|
-
}].concat(_toConsumableArray((0, _botframeworkWebchatCore.singleToArray)(scrollToEndButtonMiddleware)), [function () {
|
|
373
|
-
return function () {
|
|
374
|
-
return function () {
|
|
375
|
-
return false;
|
|
376
|
-
};
|
|
377
|
-
};
|
|
378
|
-
}]))();
|
|
379
|
-
}, [scrollToEndButtonMiddleware]);
|
|
380
|
-
|
|
381
|
-
/**
|
|
382
|
-
* This is a heavy function, and it is expected to be only called when there is a need to recreate business logic, e.g.
|
|
383
|
-
* - User ID changed, causing all send* functions to be updated
|
|
384
|
-
* - send
|
|
385
|
-
* @todo TODO: [P3] We should think about if we allow the user to change onSendBoxValueChanged/sendBoxValue, e.g.
|
|
386
|
-
* 1. Turns text into UPPERCASE
|
|
387
|
-
* 2. Filter out profanity
|
|
388
|
-
* @todo TODO: [P4] Revisit all members of context
|
|
389
|
-
* This context should consist of members that are not in the Redux store
|
|
390
|
-
* i.e. members that are not interested in other types of UIs
|
|
391
|
-
*/
|
|
392
|
-
var context = (0, _react.useMemo)(function () {
|
|
393
|
-
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, cardActionContext), groupActivitiesContext), hoistedDispatchers), {}, {
|
|
394
|
-
activityRenderer: patchedActivityRenderer,
|
|
395
|
-
activityStatusRenderer: patchedActivityStatusRenderer,
|
|
396
|
-
attachmentForScreenReaderRenderer: patchedAttachmentForScreenReaderRenderer,
|
|
397
|
-
attachmentRenderer: patchedAttachmentRenderer,
|
|
398
|
-
avatarRenderer: patchedAvatarRenderer,
|
|
399
|
-
dir: patchedDir,
|
|
400
|
-
directLine: directLine,
|
|
401
|
-
disabled: disabled,
|
|
402
|
-
downscaleImageToDataURL: downscaleImageToDataURL,
|
|
403
|
-
grammars: patchedGrammars,
|
|
404
|
-
internalErrorBoxClass: internalErrorBoxClass,
|
|
405
|
-
language: locale,
|
|
406
|
-
localizedGlobalizeState: [localizedGlobalize],
|
|
407
|
-
localizedStrings: patchedLocalizedStrings,
|
|
408
|
-
onTelemetry: onTelemetry,
|
|
409
|
-
renderMarkdown: renderMarkdown,
|
|
410
|
-
scrollToEndButtonRenderer: scrollToEndButtonRenderer,
|
|
411
|
-
selectVoice: patchedSelectVoice,
|
|
412
|
-
sendTypingIndicator: sendTypingIndicator,
|
|
413
|
-
styleOptions: patchedStyleOptions,
|
|
414
|
-
telemetryDimensionsRef: telemetryDimensionsRef,
|
|
415
|
-
toastRenderer: patchedToastRenderer,
|
|
416
|
-
trackDimension: trackDimension,
|
|
417
|
-
typingIndicatorRenderer: patchedTypingIndicatorRenderer,
|
|
418
|
-
userID: userID,
|
|
419
|
-
username: username
|
|
420
|
-
});
|
|
421
|
-
}, [cardActionContext, directLine, disabled, downscaleImageToDataURL, groupActivitiesContext, hoistedDispatchers, internalErrorBoxClass, locale, localizedGlobalize, onTelemetry, patchedActivityRenderer, patchedActivityStatusRenderer, patchedAttachmentForScreenReaderRenderer, patchedAttachmentRenderer, patchedAvatarRenderer, patchedDir, patchedGrammars, patchedLocalizedStrings, patchedSelectVoice, patchedStyleOptions, patchedToastRenderer, patchedTypingIndicatorRenderer, renderMarkdown, scrollToEndButtonRenderer, sendTypingIndicator, telemetryDimensionsRef, trackDimension, userID, username]);
|
|
422
|
-
return /*#__PURE__*/_react.default.createElement(_WebChatAPIContext.default.Provider, {
|
|
423
|
-
value: context
|
|
424
|
-
}, /*#__PURE__*/_react.default.createElement(_ActivitySendStatusComposer.default, null, /*#__PURE__*/_react.default.createElement(_SendBoxMiddleware.SendBoxMiddlewareProvider, {
|
|
425
|
-
middleware: sendBoxMiddleware || Object.freeze([])
|
|
426
|
-
}, /*#__PURE__*/_react.default.createElement(_SendBoxToolbarMiddleware.SendBoxToolbarMiddlewareProvider, {
|
|
427
|
-
middleware: sendBoxToolbarMiddleware || Object.freeze([])
|
|
428
|
-
}, typeof children === 'function' ? children(context) : children, /*#__PURE__*/_react.default.createElement(_ActivitySendStatusTelemetryComposer.default, null)))), onTelemetry && /*#__PURE__*/_react.default.createElement(_Tracker.default, null));
|
|
429
|
-
};
|
|
430
|
-
|
|
431
|
-
/**
|
|
432
|
-
* @todo TODO: [P3] We should consider moving some data from Redux store to props
|
|
433
|
-
* Although we use `connectToWebChat` to hide the details of accessor of Redux store,
|
|
434
|
-
* we should clean up the responsibility between Context and Redux store
|
|
435
|
-
* We should decide which data is needed for React but not in other environment such as CLI/VSCode
|
|
436
|
-
*/
|
|
437
|
-
ComposerCore.defaultProps = {
|
|
438
|
-
activityMiddleware: undefined,
|
|
439
|
-
activityStatusMiddleware: undefined,
|
|
440
|
-
attachmentForScreenReaderMiddleware: undefined,
|
|
441
|
-
attachmentMiddleware: undefined,
|
|
442
|
-
avatarMiddleware: undefined,
|
|
443
|
-
cardActionMiddleware: undefined,
|
|
444
|
-
children: undefined,
|
|
445
|
-
dir: 'auto',
|
|
446
|
-
disabled: false,
|
|
447
|
-
downscaleImageToDataURL: undefined,
|
|
448
|
-
grammars: [],
|
|
449
|
-
groupActivitiesMiddleware: undefined,
|
|
450
|
-
internalErrorBoxClass: undefined,
|
|
451
|
-
locale: window.navigator.language || 'en-US',
|
|
452
|
-
onTelemetry: undefined,
|
|
453
|
-
overrideLocalizedStrings: undefined,
|
|
454
|
-
renderMarkdown: undefined,
|
|
455
|
-
scrollToEndButtonMiddleware: undefined,
|
|
456
|
-
selectVoice: undefined,
|
|
457
|
-
sendTypingIndicator: false,
|
|
458
|
-
styleOptions: {},
|
|
459
|
-
toastMiddleware: undefined,
|
|
460
|
-
typingIndicatorMiddleware: undefined,
|
|
461
|
-
userID: '',
|
|
462
|
-
username: ''
|
|
463
|
-
};
|
|
464
|
-
ComposerCore.propTypes = {
|
|
465
|
-
activityMiddleware: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.func), _propTypes.default.func]),
|
|
466
|
-
activityStatusMiddleware: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.func), _propTypes.default.func]),
|
|
467
|
-
attachmentForScreenReaderMiddleware: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.func), _propTypes.default.func]),
|
|
468
|
-
attachmentMiddleware: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.func), _propTypes.default.func]),
|
|
469
|
-
avatarMiddleware: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.func), _propTypes.default.func]),
|
|
470
|
-
cardActionMiddleware: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.func), _propTypes.default.func]),
|
|
471
|
-
children: _propTypes.default.any,
|
|
472
|
-
dir: _propTypes.default.oneOf(['auto', 'ltr', 'rtl']),
|
|
473
|
-
// PropTypes.shape({ ... }) did not honor isRequired for its members.
|
|
474
|
-
// @ts-ignore
|
|
475
|
-
directLine: _propTypes.default.shape({
|
|
476
|
-
activity$: _propTypes.default.shape({
|
|
477
|
-
subscribe: _propTypes.default.func.isRequired
|
|
478
|
-
}).isRequired,
|
|
479
|
-
connectionStatus$: _propTypes.default.shape({
|
|
480
|
-
subscribe: _propTypes.default.func.isRequired
|
|
481
|
-
}).isRequired,
|
|
482
|
-
end: _propTypes.default.func,
|
|
483
|
-
getSessionId: _propTypes.default.func,
|
|
484
|
-
postActivity: _propTypes.default.func.isRequired,
|
|
485
|
-
referenceGrammarID: _propTypes.default.string,
|
|
486
|
-
token: _propTypes.default.string
|
|
487
|
-
}).isRequired,
|
|
488
|
-
disabled: _propTypes.default.bool,
|
|
489
|
-
downscaleImageToDataURL: _propTypes.default.func,
|
|
490
|
-
grammars: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
491
|
-
groupActivitiesMiddleware: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.func), _propTypes.default.func]),
|
|
492
|
-
internalErrorBoxClass: _propTypes.default.func,
|
|
493
|
-
// This is for internal use only. We don't allow customization of error box.
|
|
494
|
-
locale: _propTypes.default.string,
|
|
495
|
-
onTelemetry: _propTypes.default.func,
|
|
496
|
-
overrideLocalizedStrings: _propTypes.default.oneOfType([_propTypes.default.any, _propTypes.default.func]),
|
|
497
|
-
renderMarkdown: _propTypes.default.func,
|
|
498
|
-
scrollToEndButtonMiddleware: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.func), _propTypes.default.func]),
|
|
499
|
-
selectVoice: _propTypes.default.func,
|
|
500
|
-
sendTypingIndicator: _propTypes.default.bool,
|
|
501
|
-
styleOptions: _propTypes.default.any,
|
|
502
|
-
toastMiddleware: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.func), _propTypes.default.func]),
|
|
503
|
-
typingIndicatorMiddleware: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.func), _propTypes.default.func]),
|
|
504
|
-
userID: _propTypes.default.string,
|
|
505
|
-
username: _propTypes.default.string
|
|
506
|
-
};
|
|
507
|
-
// We will create a Redux store if it was not passed in
|
|
508
|
-
var ComposerWithStore = function ComposerWithStore(_ref10) {
|
|
509
|
-
var onTelemetry = _ref10.onTelemetry,
|
|
510
|
-
store = _ref10.store,
|
|
511
|
-
props = _objectWithoutProperties(_ref10, _excluded);
|
|
512
|
-
var _usePonyfill3 = (0, _usePonyfill5.default)(),
|
|
513
|
-
_usePonyfill4 = _slicedToArray(_usePonyfill3, 1),
|
|
514
|
-
ponyfill = _usePonyfill4[0];
|
|
515
|
-
var memoizedStore = (0, _react.useMemo)(function () {
|
|
516
|
-
var _nextStore$getState$i;
|
|
517
|
-
var nextStore = store || (0, _botframeworkWebchatCore.createStoreWithOptions)({
|
|
518
|
-
ponyfill: ponyfill
|
|
519
|
-
});
|
|
520
|
-
var storePonyfill = ((_nextStore$getState$i = nextStore.getState().internal) === null || _nextStore$getState$i === void 0 ? void 0 : _nextStore$getState$i.ponyfill) || {};
|
|
521
|
-
var keys = new Set([].concat(_toConsumableArray(Object.keys(storePonyfill)), _toConsumableArray(Object.keys(ponyfill))));
|
|
522
|
-
|
|
523
|
-
// Filter out forbidden properties.
|
|
524
|
-
keys.delete('prototype');
|
|
525
|
-
Object.getOwnPropertyNames(Object.prototype).forEach(function (key) {
|
|
526
|
-
keys.delete(key);
|
|
527
|
-
});
|
|
528
|
-
var nativeFunction = function nativeFunction(fn) {
|
|
529
|
-
return typeof fn === 'function' && ('' + fn).endsWith('() { [native code] }');
|
|
530
|
-
};
|
|
531
|
-
var ponyfillFunctionEquals = function ponyfillFunctionEquals(x, y) {
|
|
532
|
-
return nativeFunction(x) && nativeFunction(y) || x === y;
|
|
533
|
-
};
|
|
534
|
-
|
|
535
|
-
// We have filtered out all forbidden properties.
|
|
536
|
-
// eslint-disable-next-line security/detect-object-injection
|
|
537
|
-
var differentKeys = Array.from(keys).filter(function (key) {
|
|
538
|
-
return !ponyfillFunctionEquals(storePonyfill[key], ponyfill[key]);
|
|
539
|
-
});
|
|
540
|
-
if (differentKeys.length) {
|
|
541
|
-
console.warn("botframework-webchat: Ponyfill used in store should match the ponyfill passed in props: ".concat(differentKeys.join(', ')));
|
|
542
|
-
}
|
|
543
|
-
return nextStore;
|
|
544
|
-
}, [ponyfill, store]);
|
|
545
|
-
return /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {
|
|
546
|
-
context: _WebChatReduxContext.default,
|
|
547
|
-
store: memoizedStore
|
|
548
|
-
}, /*#__PURE__*/_react.default.createElement(_ActivityKeyerComposer.default, null, /*#__PURE__*/_react.default.createElement(_ActivityAcknowledgementComposer.default, null, /*#__PURE__*/_react.default.createElement(ComposerCore, _extends({
|
|
549
|
-
onTelemetry: onTelemetry
|
|
550
|
-
}, props)))));
|
|
551
|
-
};
|
|
552
|
-
ComposerWithStore.defaultProps = {
|
|
553
|
-
onTelemetry: undefined,
|
|
554
|
-
store: undefined
|
|
555
|
-
};
|
|
556
|
-
ComposerWithStore.propTypes = {
|
|
557
|
-
onTelemetry: _propTypes.default.func,
|
|
558
|
-
store: _propTypes.default.any
|
|
559
|
-
};
|
|
560
|
-
var Composer = function Composer(_ref11) {
|
|
561
|
-
var internalRenderErrorBox = _ref11.internalRenderErrorBox,
|
|
562
|
-
onTelemetry = _ref11.onTelemetry,
|
|
563
|
-
ponyfill = _ref11.ponyfill,
|
|
564
|
-
props = _objectWithoutProperties(_ref11, _excluded2);
|
|
565
|
-
var _useState = (0, _react.useState)(),
|
|
566
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
567
|
-
error = _useState2[0],
|
|
568
|
-
setError = _useState2[1];
|
|
569
|
-
var handleError = (0, _react.useCallback)(function (error) {
|
|
570
|
-
console.error('botframework-webchat: Uncaught exception', {
|
|
571
|
-
error: error
|
|
572
|
-
});
|
|
573
|
-
onTelemetry && onTelemetry((0, _createCustomEvent.default)('exception', {
|
|
574
|
-
error: error,
|
|
575
|
-
fatal: true
|
|
576
|
-
}));
|
|
577
|
-
setError(error);
|
|
578
|
-
}, [onTelemetry, setError]);
|
|
579
|
-
return error ? !!internalRenderErrorBox && internalRenderErrorBox({
|
|
580
|
-
error: error,
|
|
581
|
-
type: 'uncaught exception'
|
|
582
|
-
}) : /*#__PURE__*/_react.default.createElement(_ErrorBoundary.default, {
|
|
583
|
-
onError: handleError
|
|
584
|
-
}, /*#__PURE__*/_react.default.createElement(_PonyfillComposer.default, {
|
|
585
|
-
ponyfill: ponyfill
|
|
586
|
-
}, /*#__PURE__*/_react.default.createElement(ComposerWithStore, _extends({
|
|
587
|
-
onTelemetry: onTelemetry
|
|
588
|
-
}, props))));
|
|
589
|
-
};
|
|
590
|
-
Composer.defaultProps = _objectSpread(_objectSpread({}, ComposerWithStore.defaultProps), {}, {
|
|
591
|
-
internalRenderErrorBox: undefined,
|
|
592
|
-
onTelemetry: undefined,
|
|
593
|
-
ponyfill: undefined
|
|
594
|
-
});
|
|
595
|
-
Composer.propTypes = _objectSpread(_objectSpread({}, ComposerWithStore.propTypes), {}, {
|
|
596
|
-
internalRenderErrorBox: _propTypes.default.any,
|
|
597
|
-
onTelemetry: _propTypes.default.func,
|
|
598
|
-
ponyfill: _propTypes.default.any
|
|
599
|
-
});
|
|
600
|
-
var _default = Composer;
|
|
601
|
-
exports.default = _default;
|
|
602
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYm90ZnJhbWV3b3JrV2ViY2hhdENvcmUiLCJyZXF1aXJlIiwiX3Byb3BUeXBlcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9yZWFjdFJlZHV4IiwiX3NpbXBsZVVwZGF0ZUluIiwiX3VzZVBvbnlmaWxsNSIsIl9nZXRBbGxMb2NhbGl6ZWRTdHJpbmdzIiwiX25vcm1hbGl6ZVN0eWxlT3B0aW9ucyIsIl9wYXRjaFN0eWxlT3B0aW9uc0Zyb21EZXByZWNhdGVkUHJvcHMiLCJfQWN0aXZpdHlBY2tub3dsZWRnZW1lbnRDb21wb3NlciIsIl9BY3Rpdml0eUtleWVyQ29tcG9zZXIiLCJfQWN0aXZpdHlTZW5kU3RhdHVzQ29tcG9zZXIiLCJfQWN0aXZpdHlTZW5kU3RhdHVzVGVsZW1ldHJ5Q29tcG9zZXIiLCJfUG9ueWZpbGxDb21wb3NlciIsIl9jcmVhdGVDdXN0b21FdmVudCIsIl9pc09iamVjdCIsIl9tYXBNYXAiLCJfbm9ybWFsaXplTGFuZ3VhZ2UiLCJfU2VuZEJveE1pZGRsZXdhcmUiLCJfU2VuZEJveFRvb2xiYXJNaWRkbGV3YXJlIiwiX1RyYWNrZXIiLCJfV2ViQ2hhdEFQSUNvbnRleHQiLCJfV2ViQ2hhdFJlZHV4Q29udGV4dCIsIl9kZWZhdWx0U2VsZWN0Vm9pY2UiLCJfYXBwbHlNaWRkbGV3YXJlIiwiX2NyZWF0ZURlZmF1bHRDYXJkQWN0aW9uTWlkZGxld2FyZSIsIl9jcmVhdGVEZWZhdWx0R3JvdXBBY3Rpdml0aWVzTWlkZGxld2FyZSIsIl91c2VNYXJrQWxsQXNBY2tub3dsZWRnZWQiLCJfRXJyb3JCb3VuZGFyeSIsIl9vYnNlcnZhYmxlVG9Qcm9taXNlIiwiX1ByZWNvbXBpbGVkR2xvYmFsaXplIiwiX2V4Y2x1ZGVkIiwiX2V4Y2x1ZGVkMiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImFwcGx5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzb3VyY2VLZXlzIiwia2V5cyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJfaSIsIl9hcnIiLCJfbiIsIl9kIiwiX3MiLCJfZSIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwiZXJyIiwiQXJyYXkiLCJpc0FycmF5Iiwib3duS2V5cyIsIm9iamVjdCIsImVudW1lcmFibGVPbmx5Iiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImVudW1lcmFibGUiLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwibyIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsInRvU3RyaW5nIiwic2xpY2UiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJpdGVyIiwibGVuIiwiYXJyMiIsIkRJU1BBVENIRVJTIiwiY2xlYXJTdWdnZXN0ZWRBY3Rpb25zIiwiZGlzbWlzc05vdGlmaWNhdGlvbiIsImVtaXRUeXBpbmdJbmRpY2F0b3IiLCJtYXJrQWN0aXZpdHkiLCJwb3N0QWN0aXZpdHkiLCJzZW5kRXZlbnQiLCJzZW5kRmlsZXMiLCJzZW5kTWVzc2FnZSIsInNlbmRNZXNzYWdlQmFjayIsInNlbmRQb3N0QmFjayIsInNldERpY3RhdGVJbnRlcmltcyIsInNldERpY3RhdGVTdGF0ZSIsInNldE5vdGlmaWNhdGlvbiIsInNldFNlbmRCb3giLCJzZXRTZW5kQm94QXR0YWNobWVudHMiLCJzZXRTZW5kVGltZW91dCIsInN0YXJ0RGljdGF0ZSIsInN0YXJ0U3BlYWtpbmdBY3Rpdml0eSIsInN0b3BEaWN0YXRlIiwic3RvcFNwZWFraW5nQWN0aXZpdHkiLCJzdWJtaXRTZW5kQm94IiwiY3JlYXRlQ2FyZEFjdGlvbkNvbnRleHQiLCJfcmVmIiwiY2FyZEFjdGlvbk1pZGRsZXdhcmUiLCJkaXJlY3RMaW5lIiwiZGlzcGF0Y2giLCJtYXJrQWxsQXNBY2tub3dsZWRnZWQiLCJwb255ZmlsbCIsInJ1bk1pZGRsZXdhcmUiLCJhcHBseU1pZGRsZXdhcmUiLCJjb25jYXQiLCJjcmVhdGVEZWZhdWx0Q2FyZEFjdGlvbk1pZGRsZXdhcmUiLCJvbkNhcmRBY3Rpb24iLCJjYXJkQWN0aW9uIiwiX3JlZjIiLCJ1bmRlZmluZWQiLCJnZXRTaWduSW5VcmwiLCJ0eXBlIiwiZ2V0U2Vzc2lvbklkIiwib2JzZXJ2YWJsZVRvUHJvbWlzZSIsInRoZW4iLCJzZXNzaW9uSWQiLCJlbmNvZGVVUklDb21wb25lbnQiLCJjb25zb2xlIiwid2FybiIsImNyZWF0ZUdyb3VwQWN0aXZpdGllc0NvbnRleHQiLCJfcmVmMyIsImdyb3VwQWN0aXZpdGllc01pZGRsZXdhcmUiLCJncm91cFRpbWVzdGFtcCIsImNyZWF0ZURlZmF1bHRHcm91cEFjdGl2aXRpZXNNaWRkbGV3YXJlIiwiZ3JvdXBBY3Rpdml0aWVzIiwibWVyZ2VTdHJpbmdzT3ZlcnJpZGVzIiwibG9jYWxpemVkU3RyaW5ncyIsImxhbmd1YWdlIiwib3ZlcnJpZGVMb2NhbGl6ZWRTdHJpbmdzIiwibWVyZ2VkIiwiaXNPYmplY3QiLCJFcnJvciIsIkNvbXBvc2VyQ29yZSIsIl9yZWY0IiwiYWN0aXZpdHlNaWRkbGV3YXJlIiwiYWN0aXZpdHlTdGF0dXNNaWRkbGV3YXJlIiwiYXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUiLCJhdHRhY2htZW50TWlkZGxld2FyZSIsImF2YXRhck1pZGRsZXdhcmUiLCJjaGlsZHJlbiIsImRpciIsImRpc2FibGVkIiwiZG93bnNjYWxlSW1hZ2VUb0RhdGFVUkwiLCJncmFtbWFycyIsImludGVybmFsRXJyb3JCb3hDbGFzcyIsImxvY2FsZSIsIm9uVGVsZW1ldHJ5IiwicmVuZGVyTWFya2Rvd24iLCJzY3JvbGxUb0VuZEJ1dHRvbk1pZGRsZXdhcmUiLCJzZWxlY3RWb2ljZSIsInNlbmRCb3hNaWRkbGV3YXJlIiwic2VuZEJveFRvb2xiYXJNaWRkbGV3YXJlIiwic2VuZFR5cGluZ0luZGljYXRvciIsInN0eWxlT3B0aW9ucyIsInRvYXN0TWlkZGxld2FyZSIsInR5cGluZ0luZGljYXRvck1pZGRsZXdhcmUiLCJ1c2VySUQiLCJ1c2VybmFtZSIsIl91c2VQb255ZmlsbCIsInVzZVBvbnlmaWxsIiwiX3VzZVBvbnlmaWxsMiIsInVzZURpc3BhdGNoIiwidGVsZW1ldHJ5RGltZW5zaW9uc1JlZiIsInVzZVJlZiIsInBhdGNoZWREaXIiLCJ1c2VNZW1vIiwicGF0Y2hlZEdyYW1tYXJzIiwicGF0Y2hlZFN0eWxlT3B0aW9ucyIsIm5vcm1hbGl6ZVN0eWxlT3B0aW9ucyIsInBhdGNoU3R5bGVPcHRpb25zRnJvbURlcHJlY2F0ZWRQcm9wcyIsInVzZUVmZmVjdCIsInNldExhbmd1YWdlIiwic2V0U2VuZFR5cGluZ0luZGljYXRvciIsImNyZWF0ZUNvbm5lY3RBY3Rpb24iLCJkaXNjb25uZWN0IiwidXNlTWFya0FsbEFzQWNrbm93bGVkZ2VkIiwiY2FyZEFjdGlvbkNvbnRleHQiLCJmcmVlemUiLCJzaW5nbGVUb0FycmF5IiwicGF0Y2hlZFNlbGVjdFZvaWNlIiwiZGVmYXVsdFNlbGVjdFZvaWNlIiwiZ3JvdXBBY3Rpdml0aWVzQ29udGV4dCIsImhvaXN0ZWREaXNwYXRjaGVycyIsIm1hcE1hcCIsImRpc3BhdGNoZXIiLCJwYXRjaGVkTG9jYWxpemVkU3RyaW5ncyIsImdldEFsbExvY2FsaXplZFN0cmluZ3MiLCJub3JtYWxpemVMYW5ndWFnZSIsImxvY2FsaXplZEdsb2JhbGl6ZSIsIl9yZWY1IiwiR0xPQkFMSVpFIiwiR0xPQkFMSVpFX0xBTkdVQUdFIiwiUHJlY29tcGlsZWRHbG9iYWxpemUiLCJ0cmFja0RpbWVuc2lvbiIsInVzZUNhbGxiYWNrIiwiZGF0YSIsImN1cnJlbnQiLCJ1cGRhdGVJbiIsInBhdGNoZWRBY3Rpdml0eVJlbmRlcmVyIiwiYXBwbHlNaWRkbGV3YXJlRm9yUmVuZGVyZXIiLCJzdHJpY3QiLCJfcmVmNiIsImFjdGl2aXR5IiwicGF0Y2hlZEFjdGl2aXR5U3RhdHVzUmVuZGVyZXIiLCJwYXRjaGVkQXR0YWNobWVudEZvclNjcmVlblJlYWRlclJlbmRlcmVyIiwiX3JlZjciLCJhdHRhY2htZW50IiwiY29udGVudFR5cGUiLCJwYXRjaGVkQXR0YWNobWVudFJlbmRlcmVyIiwiYXBwbHlNaWRkbGV3YXJlRm9yTGVnYWN5UmVuZGVyZXIiLCJfcmVmOCIsInBhdGNoZWRBdmF0YXJSZW5kZXJlciIsInBhdGNoZWRUb2FzdFJlbmRlcmVyIiwiX3JlZjkiLCJub3RpZmljYXRpb24iLCJwYXRjaGVkVHlwaW5nSW5kaWNhdG9yUmVuZGVyZXIiLCJzY3JvbGxUb0VuZEJ1dHRvblJlbmRlcmVyIiwiY29udGV4dCIsImFjdGl2aXR5UmVuZGVyZXIiLCJhY3Rpdml0eVN0YXR1c1JlbmRlcmVyIiwiYXR0YWNobWVudEZvclNjcmVlblJlYWRlclJlbmRlcmVyIiwiYXR0YWNobWVudFJlbmRlcmVyIiwiYXZhdGFyUmVuZGVyZXIiLCJsb2NhbGl6ZWRHbG9iYWxpemVTdGF0ZSIsInRvYXN0UmVuZGVyZXIiLCJ0eXBpbmdJbmRpY2F0b3JSZW5kZXJlciIsImNyZWF0ZUVsZW1lbnQiLCJQcm92aWRlciIsIlNlbmRCb3hNaWRkbGV3YXJlUHJvdmlkZXIiLCJtaWRkbGV3YXJlIiwiU2VuZEJveFRvb2xiYXJNaWRkbGV3YXJlUHJvdmlkZXIiLCJkZWZhdWx0UHJvcHMiLCJ3aW5kb3ciLCJuYXZpZ2F0b3IiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvbmVPZlR5cGUiLCJhcnJheU9mIiwiZnVuYyIsImFueSIsIm9uZU9mIiwic2hhcGUiLCJhY3Rpdml0eSQiLCJzdWJzY3JpYmUiLCJpc1JlcXVpcmVkIiwiY29ubmVjdGlvblN0YXR1cyQiLCJlbmQiLCJyZWZlcmVuY2VHcmFtbWFySUQiLCJzdHJpbmciLCJ0b2tlbiIsImJvb2wiLCJDb21wb3NlcldpdGhTdG9yZSIsIl9yZWYxMCIsInN0b3JlIiwicHJvcHMiLCJfdXNlUG9ueWZpbGwzIiwiX3VzZVBvbnlmaWxsNCIsIm1lbW9pemVkU3RvcmUiLCJfbmV4dFN0b3JlJGdldFN0YXRlJGkiLCJuZXh0U3RvcmUiLCJjcmVhdGVTdG9yZVdpdGhPcHRpb25zIiwic3RvcmVQb255ZmlsbCIsImdldFN0YXRlIiwiaW50ZXJuYWwiLCJTZXQiLCJkZWxldGUiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwibmF0aXZlRnVuY3Rpb24iLCJmbiIsImVuZHNXaXRoIiwicG9ueWZpbGxGdW5jdGlvbkVxdWFscyIsIngiLCJ5IiwiZGlmZmVyZW50S2V5cyIsImpvaW4iLCJXZWJDaGF0UmVkdXhDb250ZXh0IiwiQ29tcG9zZXIiLCJfcmVmMTEiLCJpbnRlcm5hbFJlbmRlckVycm9yQm94IiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiZXJyb3IiLCJzZXRFcnJvciIsImhhbmRsZUVycm9yIiwiY3JlYXRlQ3VzdG9tRXZlbnQiLCJmYXRhbCIsIm9uRXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlUm9vdCI6ImNvbXBvbmVudDovLy8iLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy9Db21wb3Nlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY2xlYXJTdWdnZXN0ZWRBY3Rpb25zLFxuICBjb25uZWN0IGFzIGNyZWF0ZUNvbm5lY3RBY3Rpb24sXG4gIGNyZWF0ZVN0b3JlV2l0aE9wdGlvbnMsXG4gIGRpc2Nvbm5lY3QsXG4gIGRpc21pc3NOb3RpZmljYXRpb24sXG4gIGVtaXRUeXBpbmdJbmRpY2F0b3IsXG4gIG1hcmtBY3Rpdml0eSxcbiAgcG9zdEFjdGl2aXR5LFxuICBzZW5kRXZlbnQsXG4gIHNlbmRGaWxlcyxcbiAgc2VuZE1lc3NhZ2UsXG4gIHNlbmRNZXNzYWdlQmFjayxcbiAgc2VuZFBvc3RCYWNrLFxuICBzZXREaWN0YXRlSW50ZXJpbXMsXG4gIHNldERpY3RhdGVTdGF0ZSxcbiAgc2V0TGFuZ3VhZ2UsXG4gIHNldE5vdGlmaWNhdGlvbixcbiAgc2V0U2VuZEJveCxcbiAgc2V0U2VuZEJveEF0dGFjaG1lbnRzLFxuICBzZXRTZW5kVGltZW91dCxcbiAgc2V0U2VuZFR5cGluZ0luZGljYXRvcixcbiAgc2luZ2xlVG9BcnJheSxcbiAgc3RhcnREaWN0YXRlLFxuICBzdGFydFNwZWFraW5nQWN0aXZpdHksXG4gIHN0b3BEaWN0YXRlLFxuICBzdG9wU3BlYWtpbmdBY3Rpdml0eSxcbiAgc3VibWl0U2VuZEJveCxcbiAgdHlwZSBEaXJlY3RMaW5lSlNCb3RDb25uZWN0aW9uLFxuICB0eXBlIEdsb2JhbFNjb3BlUG9ueWZpbGwsXG4gIHR5cGUgT25lT3JNYW55LFxuICB0eXBlIFdlYkNoYXRBY3Rpdml0eVxufSBmcm9tICdib3RmcmFtZXdvcmstd2ViY2hhdC1jb3JlJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSwgdHlwZSBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB1cGRhdGVJbiBmcm9tICdzaW1wbGUtdXBkYXRlLWluJztcblxuaW1wb3J0IFN0eWxlT3B0aW9ucyBmcm9tICcuLi9TdHlsZU9wdGlvbnMnO1xuaW1wb3J0IHVzZVBvbnlmaWxsIGZyb20gJy4uL2hvb2tzL3VzZVBvbnlmaWxsJztcbmltcG9ydCBnZXRBbGxMb2NhbGl6ZWRTdHJpbmdzIGZyb20gJy4uL2xvY2FsaXphdGlvbi9nZXRBbGxMb2NhbGl6ZWRTdHJpbmdzJztcbmltcG9ydCBub3JtYWxpemVTdHlsZU9wdGlvbnMgZnJvbSAnLi4vbm9ybWFsaXplU3R5bGVPcHRpb25zJztcbmltcG9ydCBwYXRjaFN0eWxlT3B0aW9uc0Zyb21EZXByZWNhdGVkUHJvcHMgZnJvbSAnLi4vcGF0Y2hTdHlsZU9wdGlvbnNGcm9tRGVwcmVjYXRlZFByb3BzJztcbmltcG9ydCBBY3Rpdml0eUFja25vd2xlZGdlbWVudENvbXBvc2VyIGZyb20gJy4uL3Byb3ZpZGVycy9BY3Rpdml0eUFja25vd2xlZGdlbWVudC9BY3Rpdml0eUFja25vd2xlZGdlbWVudENvbXBvc2VyJztcbmltcG9ydCBBY3Rpdml0eUtleWVyQ29tcG9zZXIgZnJvbSAnLi4vcHJvdmlkZXJzL0FjdGl2aXR5S2V5ZXIvQWN0aXZpdHlLZXllckNvbXBvc2VyJztcbmltcG9ydCBBY3Rpdml0eVNlbmRTdGF0dXNDb21wb3NlciBmcm9tICcuLi9wcm92aWRlcnMvQWN0aXZpdHlTZW5kU3RhdHVzL0FjdGl2aXR5U2VuZFN0YXR1c0NvbXBvc2VyJztcbmltcG9ydCBBY3Rpdml0eVNlbmRTdGF0dXNUZWxlbWV0cnlDb21wb3NlciBmcm9tICcuLi9wcm92aWRlcnMvQWN0aXZpdHlTZW5kU3RhdHVzVGVsZW1ldHJ5L0FjdGl2aXR5U2VuZFN0YXR1c1RlbGVtZXRyeUNvbXBvc2VyJztcbmltcG9ydCBQb255ZmlsbENvbXBvc2VyIGZyb20gJy4uL3Byb3ZpZGVycy9Qb255ZmlsbC9Qb255ZmlsbENvbXBvc2VyJztcbmltcG9ydCBBY3Rpdml0eU1pZGRsZXdhcmUgZnJvbSAnLi4vdHlwZXMvQWN0aXZpdHlNaWRkbGV3YXJlJztcbmltcG9ydCB7IHR5cGUgQWN0aXZpdHlTdGF0dXNNaWRkbGV3YXJlLCB0eXBlIFJlbmRlckFjdGl2aXR5U3RhdHVzIH0gZnJvbSAnLi4vdHlwZXMvQWN0aXZpdHlTdGF0dXNNaWRkbGV3YXJlJztcbmltcG9ydCBBdHRhY2htZW50Rm9yU2NyZWVuUmVhZGVyTWlkZGxld2FyZSBmcm9tICcuLi90eXBlcy9BdHRhY2htZW50Rm9yU2NyZWVuUmVhZGVyTWlkZGxld2FyZSc7XG5pbXBvcnQgQXR0YWNobWVudE1pZGRsZXdhcmUgZnJvbSAnLi4vdHlwZXMvQXR0YWNobWVudE1pZGRsZXdhcmUnO1xuaW1wb3J0IEF2YXRhck1pZGRsZXdhcmUgZnJvbSAnLi4vdHlwZXMvQXZhdGFyTWlkZGxld2FyZSc7XG5pbXBvcnQgQ2FyZEFjdGlvbk1pZGRsZXdhcmUgZnJvbSAnLi4vdHlwZXMvQ2FyZEFjdGlvbk1pZGRsZXdhcmUnO1xuaW1wb3J0IEdyb3VwQWN0aXZpdGllc01pZGRsZXdhcmUgZnJvbSAnLi4vdHlwZXMvR3JvdXBBY3Rpdml0aWVzTWlkZGxld2FyZSc7XG5pbXBvcnQgTG9jYWxpemVkU3RyaW5ncyBmcm9tICcuLi90eXBlcy9Mb2NhbGl6ZWRTdHJpbmdzJztcbmltcG9ydCBQcmVjb21waWxlZEdsb2JhbGl6ZVR5cGUgZnJvbSAnLi4vdHlwZXMvUHJlY29tcGlsZWRHbG9iYWxpemUnO1xuaW1wb3J0IFNjcm9sbFRvRW5kQnV0dG9uTWlkZGxld2FyZSwgeyBTY3JvbGxUb0VuZEJ1dHRvbkNvbXBvbmVudEZhY3RvcnkgfSBmcm9tICcuLi90eXBlcy9TY3JvbGxUb0VuZEJ1dHRvbk1pZGRsZXdhcmUnO1xuaW1wb3J0IFRlbGVtZXRyeU1lYXN1cmVtZW50RXZlbnQsIHsgVGVsZW1ldHJ5RXhjZXB0aW9uTWVhc3VyZW1lbnRFdmVudCB9IGZyb20gJy4uL3R5cGVzL1RlbGVtZXRyeU1lYXN1cmVtZW50RXZlbnQnO1xuaW1wb3J0IFRvYXN0TWlkZGxld2FyZSBmcm9tICcuLi90eXBlcy9Ub2FzdE1pZGRsZXdhcmUnO1xuaW1wb3J0IFR5cGluZ0luZGljYXRvck1pZGRsZXdhcmUgZnJvbSAnLi4vdHlwZXMvVHlwaW5nSW5kaWNhdG9yTWlkZGxld2FyZSc7XG5pbXBvcnQgeyB0eXBlIENvbnRleHRPZiB9IGZyb20gJy4uL3R5cGVzL0NvbnRleHRPZic7XG5pbXBvcnQgY3JlYXRlQ3VzdG9tRXZlbnQgZnJvbSAnLi4vdXRpbHMvY3JlYXRlQ3VzdG9tRXZlbnQnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4uL3V0aWxzL2lzT2JqZWN0JztcbmltcG9ydCBtYXBNYXAgZnJvbSAnLi4vdXRpbHMvbWFwTWFwJztcbmltcG9ydCBub3JtYWxpemVMYW5ndWFnZSBmcm9tICcuLi91dGlscy9ub3JtYWxpemVMYW5ndWFnZSc7XG5pbXBvcnQgeyBTZW5kQm94TWlkZGxld2FyZVByb3ZpZGVyLCB0eXBlIFNlbmRCb3hNaWRkbGV3YXJlIH0gZnJvbSAnLi9pbnRlcm5hbC9TZW5kQm94TWlkZGxld2FyZSc7XG5pbXBvcnQgeyBTZW5kQm94VG9vbGJhck1pZGRsZXdhcmVQcm92aWRlciwgdHlwZSBTZW5kQm94VG9vbGJhck1pZGRsZXdhcmUgfSBmcm9tICcuL2ludGVybmFsL1NlbmRCb3hUb29sYmFyTWlkZGxld2FyZSc7XG5pbXBvcnQgVHJhY2tlciBmcm9tICcuL2ludGVybmFsL1RyYWNrZXInO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBXZWJDaGF0QVBJQ29udGV4dCB9IGZyb20gJy4vaW50ZXJuYWwvV2ViQ2hhdEFQSUNvbnRleHQnO1xuaW1wb3J0IFdlYkNoYXRSZWR1eENvbnRleHQsIHsgdXNlRGlzcGF0Y2ggfSBmcm9tICcuL2ludGVybmFsL1dlYkNoYXRSZWR1eENvbnRleHQnO1xuaW1wb3J0IGRlZmF1bHRTZWxlY3RWb2ljZSBmcm9tICcuL2ludGVybmFsL2RlZmF1bHRTZWxlY3RWb2ljZSc7XG5pbXBvcnQgYXBwbHlNaWRkbGV3YXJlLCB7XG4gIGZvckxlZ2FjeVJlbmRlcmVyIGFzIGFwcGx5TWlkZGxld2FyZUZvckxlZ2FjeVJlbmRlcmVyLFxuICBmb3JSZW5kZXJlciBhcyBhcHBseU1pZGRsZXdhcmVGb3JSZW5kZXJlclxufSBmcm9tICcuL21pZGRsZXdhcmUvYXBwbHlNaWRkbGV3YXJlJztcbmltcG9ydCBjcmVhdGVEZWZhdWx0Q2FyZEFjdGlvbk1pZGRsZXdhcmUgZnJvbSAnLi9taWRkbGV3YXJlL2NyZWF0ZURlZmF1bHRDYXJkQWN0aW9uTWlkZGxld2FyZSc7XG5pbXBvcnQgY3JlYXRlRGVmYXVsdEdyb3VwQWN0aXZpdGllc01pZGRsZXdhcmUgZnJvbSAnLi9taWRkbGV3YXJlL2NyZWF0ZURlZmF1bHRHcm91cEFjdGl2aXRpZXNNaWRkbGV3YXJlJztcbmltcG9ydCB1c2VNYXJrQWxsQXNBY2tub3dsZWRnZWQgZnJvbSAnLi91c2VNYXJrQWxsQXNBY2tub3dsZWRnZWQnO1xuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAnLi91dGlscy9FcnJvckJvdW5kYXJ5JztcbmltcG9ydCBvYnNlcnZhYmxlVG9Qcm9taXNlIGZyb20gJy4vdXRpbHMvb2JzZXJ2YWJsZVRvUHJvbWlzZSc7XG5cbi8vIFByZWNvbXBpbGVHbG9iYWxpemUgaXMgYSBnZW5lcmF0ZWQgZmlsZSBhbmQgaXMgbm90IEVTIG1vZHVsZS4gVHlwZVNjcmlwdCBkb24ndCB3b3JrIHdpdGggVU1ELlxuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IFByZWNvbXBpbGVkR2xvYmFsaXplIGZyb20gJy4uL2V4dGVybmFsL1ByZWNvbXBpbGVkR2xvYmFsaXplLmNqcyc7XG5cbi8vIExpc3Qgb2YgUmVkdXggYWN0aW9ucyBmYWN0b3J5IHdlIGFyZSBob2lzdGluZyBhcyBXZWIgQ2hhdCBmdW5jdGlvbnNcbmNvbnN0IERJU1BBVENIRVJTID0ge1xuICBjbGVhclN1Z2dlc3RlZEFjdGlvbnMsXG4gIGRpc21pc3NOb3RpZmljYXRpb24sXG4gIGVtaXRUeXBpbmdJbmRpY2F0b3IsXG4gIG1hcmtBY3Rpdml0eSxcbiAgcG9zdEFjdGl2aXR5LFxuICBzZW5kRXZlbnQsXG4gIHNlbmRGaWxlcyxcbiAgc2VuZE1lc3NhZ2UsXG4gIHNlbmRNZXNzYWdlQmFjayxcbiAgc2VuZFBvc3RCYWNrLFxuICBzZXREaWN0YXRlSW50ZXJpbXMsXG4gIHNldERpY3RhdGVTdGF0ZSxcbiAgc2V0Tm90aWZpY2F0aW9uLFxuICBzZXRTZW5kQm94LFxuICBzZXRTZW5kQm94QXR0YWNobWVudHMsXG4gIHNldFNlbmRUaW1lb3V0LFxuICBzdGFydERpY3RhdGUsXG4gIHN0YXJ0U3BlYWtpbmdBY3Rpdml0eSxcbiAgc3RvcERpY3RhdGUsXG4gIHN0b3BTcGVha2luZ0FjdGl2aXR5LFxuICBzdWJtaXRTZW5kQm94XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVDYXJkQWN0aW9uQ29udGV4dCh7XG4gIGNhcmRBY3Rpb25NaWRkbGV3YXJlLFxuICBkaXJlY3RMaW5lLFxuICBkaXNwYXRjaCxcbiAgbWFya0FsbEFzQWNrbm93bGVkZ2VkLFxuICBwb255ZmlsbFxufToge1xuICBjYXJkQWN0aW9uTWlkZGxld2FyZTogcmVhZG9ubHkgQ2FyZEFjdGlvbk1pZGRsZXdhcmVbXTtcbiAgZGlyZWN0TGluZTogRGlyZWN0TGluZUpTQm90Q29ubmVjdGlvbjtcbiAgZGlzcGF0Y2g6IEZ1bmN0aW9uO1xuICBtYXJrQWxsQXNBY2tub3dsZWRnZWQ6ICgpID0+IHZvaWQ7XG4gIHBvbnlmaWxsOiBHbG9iYWxTY29wZVBvbnlmaWxsO1xufSkge1xuICBjb25zdCBydW5NaWRkbGV3YXJlID0gYXBwbHlNaWRkbGV3YXJlKFxuICAgICdjYXJkIGFjdGlvbicsXG4gICAgLi4uY2FyZEFjdGlvbk1pZGRsZXdhcmUsXG4gICAgY3JlYXRlRGVmYXVsdENhcmRBY3Rpb25NaWRkbGV3YXJlKClcbiAgKSh7IGRpc3BhdGNoIH0pO1xuXG4gIHJldHVybiB7XG4gICAgb25DYXJkQWN0aW9uOiAoY2FyZEFjdGlvbiwgeyB0YXJnZXQgfTogeyB0YXJnZXQ/OiBhbnkgfSA9IHt9KSA9PiB7XG4gICAgICBtYXJrQWxsQXNBY2tub3dsZWRnZWQoKTtcblxuICAgICAgcmV0dXJuIHJ1bk1pZGRsZXdhcmUoe1xuICAgICAgICBjYXJkQWN0aW9uLFxuICAgICAgICBnZXRTaWduSW5Vcmw6XG4gICAgICAgICAgY2FyZEFjdGlvbi50eXBlID09PSAnc2lnbmluJ1xuICAgICAgICAgICAgPyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gY2FyZEFjdGlvbjtcblxuICAgICAgICAgICAgICAgIGlmIChkaXJlY3RMaW5lLmdldFNlc3Npb25JZCkge1xuICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgKiBAdG9kbyBUT0RPOiBbUDNdIFdlIHNob3VsZCBjaGFuZ2UgdGhpcyBvbmUgdG8gYXN5bmMvYXdhaXQuXG4gICAgICAgICAgICAgICAgICAgKiAgICAgICBUaGlzIGlzIHRoZSBmaXJzdCBwbGFjZSBpbiB0aGlzIHByb2plY3QgdG8gdXNlIGFzeW5jLlxuICAgICAgICAgICAgICAgICAgICogICAgICAgVGh1cywgd2UgbmVlZCB0byBhZGQgQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tcnVudGltZSBhbmQgQGJhYmVsL3J1bnRpbWUuXG4gICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlVG9Qcm9taXNlKGRpcmVjdExpbmUuZ2V0U2Vzc2lvbklkKCksIHBvbnlmaWxsKS50aGVuKFxuICAgICAgICAgICAgICAgICAgICBzZXNzaW9uSWQgPT4gYCR7dmFsdWV9JHtlbmNvZGVVUklDb21wb25lbnQoYCZjb2RlX2NoYWxsZW5nZT0ke3Nlc3Npb25JZH1gKX1gXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignYm90ZnJhbWV3b3JrLXdlYmNoYXQ6IE9BdXRoIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBEaXJlY3QgTGluZSBhZGFwdGVyLicpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIHRhcmdldFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVHcm91cEFjdGl2aXRpZXNDb250ZXh0KHtcbiAgZ3JvdXBBY3Rpdml0aWVzTWlkZGxld2FyZSxcbiAgZ3JvdXBUaW1lc3RhbXAsXG4gIHBvbnlmaWxsXG59OiB7XG4gIGdyb3VwQWN0aXZpdGllc01pZGRsZXdhcmU6IHJlYWRvbmx5IEdyb3VwQWN0aXZpdGllc01pZGRsZXdhcmVbXTtcbiAgZ3JvdXBUaW1lc3RhbXA6IGJvb2xlYW4gfCBudW1iZXI7XG4gIHBvbnlmaWxsOiBHbG9iYWxTY29wZVBvbnlmaWxsO1xufSkge1xuICBjb25zdCBydW5NaWRkbGV3YXJlID0gYXBwbHlNaWRkbGV3YXJlKFxuICAgICdncm91cCBhY3Rpdml0aWVzJyxcbiAgICAuLi5ncm91cEFjdGl2aXRpZXNNaWRkbGV3YXJlLFxuICAgIGNyZWF0ZURlZmF1bHRHcm91cEFjdGl2aXRpZXNNaWRkbGV3YXJlKHsgZ3JvdXBUaW1lc3RhbXAsIHBvbnlmaWxsIH0pXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBncm91cEFjdGl2aXRpZXM6IHJ1bk1pZGRsZXdhcmUoe30pXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1lcmdlU3RyaW5nc092ZXJyaWRlcyhsb2NhbGl6ZWRTdHJpbmdzLCBsYW5ndWFnZSwgb3ZlcnJpZGVMb2NhbGl6ZWRTdHJpbmdzKSB7XG4gIGlmICghb3ZlcnJpZGVMb2NhbGl6ZWRTdHJpbmdzKSB7XG4gICAgcmV0dXJuIGxvY2FsaXplZFN0cmluZ3M7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG92ZXJyaWRlTG9jYWxpemVkU3RyaW5ncyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IG1lcmdlZCA9IG92ZXJyaWRlTG9jYWxpemVkU3RyaW5ncyhsb2NhbGl6ZWRTdHJpbmdzLCBsYW5ndWFnZSk7XG5cbiAgICBpZiAoIWlzT2JqZWN0KG1lcmdlZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYm90ZnJhbWV3b3JrLXdlYmNoYXQ6IG92ZXJyaWRlTG9jYWxpemVkU3RyaW5ncyBmdW5jdGlvbiBtdXN0IHJldHVybiBhbiBvYmplY3QuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlZDtcbiAgfVxuXG4gIGlmICghaXNPYmplY3Qob3ZlcnJpZGVMb2NhbGl6ZWRTdHJpbmdzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignYm90ZnJhbWV3b3JrLXdlYmNoYXQ6IG92ZXJyaWRlTG9jYWxpemVkU3RyaW5ncyBtdXN0IGJlIGVpdGhlciBhIGZ1bmN0aW9uLCBhbiBvYmplY3QsIG9yIGZhbHN5LicpO1xuICB9XG5cbiAgcmV0dXJuIHsgLi4ubG9jYWxpemVkU3RyaW5ncywgLi4ub3ZlcnJpZGVMb2NhbGl6ZWRTdHJpbmdzIH07XG59XG5cbi8vIEl0IHNlZW1zIFwicmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzXCIgZGlkIG5vdCBwaWNrIHVwIGBDb21wb3NlckNvcmUuZGVmYXVsdFByb3BzYC5cbi8vIEFuZCBpdCBmYWxzZWx5IGNvbXBsYWludCBgb3B0aW9uYWw/OiBzdHJpbmdgIG11c3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgYENvbXBvc2VyQ29yZS5kZWZhdWx0UHJvcHMub3B0aW9uYWwgPSB1bmRlZmluZWRgLCBldmVuIHdlIGFscmVhZHkgc2V0IGl0IGJlbG93LlxuLy8gU2luY2Ugd2Ugc2V0IGJvdGggVHlwZVNjcmlwdCBgUHJvcHNgIGNsYXNzIGFuZCBgQ29tcG9zZXJDb3JlLnByb3BUeXBlc2AsIHRoaXMgY2hlY2sgd2lsbCBiZSBkb25lIHRoZXJlIGFzIHdlbGwuXG4vLyBJZ25vcmluZyBpdCBpbiBUeXBlU2NyaXB0IHZlcnNpb24gc2hvdWxkIGJlIHNhZmUsIGFzIHdlIGhhdmUgYHByb3BUeXBlc2AgdmVyc2lvbiB0byBwcm90ZWN0IHVzLlxuXG50eXBlIENvbXBvc2VyQ29yZVByb3BzID0gUmVhZG9ubHk8e1xuICBhY3Rpdml0eU1pZGRsZXdhcmU/OiBPbmVPck1hbnk8QWN0aXZpdHlNaWRkbGV3YXJlPjtcbiAgYWN0aXZpdHlTdGF0dXNNaWRkbGV3YXJlPzogT25lT3JNYW55PEFjdGl2aXR5U3RhdHVzTWlkZGxld2FyZT47XG4gIGF0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlPzogT25lT3JNYW55PEF0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlPjtcbiAgYXR0YWNobWVudE1pZGRsZXdhcmU/OiBPbmVPck1hbnk8QXR0YWNobWVudE1pZGRsZXdhcmU+O1xuICBhdmF0YXJNaWRkbGV3YXJlPzogT25lT3JNYW55PEF2YXRhck1pZGRsZXdhcmU+O1xuICBjYXJkQWN0aW9uTWlkZGxld2FyZT86IE9uZU9yTWFueTxDYXJkQWN0aW9uTWlkZGxld2FyZT47XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlIHwgKChjb250ZXh0OiBDb250ZXh0T2Y8dHlwZW9mIFdlYkNoYXRBUElDb250ZXh0PikgPT4gUmVhY3ROb2RlKTtcbiAgZGlyPzogc3RyaW5nO1xuICBkaXJlY3RMaW5lOiBEaXJlY3RMaW5lSlNCb3RDb25uZWN0aW9uO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGRvd25zY2FsZUltYWdlVG9EYXRhVVJMPzogKFxuICAgIGJsb2I6IEJsb2IsXG4gICAgbWF4V2lkdGg6IG51bWJlcixcbiAgICBtYXhIZWlnaHQ6IG51bWJlcixcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgcXVhbGl0eTogbnVtYmVyXG4gICkgPT4gUHJvbWlzZTxVUkw+O1xuICBncmFtbWFycz86IGFueTtcbiAgZ3JvdXBBY3Rpdml0aWVzTWlkZGxld2FyZT86IE9uZU9yTWFueTxHcm91cEFjdGl2aXRpZXNNaWRkbGV3YXJlPjtcbiAgaW50ZXJuYWxFcnJvckJveENsYXNzPzogUmVhY3QuQ29tcG9uZW50IHwgRnVuY3Rpb247XG4gIGxvY2FsZT86IHN0cmluZztcbiAgb25UZWxlbWV0cnk/OiAoZXZlbnQ6IFRlbGVtZXRyeU1lYXN1cmVtZW50RXZlbnQpID0+IHZvaWQ7XG4gIG92ZXJyaWRlTG9jYWxpemVkU3RyaW5ncz86IExvY2FsaXplZFN0cmluZ3MgfCAoKHN0cmluZ3M6IExvY2FsaXplZFN0cmluZ3MsIGxhbmd1YWdlOiBzdHJpbmcpID0+IExvY2FsaXplZFN0cmluZ3MpO1xuICByZW5kZXJNYXJrZG93bj86IChcbiAgICBtYXJrZG93bjogc3RyaW5nLFxuICAgIG5ld0xpbmVPcHRpb25zOiB7IG1hcmtkb3duUmVzcGVjdENSTEY6IGJvb2xlYW4gfSxcbiAgICBsaW5rT3B0aW9uczogeyBleHRlcm5hbExpbmtBbHQ6IHN0cmluZyB9XG4gICkgPT4gc3RyaW5nO1xuICBzY3JvbGxUb0VuZEJ1dHRvbk1pZGRsZXdhcmU/OiBPbmVPck1hbnk8U2Nyb2xsVG9FbmRCdXR0b25NaWRkbGV3YXJlPjtcbiAgc2VsZWN0Vm9pY2U/OiAodm9pY2VzOiAodHlwZW9mIHdpbmRvdy5TcGVlY2hTeW50aGVzaXNWb2ljZSlbXSwgYWN0aXZpdHk6IFdlYkNoYXRBY3Rpdml0eSkgPT4gdm9pZDtcbiAgc2VuZEJveE1pZGRsZXdhcmU/OiByZWFkb25seSBTZW5kQm94TWlkZGxld2FyZVtdIHwgdW5kZWZpbmVkO1xuICBzZW5kQm94VG9vbGJhck1pZGRsZXdhcmU/OiByZWFkb25seSBTZW5kQm94VG9vbGJhck1pZGRsZXdhcmVbXSB8IHVuZGVmaW5lZDtcbiAgc2VuZFR5cGluZ0luZGljYXRvcj86IGJvb2xlYW47XG4gIHN0eWxlT3B0aW9ucz86IFN0eWxlT3B0aW9ucztcbiAgdG9hc3RNaWRkbGV3YXJlPzogT25lT3JNYW55PFRvYXN0TWlkZGxld2FyZT47XG4gIHR5cGluZ0luZGljYXRvck1pZGRsZXdhcmU/OiBPbmVPck1hbnk8VHlwaW5nSW5kaWNhdG9yTWlkZGxld2FyZT47XG4gIHVzZXJJRD86IHN0cmluZztcbiAgdXNlcm5hbWU/OiBzdHJpbmc7XG59PjtcblxuY29uc3QgQ29tcG9zZXJDb3JlID0gKHtcbiAgYWN0aXZpdHlNaWRkbGV3YXJlLFxuICBhY3Rpdml0eVN0YXR1c01pZGRsZXdhcmUsXG4gIGF0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlLFxuICBhdHRhY2htZW50TWlkZGxld2FyZSxcbiAgYXZhdGFyTWlkZGxld2FyZSxcbiAgY2FyZEFjdGlvbk1pZGRsZXdhcmUsXG4gIGNoaWxkcmVuLFxuICBkaXIsXG4gIGRpcmVjdExpbmUsXG4gIGRpc2FibGVkLFxuICBkb3duc2NhbGVJbWFnZVRvRGF0YVVSTCxcbiAgZ3JhbW1hcnMsXG4gIGdyb3VwQWN0aXZpdGllc01pZGRsZXdhcmUsXG4gIGludGVybmFsRXJyb3JCb3hDbGFzcyxcbiAgbG9jYWxlLFxuICBvblRlbGVtZXRyeSxcbiAgb3ZlcnJpZGVMb2NhbGl6ZWRTdHJpbmdzLFxuICByZW5kZXJNYXJrZG93bixcbiAgc2Nyb2xsVG9FbmRCdXR0b25NaWRkbGV3YXJlLFxuICBzZWxlY3RWb2ljZSxcbiAgc2VuZEJveE1pZGRsZXdhcmUsXG4gIHNlbmRCb3hUb29sYmFyTWlkZGxld2FyZSxcbiAgc2VuZFR5cGluZ0luZGljYXRvcixcbiAgc3R5bGVPcHRpb25zLFxuICB0b2FzdE1pZGRsZXdhcmUsXG4gIHR5cGluZ0luZGljYXRvck1pZGRsZXdhcmUsXG4gIHVzZXJJRCxcbiAgdXNlcm5hbWVcbn06IENvbXBvc2VyQ29yZVByb3BzKSA9PiB7XG4gIGNvbnN0IFtwb255ZmlsbF0gPSB1c2VQb255ZmlsbCgpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHRlbGVtZXRyeURpbWVuc2lvbnNSZWYgPSB1c2VSZWYoe30pO1xuXG4gIGNvbnN0IHBhdGNoZWREaXIgPSB1c2VNZW1vKCgpID0+IChkaXIgPT09ICdsdHInIHx8IGRpciA9PT0gJ3J0bCcgPyBkaXIgOiAnYXV0bycpLCBbZGlyXSk7XG4gIGNvbnN0IHBhdGNoZWRHcmFtbWFycyA9IHVzZU1lbW8oKCkgPT4gZ3JhbW1hcnMgfHwgW10sIFtncmFtbWFyc10pO1xuICBjb25zdCBwYXRjaGVkU3R5bGVPcHRpb25zID0gdXNlTWVtbyhcbiAgICAoKSA9PiBub3JtYWxpemVTdHlsZU9wdGlvbnMocGF0Y2hTdHlsZU9wdGlvbnNGcm9tRGVwcmVjYXRlZFByb3BzKHN0eWxlT3B0aW9ucykpLFxuICAgIFtzdHlsZU9wdGlvbnNdXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkaXNwYXRjaChzZXRMYW5ndWFnZShsb2NhbGUpKTtcbiAgfSwgW2Rpc3BhdGNoLCBsb2NhbGVdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRpc3BhdGNoKHNldFNlbmRUeXBpbmdJbmRpY2F0b3IoISFzZW5kVHlwaW5nSW5kaWNhdG9yKSk7XG4gIH0sIFtkaXNwYXRjaCwgc2VuZFR5cGluZ0luZGljYXRvcl0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZGlzcGF0Y2goXG4gICAgICBjcmVhdGVDb25uZWN0QWN0aW9uKHtcbiAgICAgICAgZGlyZWN0TGluZSxcbiAgICAgICAgdXNlcklELFxuICAgICAgICB1c2VybmFtZVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIC8qKlxuICAgICAgICogQHRvZG8gVE9ETzogW1AzXSBkaXNjb25uZWN0KCkgaXMgYW4gYXN5bmMgY2FsbCAocGVuZGluZyAtPiBmdWxmaWxsZWQpLCB3ZSBuZWVkIHRvIHdhaXQsIG9yIGNoYW5nZSBpdCB0byByZWNvbm5lY3QoKVxuICAgICAgICovXG4gICAgICBkaXNwYXRjaChkaXNjb25uZWN0KCkpO1xuICAgIH07XG4gIH0sIFtkaXNwYXRjaCwgZGlyZWN0TGluZSwgdXNlcklELCB1c2VybmFtZV0pO1xuXG4gIGNvbnN0IG1hcmtBbGxBc0Fja25vd2xlZGdlZCA9IHVzZU1hcmtBbGxBc0Fja25vd2xlZGdlZCgpO1xuXG4gIGNvbnN0IGNhcmRBY3Rpb25Db250ZXh0ID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgY3JlYXRlQ2FyZEFjdGlvbkNvbnRleHQoe1xuICAgICAgICBjYXJkQWN0aW9uTWlkZGxld2FyZTogT2JqZWN0LmZyZWV6ZShbLi4uc2luZ2xlVG9BcnJheShjYXJkQWN0aW9uTWlkZGxld2FyZSldKSxcbiAgICAgICAgZGlyZWN0TGluZSxcbiAgICAgICAgZGlzcGF0Y2gsXG4gICAgICAgIG1hcmtBbGxBc0Fja25vd2xlZGdlZCxcbiAgICAgICAgcG9ueWZpbGxcbiAgICAgIH0pLFxuICAgIFtjYXJkQWN0aW9uTWlkZGxld2FyZSwgZGlyZWN0TGluZSwgZGlzcGF0Y2gsIG1hcmtBbGxBc0Fja25vd2xlZGdlZCwgcG9ueWZpbGxdXG4gICk7XG5cbiAgY29uc3QgcGF0Y2hlZFNlbGVjdFZvaWNlID0gdXNlTWVtbyhcbiAgICAoKSA9PiBzZWxlY3RWb2ljZSB8fCBkZWZhdWx0U2VsZWN0Vm9pY2UuYmluZChudWxsLCB7IGxhbmd1YWdlOiBsb2NhbGUgfSksXG4gICAgW2xvY2FsZSwgc2VsZWN0Vm9pY2VdXG4gICk7XG5cbiAgY29uc3QgZ3JvdXBBY3Rpdml0aWVzQ29udGV4dCA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGNyZWF0ZUdyb3VwQWN0aXZpdGllc0NvbnRleHQoe1xuICAgICAgICBncm91cEFjdGl2aXRpZXNNaWRkbGV3YXJlOiBPYmplY3QuZnJlZXplKFsuLi5zaW5nbGVUb0FycmF5KGdyb3VwQWN0aXZpdGllc01pZGRsZXdhcmUpXSksXG4gICAgICAgIGdyb3VwVGltZXN0YW1wOiBwYXRjaGVkU3R5bGVPcHRpb25zLmdyb3VwVGltZXN0YW1wLFxuICAgICAgICBwb255ZmlsbFxuICAgICAgfSksXG4gICAgW2dyb3VwQWN0aXZpdGllc01pZGRsZXdhcmUsIHBhdGNoZWRTdHlsZU9wdGlvbnMuZ3JvdXBUaW1lc3RhbXAsIHBvbnlmaWxsXVxuICApO1xuXG4gIGNvbnN0IGhvaXN0ZWREaXNwYXRjaGVycyA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIG1hcE1hcChcbiAgICAgICAgRElTUEFUQ0hFUlMsXG4gICAgICAgIGRpc3BhdGNoZXIgPT5cbiAgICAgICAgICAoLi4uYXJncykgPT5cbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICAgIGRpc3BhdGNoKGRpc3BhdGNoZXIoLi4uYXJncykpXG4gICAgICApLFxuICAgIFtkaXNwYXRjaF1cbiAgKTtcblxuICBjb25zdCBwYXRjaGVkTG9jYWxpemVkU3RyaW5ncyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gbWVyZ2VTdHJpbmdzT3ZlcnJpZGVzKGdldEFsbExvY2FsaXplZFN0cmluZ3MoKVtub3JtYWxpemVMYW5ndWFnZShsb2NhbGUpXSwgbG9jYWxlLCBvdmVycmlkZUxvY2FsaXplZFN0cmluZ3MpLFxuICAgIFtsb2NhbGUsIG92ZXJyaWRlTG9jYWxpemVkU3RyaW5nc11cbiAgKTtcblxuICBjb25zdCBsb2NhbGl6ZWRHbG9iYWxpemUgPSB1c2VNZW1vPFByZWNvbXBpbGVkR2xvYmFsaXplVHlwZT4oKCkgPT4ge1xuICAgIGNvbnN0IHsgR0xPQkFMSVpFLCBHTE9CQUxJWkVfTEFOR1VBR0UgfSA9IHBhdGNoZWRMb2NhbGl6ZWRTdHJpbmdzIHx8IHt9O1xuXG4gICAgcmV0dXJuIEdMT0JBTElaRSB8fCAoR0xPQkFMSVpFX0xBTkdVQUdFICYmIFByZWNvbXBpbGVkR2xvYmFsaXplKEdMT0JBTElaRV9MQU5HVUFHRSkpIHx8IFByZWNvbXBpbGVkR2xvYmFsaXplKCdlbicpO1xuICB9LCBbcGF0Y2hlZExvY2FsaXplZFN0cmluZ3NdKTtcblxuICBjb25zdCB0cmFja0RpbWVuc2lvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChuYW1lOiBzdHJpbmcsIGRhdGE6IGFueSkgPT4ge1xuICAgICAgaWYgKCFuYW1lIHx8IHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gY29uc29sZS53YXJuKCdib3RmcmFtZXdvcmstd2ViY2hhdDogVGVsZW1ldHJ5IGRpbWVuc2lvbiBuYW1lIG11c3QgYmUgYSBzdHJpbmcuJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgZGF0YTtcblxuICAgICAgaWYgKHR5cGUgIT09ICdzdHJpbmcnICYmIHR5cGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBjb25zb2xlLndhcm4oJ2JvdGZyYW1ld29yay13ZWJjaGF0OiBUZWxlbWV0cnkgZGltZW5zaW9uIGRhdGEgbXVzdCBiZSBhIHN0cmluZyBvciB1bmRlZmluZWQuJyk7XG4gICAgICB9XG5cbiAgICAgIHRlbGVtZXRyeURpbWVuc2lvbnNSZWYuY3VycmVudCA9IHVwZGF0ZUluKFxuICAgICAgICB0ZWxlbWV0cnlEaW1lbnNpb25zUmVmLmN1cnJlbnQsXG4gICAgICAgIFtuYW1lXSxcbiAgICAgICAgdHlwZSA9PT0gJ3VuZGVmaW5lZCcgPyBkYXRhIDogKCkgPT4gZGF0YVxuICAgICAgKTtcbiAgICB9LFxuICAgIFt0ZWxlbWV0cnlEaW1lbnNpb25zUmVmXVxuICApO1xuXG4gIGNvbnN0IHBhdGNoZWRBY3Rpdml0eVJlbmRlcmVyID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgYXBwbHlNaWRkbGV3YXJlRm9yUmVuZGVyZXIoXG4gICAgICAgICdhY3Rpdml0eScsXG4gICAgICAgIHsgc3RyaWN0OiBmYWxzZSB9LFxuICAgICAgICAuLi5zaW5nbGVUb0FycmF5KGFjdGl2aXR5TWlkZGxld2FyZSksXG4gICAgICAgICgpID0+XG4gICAgICAgICAgKCkgPT5cbiAgICAgICAgICAoeyBhY3Rpdml0eSB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoYWN0aXZpdHkpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyByZW5kZXJlciBmb3IgYWN0aXZpdHkgb2YgdHlwZSBcIiR7YWN0aXZpdHkudHlwZX1cImApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBhY3Rpdml0eSB0byByZW5kZXInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICApKHt9KSxcbiAgICBbYWN0aXZpdHlNaWRkbGV3YXJlXVxuICApO1xuXG4gIGNvbnN0IHBhdGNoZWRBY3Rpdml0eVN0YXR1c1JlbmRlcmVyID0gdXNlTWVtbzxSZW5kZXJBY3Rpdml0eVN0YXR1cz4oXG4gICAgKCkgPT5cbiAgICAgIGFwcGx5TWlkZGxld2FyZUZvclJlbmRlcmVyKFxuICAgICAgICAnYWN0aXZpdHkgc3RhdHVzJyxcbiAgICAgICAgeyBzdHJpY3Q6IGZhbHNlIH0sXG4gICAgICAgIC4uLnNpbmdsZVRvQXJyYXkoYWN0aXZpdHlTdGF0dXNNaWRkbGV3YXJlKSxcbiAgICAgICAgKCkgPT4gKCkgPT4gKCkgPT4gZmFsc2VcbiAgICAgICkoe30pLFxuICAgIFthY3Rpdml0eVN0YXR1c01pZGRsZXdhcmVdXG4gICk7XG5cbiAgY29uc3QgcGF0Y2hlZEF0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJSZW5kZXJlciA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGFwcGx5TWlkZGxld2FyZUZvclJlbmRlcmVyKFxuICAgICAgICAnYXR0YWNobWVudCBmb3Igc2NyZWVuIHJlYWRlcicsXG4gICAgICAgIHsgc3RyaWN0OiB0cnVlIH0sXG4gICAgICAgIC4uLnNpbmdsZVRvQXJyYXkoYXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUpLFxuICAgICAgICAoKSA9PlxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgKHsgYXR0YWNobWVudCB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoYXR0YWNobWVudCkge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYE5vIHJlbmRlcmVyIGZvciBhdHRhY2htZW50IGZvciBzY3JlZW4gcmVhZGVyIG9mIHR5cGUgXCIke2F0dGFjaG1lbnQuY29udGVudFR5cGV9XCJgKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICogQHRvZG8gVE9ETzogW1A0XSBNaWdodCBiZSBhYmxlIHRvIHRocm93IHdpdGhvdXQgcmV0dXJuaW5nIGEgZnVuY3Rpb24gLS0gaW52ZXN0aWdhdGUgYW5kIHBvc3NpYmx5IGZpeFxuICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBhdHRhY2htZW50IHRvIHJlbmRlcicpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICApKHt9KSxcbiAgICBbYXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmVdXG4gICk7XG5cbiAgY29uc3QgcGF0Y2hlZEF0dGFjaG1lbnRSZW5kZXJlciA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGFwcGx5TWlkZGxld2FyZUZvckxlZ2FjeVJlbmRlcmVyKFxuICAgICAgICAnYXR0YWNobWVudCcsXG4gICAgICAgIC4uLnNpbmdsZVRvQXJyYXkoYXR0YWNobWVudE1pZGRsZXdhcmUpLFxuICAgICAgICAoKSA9PlxuICAgICAgICAgICgpID0+XG4gICAgICAgICAgKHsgYXR0YWNobWVudCB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoYXR0YWNobWVudCkge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHJlbmRlcmVyIGZvciBhdHRhY2htZW50IG9mIHR5cGUgXCIke2F0dGFjaG1lbnQuY29udGVudFR5cGV9XCJgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gYXR0YWNobWVudCB0byByZW5kZXInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICApKHt9KSxcbiAgICBbYXR0YWNobWVudE1pZGRsZXdhcmVdXG4gICk7XG5cbiAgY29uc3QgcGF0Y2hlZEF2YXRhclJlbmRlcmVyID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgYXBwbHlNaWRkbGV3YXJlRm9yUmVuZGVyZXIoXG4gICAgICAgICdhdmF0YXInLFxuICAgICAgICB7IHN0cmljdDogZmFsc2UgfSxcbiAgICAgICAgLi4uc2luZ2xlVG9BcnJheShhdmF0YXJNaWRkbGV3YXJlKSxcbiAgICAgICAgKCkgPT4gKCkgPT4gKCkgPT4gZmFsc2VcbiAgICAgICkoe30pLFxuICAgIFthdmF0YXJNaWRkbGV3YXJlXVxuICApO1xuXG4gIGNvbnN0IHBhdGNoZWRUb2FzdFJlbmRlcmVyID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgYXBwbHlNaWRkbGV3YXJlRm9yUmVuZGVyZXIoXG4gICAgICAgICd0b2FzdCcsXG4gICAgICAgIHsgc3RyaWN0OiBmYWxzZSB9LFxuICAgICAgICAuLi5zaW5nbGVUb0FycmF5KHRvYXN0TWlkZGxld2FyZSksXG4gICAgICAgICgpID0+XG4gICAgICAgICAgKCkgPT5cbiAgICAgICAgICAoeyBub3RpZmljYXRpb24gfSkgPT4ge1xuICAgICAgICAgICAgaWYgKG5vdGlmaWNhdGlvbikge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHJlbmRlcmVyIGZvciBub3RpZmljYXRpb24gb2YgdHlwZSBcIiR7bm90aWZpY2F0aW9uLmNvbnRlbnRUeXBlfVwiYCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIG5vdGlmaWNhdGlvbiB0byByZW5kZXInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICApKHt9KSxcbiAgICBbdG9hc3RNaWRkbGV3YXJlXVxuICApO1xuXG4gIGNvbnN0IHBhdGNoZWRUeXBpbmdJbmRpY2F0b3JSZW5kZXJlciA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGFwcGx5TWlkZGxld2FyZUZvclJlbmRlcmVyKFxuICAgICAgICAndHlwaW5nIGluZGljYXRvcicsXG4gICAgICAgIHsgc3RyaWN0OiBmYWxzZSB9LFxuICAgICAgICAuLi5zaW5nbGVUb0FycmF5KHR5cGluZ0luZGljYXRvck1pZGRsZXdhcmUpLFxuICAgICAgICAoKSA9PiAoKSA9PiAoKSA9PiBmYWxzZVxuICAgICAgKSh7fSksXG4gICAgW3R5cGluZ0luZGljYXRvck1pZGRsZXdhcmVdXG4gICk7XG5cbiAgY29uc3Qgc2Nyb2xsVG9FbmRCdXR0b25SZW5kZXJlcjogU2Nyb2xsVG9FbmRCdXR0b25Db21wb25lbnRGYWN0b3J5ID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgYXBwbHlNaWRkbGV3YXJlRm9yUmVuZGVyZXIoXG4gICAgICAgICdzY3JvbGwgdG8gZW5kIGJ1dHRvbicsXG4gICAgICAgIHsgc3RyaWN0OiB0cnVlIH0sXG4gICAgICAgIC4uLnNpbmdsZVRvQXJyYXkoc2Nyb2xsVG9FbmRCdXR0b25NaWRkbGV3YXJlKSxcbiAgICAgICAgKCkgPT4gKCkgPT4gKCkgPT4gZmFsc2VcbiAgICAgICkoKSBhcyBhbnksXG4gICAgW3Njcm9sbFRvRW5kQnV0dG9uTWlkZGxld2FyZV1cbiAgKTtcblxuICAvKipcbiAgICogVGhpcyBpcyBhIGhlYXZ5IGZ1bmN0aW9uLCBhbmQgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgb25seSBjYWxsZWQgd2hlbiB0aGVyZSBpcyBhIG5lZWQgdG8gcmVjcmVhdGUgYnVzaW5lc3MgbG9naWMsIGUuZy5cbiAgICogLSBVc2VyIElEIGNoYW5nZWQsIGNhdXNpbmcgYWxsIHNlbmQqIGZ1bmN0aW9ucyB0byBiZSB1cGRhdGVkXG4gICAqIC0gc2VuZFxuICAgKiBAdG9kbyBUT0RPOiBbUDNdIFdlIHNob3VsZCB0aGluayBhYm91dCBpZiB3ZSBhbGxvdyB0aGUgdXNlciB0byBjaGFuZ2Ugb25TZW5kQm94VmFsdWVDaGFuZ2VkL3NlbmRCb3hWYWx1ZSwgZS5nLlxuICAgKiAxLiBUdXJucyB0ZXh0IGludG8gVVBQRVJDQVNFXG4gICAqIDIuIEZpbHRlciBvdXQgcHJvZmFuaXR5XG4gICAqIEB0b2RvIFRPRE86IFtQNF0gUmV2aXNpdCBhbGwgbWVtYmVycyBvZiBjb250ZXh0XG4gICAqICAgICAgIFRoaXMgY29udGV4dCBzaG91bGQgY29uc2lzdCBvZiBtZW1iZXJzIHRoYXQgYXJlIG5vdCBpbiB0aGUgUmVkdXggc3RvcmVcbiAgICogICAgICAgaS5lLiBtZW1iZXJzIHRoYXQgYXJlIG5vdCBpbnRlcmVzdGVkIGluIG90aGVyIHR5cGVzIG9mIFVJc1xuICAgKi9cbiAgY29uc3QgY29udGV4dCA9IHVzZU1lbW88Q29udGV4dE9mPHR5cGVvZiBXZWJDaGF0QVBJQ29udGV4dD4+KFxuICAgICgpID0+ICh7XG4gICAgICAuLi5jYXJkQWN0aW9uQ29udGV4dCxcbiAgICAgIC4uLmdyb3VwQWN0aXZpdGllc0NvbnRleHQsXG4gICAgICAuLi5ob2lzdGVkRGlzcGF0Y2hlcnMsXG4gICAgICBhY3Rpdml0eVJlbmRlcmVyOiBwYXRjaGVkQWN0aXZpdHlSZW5kZXJlcixcbiAgICAgIGFjdGl2aXR5U3RhdHVzUmVuZGVyZXI6IHBhdGNoZWRBY3Rpdml0eVN0YXR1c1JlbmRlcmVyLFxuICAgICAgYXR0YWNobWVudEZvclNjcmVlblJlYWRlclJlbmRlcmVyOiBwYXRjaGVkQXR0YWNobWVudEZvclNjcmVlblJlYWRlclJlbmRlcmVyLFxuICAgICAgYXR0YWNobWVudFJlbmRlcmVyOiBwYXRjaGVkQXR0YWNobWVudFJlbmRlcmVyLFxuICAgICAgYXZhdGFyUmVuZGVyZXI6IHBhdGNoZWRBdmF0YXJSZW5kZXJlcixcbiAgICAgIGRpcjogcGF0Y2hlZERpcixcbiAgICAgIGRpcmVjdExpbmUsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGRvd25zY2FsZUltYWdlVG9EYXRhVVJMLFxuICAgICAgZ3JhbW1hcnM6IHBhdGNoZWRHcmFtbWFycyxcbiAgICAgIGludGVybmFsRXJyb3JCb3hDbGFzcyxcbiAgICAgIGxhbmd1YWdlOiBsb2NhbGUsXG4gICAgICBsb2NhbGl6ZWRHbG9iYWxpemVTdGF0ZTogW2xvY2FsaXplZEdsb2JhbGl6ZV0sXG4gICAgICBsb2NhbGl6ZWRTdHJpbmdzOiBwYXRjaGVkTG9jYWxpemVkU3RyaW5ncyxcbiAgICAgIG9uVGVsZW1ldHJ5LFxuICAgICAgcmVuZGVyTWFya2Rvd24sXG4gICAgICBzY3JvbGxUb0VuZEJ1dHRvblJlbmRlcmVyLFxuICAgICAgc2VsZWN0Vm9pY2U6IHBhdGNoZWRTZWxlY3RWb2ljZSxcbiAgICAgIHNlbmRUeXBpbmdJbmRpY2F0b3IsXG4gICAgICBzdHlsZU9wdGlvbnM6IHBhdGNoZWRTdHlsZU9wdGlvbnMsXG4gICAgICB0ZWxlbWV0cnlEaW1lbnNpb25zUmVmLFxuICAgICAgdG9hc3RSZW5kZXJlcjogcGF0Y2hlZFRvYXN0UmVuZGVyZXIsXG4gICAgICB0cmFja0RpbWVuc2lvbixcbiAgICAgIHR5cGluZ0luZGljYXRvclJlbmRlcmVyOiBwYXRjaGVkVHlwaW5nSW5kaWNhdG9yUmVuZGVyZXIsXG4gICAgICB1c2VySUQsXG4gICAgICB1c2VybmFtZVxuICAgIH0pLFxuICAgIFtcbiAgICAgIGNhcmRBY3Rpb25Db250ZXh0LFxuICAgICAgZGlyZWN0TGluZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgZG93bnNjYWxlSW1hZ2VUb0RhdGFVUkwsXG4gICAgICBncm91cEFjdGl2aXRpZXNDb250ZXh0LFxuICAgICAgaG9pc3RlZERpc3BhdGNoZXJzLFxuICAgICAgaW50ZXJuYWxFcnJvckJveENsYXNzLFxuICAgICAgbG9jYWxlLFxuICAgICAgbG9jYWxpemVkR2xvYmFsaXplLFxuICAgICAgb25UZWxlbWV0cnksXG4gICAgICBwYXRjaGVkQWN0aXZpdHlSZW5kZXJlcixcbiAgICAgIHBhdGNoZWRBY3Rpdml0eVN0YXR1c1JlbmRlcmVyLFxuICAgICAgcGF0Y2hlZEF0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJSZW5kZXJlcixcbiAgICAgIHBhdGNoZWRBdHRhY2htZW50UmVuZGVyZXIsXG4gICAgICBwYXRjaGVkQXZhdGFyUmVuZGVyZXIsXG4gICAgICBwYXRjaGVkRGlyLFxuICAgICAgcGF0Y2hlZEdyYW1tYXJzLFxuICAgICAgcGF0Y2hlZExvY2FsaXplZFN0cmluZ3MsXG4gICAgICBwYXRjaGVkU2VsZWN0Vm9pY2UsXG4gICAgICBwYXRjaGVkU3R5bGVPcHRpb25zLFxuICAgICAgcGF0Y2hlZFRvYXN0UmVuZGVyZXIsXG4gICAgICBwYXRjaGVkVHlwaW5nSW5kaWNhdG9yUmVuZGVyZXIsXG4gICAgICByZW5kZXJNYXJrZG93bixcbiAgICAgIHNjcm9sbFRvRW5kQnV0dG9uUmVuZGVyZXIsXG4gICAgICBzZW5kVHlwaW5nSW5kaWNhdG9yLFxuICAgICAgdGVsZW1ldHJ5RGltZW5zaW9uc1JlZixcbiAgICAgIHRyYWNrRGltZW5zaW9uLFxuICAgICAgdXNlcklELFxuICAgICAgdXNlcm5hbWVcbiAgICBdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8V2ViQ2hhdEFQSUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHR9PlxuICAgICAgPEFjdGl2aXR5U2VuZFN0YXR1c0NvbXBvc2VyPlxuICAgICAgICA8U2VuZEJveE1pZGRsZXdhcmVQcm92aWRlciBtaWRkbGV3YXJlPXtzZW5kQm94TWlkZGxld2FyZSB8fCBPYmplY3QuZnJlZXplKFtdKX0+XG4gICAgICAgICAgPFNlbmRCb3hUb29sYmFyTWlkZGxld2FyZVByb3ZpZGVyIG1pZGRsZXdhcmU9e3NlbmRCb3hUb29sYmFyTWlkZGxld2FyZSB8fCBPYmplY3QuZnJlZXplKFtdKX0+XG4gICAgICAgICAgICB7dHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nID8gY2hpbGRyZW4oY29udGV4dCkgOiBjaGlsZHJlbn1cbiAgICAgICAgICAgIDxBY3Rpdml0eVNlbmRTdGF0dXNUZWxlbWV0cnlDb21wb3NlciAvPlxuICAgICAgICAgIDwvU2VuZEJveFRvb2xiYXJNaWRkbGV3YXJlUHJvdmlkZXI+XG4gICAgICAgIDwvU2VuZEJveE1pZGRsZXdhcmVQcm92aWRlcj5cbiAgICAgIDwvQWN0aXZpdHlTZW5kU3RhdHVzQ29tcG9zZXI+XG4gICAgICB7b25UZWxlbWV0cnkgJiYgPFRyYWNrZXIgLz59XG4gICAgPC9XZWJDaGF0QVBJQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG5cbi8qKlxuICogQHRvZG8gVE9ETzogW1AzXSBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHNvbWUgZGF0YSBmcm9tIFJlZHV4IHN0b3JlIHRvIHByb3BzXG4gKiAgICAgICBBbHRob3VnaCB3ZSB1c2UgYGNvbm5lY3RUb1dlYkNoYXRgIHRvIGhpZGUgdGhlIGRldGFpbHMgb2YgYWNjZXNzb3Igb2YgUmVkdXggc3RvcmUsXG4gKiAgICAgICB3ZSBzaG91bGQgY2xlYW4gdXAgdGhlIHJlc3BvbnNpYmlsaXR5IGJldHdlZW4gQ29udGV4dCBhbmQgUmVkdXggc3RvcmVcbiAqICAgICAgIFdlIHNob3VsZCBkZWNpZGUgd2hpY2ggZGF0YSBpcyBuZWVkZWQgZm9yIFJlYWN0IGJ1dCBub3QgaW4gb3RoZXIgZW52aXJvbm1lbnQgc3VjaCBhcyBDTEkvVlNDb2RlXG4gKi9cbkNvbXBvc2VyQ29yZS5kZWZhdWx0UHJvcHMgPSB7XG4gIGFjdGl2aXR5TWlkZGxld2FyZTogdW5kZWZpbmVkLFxuICBhY3Rpdml0eVN0YXR1c01pZGRsZXdhcmU6IHVuZGVmaW5lZCxcbiAgYXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmU6IHVuZGVmaW5lZCxcbiAgYXR0YWNobWVudE1pZGRsZXdhcmU6IHVuZGVmaW5lZCxcbiAgYXZhdGFyTWlkZGxld2FyZTogdW5kZWZpbmVkLFxuICBjYXJkQWN0aW9uTWlkZGxld2FyZTogdW5kZWZpbmVkLFxuICBjaGlsZHJlbjogdW5kZWZpbmVkLFxuICBkaXI6ICdhdXRvJyxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBkb3duc2NhbGVJbWFnZVRvRGF0YVVSTDogdW5kZWZpbmVkLFxuICBncmFtbWFyczogW10sXG4gIGdyb3VwQWN0aXZpdGllc01pZGRsZXdhcmU6IHVuZGVmaW5lZCxcbiAgaW50ZXJuYWxFcnJvckJveENsYXNzOiB1bmRlZmluZWQsXG4gIGxvY2FsZTogd2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZSB8fCAnZW4tVVMnLFxuICBvblRlbGVtZXRyeTogdW5kZWZpbmVkLFxuICBvdmVycmlkZUxvY2FsaXplZFN0cmluZ3M6IHVuZGVmaW5lZCxcbiAgcmVuZGVyTWFya2Rvd246IHVuZGVmaW5lZCxcbiAgc2Nyb2xsVG9FbmRCdXR0b25NaWRkbGV3YXJlOiB1bmRlZmluZWQsXG4gIHNlbGVjdFZvaWNlOiB1bmRlZmluZWQsXG4gIHNlbmRUeXBpbmdJbmRpY2F0b3I6IGZhbHNlLFxuICBzdHlsZU9wdGlvbnM6IHt9LFxuICB0b2FzdE1pZGRsZXdhcmU6IHVuZGVmaW5lZCxcbiAgdHlwaW5nSW5kaWNhdG9yTWlkZGxld2FyZTogdW5kZWZpbmVkLFxuICB1c2VySUQ6ICcnLFxuICB1c2VybmFtZTogJydcbn07XG5cbkNvbXBvc2VyQ29yZS5wcm9wVHlwZXMgPSB7XG4gIGFjdGl2aXR5TWlkZGxld2FyZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmZ1bmMpLCBQcm9wVHlwZXMuZnVuY10pLFxuICBhY3Rpdml0eVN0YXR1c01pZGRsZXdhcmU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5mdW5jKSwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgYXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5mdW5jKSwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgYXR0YWNobWVudE1pZGRsZXdhcmU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5mdW5jKSwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgYXZhdGFyTWlkZGxld2FyZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmZ1bmMpLCBQcm9wVHlwZXMuZnVuY10pLFxuICBjYXJkQWN0aW9uTWlkZGxld2FyZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmZ1bmMpLCBQcm9wVHlwZXMuZnVuY10pLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLmFueSxcbiAgZGlyOiBQcm9wVHlwZXMub25lT2YoWydhdXRvJywgJ2x0cicsICdydGwnXSksXG4gIC8vIFByb3BUeXBlcy5zaGFwZSh7IC4uLiB9KSBkaWQgbm90IGhvbm9yIGlzUmVxdWlyZWQgZm9yIGl0cyBtZW1iZXJzLlxuICAvLyBAdHMtaWdub3JlXG4gIGRpcmVjdExpbmU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgYWN0aXZpdHkkOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3Vic2NyaWJlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gICAgfSkuaXNSZXF1aXJlZCxcbiAgICBjb25uZWN0aW9uU3RhdHVzJDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHN1YnNjcmliZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuICAgIH0pLmlzUmVxdWlyZWQsXG4gICAgZW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBnZXRTZXNzaW9uSWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIHBvc3RBY3Rpdml0eTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICByZWZlcmVuY2VHcmFtbWFySUQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG9rZW46IFByb3BUeXBlcy5zdHJpbmdcbiAgfSkuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBkb3duc2NhbGVJbWFnZVRvRGF0YVVSTDogUHJvcFR5cGVzLmZ1bmMsXG4gIGdyYW1tYXJzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKSxcbiAgZ3JvdXBBY3Rpdml0aWVzTWlkZGxld2FyZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmZ1bmMpLCBQcm9wVHlwZXMuZnVuY10pLFxuICBpbnRlcm5hbEVycm9yQm94Q2xhc3M6IFByb3BUeXBlcy5mdW5jLCAvLyBUaGlzIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seS4gV2UgZG9uJ3QgYWxsb3cgY3VzdG9taXphdGlvbiBvZiBlcnJvciBib3guXG4gIGxvY2FsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25UZWxlbWV0cnk6IFByb3BUeXBlcy5mdW5jLFxuICBvdmVycmlkZUxvY2FsaXplZFN0cmluZ3M6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hbnksIFByb3BUeXBlcy5mdW5jXSksXG4gIHJlbmRlck1hcmtkb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgc2Nyb2xsVG9FbmRCdXR0b25NaWRkbGV3YXJlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuZnVuYyksIFByb3BUeXBlcy5mdW5jXSksXG4gIHNlbGVjdFZvaWNlOiBQcm9wVHlwZXMuZnVuYyxcbiAgc2VuZFR5cGluZ0luZGljYXRvcjogUHJvcFR5cGVzLmJvb2wsXG4gIHN0eWxlT3B0aW9uczogUHJvcFR5cGVzLmFueSxcbiAgdG9hc3RNaWRkbGV3YXJlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuZnVuYyksIFByb3BUeXBlcy5mdW5jXSksXG4gIHR5cGluZ0luZGljYXRvck1pZGRsZXdhcmU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5mdW5jKSwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgdXNlcklEOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VybmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxudHlwZSBDb21wb3NlcldpdGhTdG9yZVByb3BzID0gQ29tcG9zZXJDb3JlUHJvcHMgJlxuICBSZWFkb25seTx7XG4gICAgc3RvcmU/OiBhbnk7XG4gIH0+O1xuXG50eXBlIENvbXBvc2VyUHJvcHMgPSBDb21wb3NlcldpdGhTdG9yZVByb3BzICYge1xuICBpbnRlcm5hbFJlbmRlckVycm9yQm94PzogYW55O1xuXG4gIC8qKlxuICAgKiBQb255ZmlsbCB0byBvdmVycmlkZXMgc3BlY2lmaWMgZ2xvYmFsIHNjb3BlIG1lbWJlcnMuIFRoaXMgcHJvcCBjYW5ub3QgYmUgY2hhbmdlZCBhZnRlciBpbml0aWFsIHJlbmRlci5cbiAgICpcbiAgICogVGhpcyBvcHRpb24gaXMgZm9yIGRldmVsb3BtZW50IHVzZSBvbmx5LiBOb3QgYWxsIGZlYXR1cmVzIGluIFdlYiBDaGF0IGFyZSBwb255ZmlsbGVkLlxuICAgKlxuICAgKiBUbyBmYWtlIHRpbWVycywgYHNldFRpbWVvdXRgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBjYW4gYmUgcGFzc2VkIHRvIG92ZXJyaWRlcyB0aGUgb3JpZ2luYWwgZ2xvYmFsIHNjb3BlIG1lbWJlcnMuXG4gICAqXG4gICAqIFBsZWFzZSBzZWUgWyM0NjYyXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L0JvdEZyYW1ld29yay1XZWJDaGF0L3B1bGwvNDY2MikgZm9yIGRldGFpbHMuXG4gICAqL1xuICBwb255ZmlsbD86IFBhcnRpYWw8R2xvYmFsU2NvcGVQb255ZmlsbD47XG59O1xuXG4vLyBXZSB3aWxsIGNyZWF0ZSBhIFJlZHV4IHN0b3JlIGlmIGl0IHdhcyBub3QgcGFzc2VkIGluXG5jb25zdCBDb21wb3NlcldpdGhTdG9yZSA9ICh7IG9uVGVsZW1ldHJ5LCBzdG9yZSwgLi4ucHJvcHMgfTogQ29tcG9zZXJXaXRoU3RvcmVQcm9wcykgPT4ge1xuICBjb25zdCBbcG9ueWZpbGxdID0gdXNlUG9ueWZpbGwoKTtcblxuICBjb25zdCBtZW1vaXplZFN0b3JlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgbmV4dFN0b3JlID0gc3RvcmUgfHwgY3JlYXRlU3RvcmVXaXRoT3B0aW9ucyh7IHBvbnlmaWxsIH0pO1xuXG4gICAgY29uc3Qgc3RvcmVQb255ZmlsbCA9IG5leHRTdG9yZS5nZXRTdGF0ZSgpLmludGVybmFsPy5wb255ZmlsbCB8fCB7fTtcblxuICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0KFsuLi5PYmplY3Qua2V5cyhzdG9yZVBvbnlmaWxsKSwgLi4uT2JqZWN0LmtleXMocG9ueWZpbGwpXSk7XG5cbiAgICAvLyBGaWx0ZXIgb3V0IGZvcmJpZGRlbiBwcm9wZXJ0aWVzLlxuICAgIGtleXMuZGVsZXRlKCdwcm90b3R5cGUnKTtcblxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5wcm90b3R5cGUpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGtleXMuZGVsZXRlKGtleSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBuYXRpdmVGdW5jdGlvbiA9IChmbjogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93bik6IGJvb2xlYW4gPT5cbiAgICAgIHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyAmJiAoJycgKyBmbikuZW5kc1dpdGgoJygpIHsgW25hdGl2ZSBjb2RlXSB9Jyk7XG5cbiAgICBjb25zdCBwb255ZmlsbEZ1bmN0aW9uRXF1YWxzID0gKHg6ICguLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd24sIHk6ICguLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd24pID0+XG4gICAgICAobmF0aXZlRnVuY3Rpb24oeCkgJiYgbmF0aXZlRnVuY3Rpb24oeSkpIHx8IHggPT09IHk7XG5cbiAgICAvLyBXZSBoYXZlIGZpbHRlcmVkIG91dCBhbGwgZm9yYmlkZGVuIHByb3BlcnRpZXMuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgY29uc3QgZGlmZmVyZW50S2V5cyA9IEFycmF5LmZyb20oa2V5cykuZmlsdGVyKGtleSA9PiAhcG9ueWZpbGxGdW5jdGlvbkVxdWFscyhzdG9yZVBvbnlmaWxsW2tleV0sIHBvbnlmaWxsW2tleV0pKTtcblxuICAgIGlmIChkaWZmZXJlbnRLZXlzLmxlbmd0aCkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgYm90ZnJhbWV3b3JrLXdlYmNoYXQ6IFBvbnlmaWxsIHVzZWQgaW4gc3RvcmUgc2hvdWxkIG1hdGNoIHRoZSBwb255ZmlsbCBwYXNzZWQgaW4gcHJvcHM6ICR7ZGlmZmVyZW50S2V5cy5qb2luKFxuICAgICAgICAgICcsICdcbiAgICAgICAgKX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXh0U3RvcmU7XG4gIH0sIFtwb255ZmlsbCwgc3RvcmVdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBjb250ZXh0PXtXZWJDaGF0UmVkdXhDb250ZXh0fSBzdG9yZT17bWVtb2l6ZWRTdG9yZX0+XG4gICAgICA8QWN0aXZpdHlLZXllckNvbXBvc2VyPlxuICAgICAgICA8QWN0aXZpdHlBY2tub3dsZWRnZW1lbnRDb21wb3Nlcj5cbiAgICAgICAgICA8Q29tcG9zZXJDb3JlIG9uVGVsZW1ldHJ5PXtvblRlbGVtZXRyeX0gey4uLnByb3BzfSAvPlxuICAgICAgICA8L0FjdGl2aXR5QWNrbm93bGVkZ2VtZW50Q29tcG9zZXI+XG4gICAgICA8L0FjdGl2aXR5S2V5ZXJDb21wb3Nlcj5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuQ29tcG9zZXJXaXRoU3RvcmUuZGVmYXVsdFByb3BzID0ge1xuICBvblRlbGVtZXRyeTogdW5kZWZpbmVkLFxuICBzdG9yZTogdW5kZWZpbmVkXG59O1xuXG5Db21wb3NlcldpdGhTdG9yZS5wcm9wVHlwZXMgPSB7XG4gIG9uVGVsZW1ldHJ5OiBQcm9wVHlwZXMuZnVuYyxcbiAgc3RvcmU6IFByb3BUeXBlcy5hbnlcbn07XG5cbmNvbnN0IENvbXBvc2VyID0gKHsgaW50ZXJuYWxSZW5kZXJFcnJvckJveCwgb25UZWxlbWV0cnksIHBvbnlmaWxsLCAuLi5wcm9wcyB9OiBDb21wb3NlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGUoKTtcblxuICBjb25zdCBoYW5kbGVFcnJvciA9IHVzZUNhbGxiYWNrKFxuICAgIGVycm9yID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2JvdGZyYW1ld29yay13ZWJjaGF0OiBVbmNhdWdodCBleGNlcHRpb24nLCB7IGVycm9yIH0pO1xuXG4gICAgICBvblRlbGVtZXRyeSAmJlxuICAgICAgICBvblRlbGVtZXRyeShjcmVhdGVDdXN0b21FdmVudCgnZXhjZXB0aW9uJywgeyBlcnJvciwgZmF0YWw6IHRydWUgfSkgYXMgVGVsZW1ldHJ5RXhjZXB0aW9uTWVhc3VyZW1lbnRFdmVudCk7XG4gICAgICBzZXRFcnJvcihlcnJvcik7XG4gICAgfSxcbiAgICBbb25UZWxlbWV0cnksIHNldEVycm9yXVxuICApO1xuXG4gIHJldHVybiBlcnJvciA/IChcbiAgICAhIWludGVybmFsUmVuZGVyRXJyb3JCb3ggJiYgaW50ZXJuYWxSZW5kZXJFcnJvckJveCh7IGVycm9yLCB0eXBlOiAndW5jYXVnaHQgZXhjZXB0aW9uJyB9KVxuICApIDogKFxuICAgIDxFcnJvckJvdW5kYXJ5IG9uRXJyb3I9e2hhbmRsZUVycm9yfT5cbiAgICAgIDxQb255ZmlsbENvbXBvc2VyIHBvbnlmaWxsPXtwb255ZmlsbH0+XG4gICAgICAgIDxDb21wb3NlcldpdGhTdG9yZSBvblRlbGVtZXRyeT17b25UZWxlbWV0cnl9IHsuLi5wcm9wc30gLz5cbiAgICAgIDwvUG9ueWZpbGxDb21wb3Nlcj5cbiAgICA8L0Vycm9yQm91bmRhcnk+XG4gICk7XG59O1xuXG5Db21wb3Nlci5kZWZhdWx0UHJvcHMgPSB7XG4gIC4uLkNvbXBvc2VyV2l0aFN0b3JlLmRlZmF1bHRQcm9wcyxcbiAgaW50ZXJuYWxSZW5kZXJFcnJvckJveDogdW5kZWZpbmVkLFxuICBvblRlbGVtZXRyeTogdW5kZWZpbmVkLFxuICBwb255ZmlsbDogdW5kZWZpbmVkXG59O1xuXG5Db21wb3Nlci5wcm9wVHlwZXMgPSB7XG4gIC4uLkNvbXBvc2VyV2l0aFN0b3JlLnByb3BUeXBlcyxcbiAgaW50ZXJuYWxSZW5kZXJFcnJvckJveDogUHJvcFR5cGVzLmFueSxcbiAgb25UZWxlbWV0cnk6IFByb3BUeXBlcy5mdW5jLFxuICBwb255ZmlsbDogUHJvcFR5cGVzLmFueVxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29tcG9zZXI7XG5cbmV4cG9ydCB0eXBlIHsgQ29tcG9zZXJQcm9wcyB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSx3QkFBQSxHQUFBQyxPQUFBO0FBaUNBLElBQUFDLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLFdBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGVBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUdBLElBQUFPLGFBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLHVCQUFBLEdBQUFOLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBUyxzQkFBQSxHQUFBUCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVUscUNBQUEsR0FBQVIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFXLGdDQUFBLEdBQUFULHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBWSxzQkFBQSxHQUFBVixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFB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
|