@envive-ai/react-hooks 0.3.4 → 0.3.6
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/dist/application/models/chatElementDisplayLocationV3.cjs +7 -1
- package/dist/application/models/chatElementDisplayLocationV3.d.cts +7 -1
- package/dist/application/models/chatElementDisplayLocationV3.d.ts +7 -1
- package/dist/application/models/chatElementDisplayLocationV3.js +7 -1
- package/dist/application/models/featureGates.cjs +6 -2
- package/dist/application/models/featureGates.d.cts +6 -2
- package/dist/application/models/featureGates.d.ts +6 -2
- package/dist/application/models/featureGates.js +6 -2
- package/dist/application/models/guards/api/isApiPDPEventAttributes.cjs +2 -2
- package/dist/application/models/guards/api/isApiPDPEventAttributes.js +2 -2
- package/dist/application/utils/elementObserver.d.cts +2 -2
- package/dist/application/utils/elementObserver.d.ts +2 -2
- package/dist/atoms/app/index.cjs +3 -1
- package/dist/atoms/app/index.d.cts +3 -3
- package/dist/atoms/app/index.d.ts +9 -9
- package/dist/atoms/app/index.js +3 -3
- package/dist/atoms/app/variant.cjs +2 -1
- package/dist/atoms/app/variant.d.cts +17 -9
- package/dist/atoms/app/variant.d.ts +17 -9
- package/dist/atoms/app/variant.js +2 -2
- package/dist/atoms/chat/chatState.d.cts +18 -18
- package/dist/atoms/chat/chatState.d.ts +18 -18
- package/dist/atoms/chat/form.d.cts +2 -2
- package/dist/atoms/chat/form.d.ts +2 -2
- package/dist/atoms/chat/index.d.cts +3 -3
- package/dist/atoms/chat/index.d.ts +1 -1
- package/dist/atoms/chat/lastMessage.d.cts +2 -2
- package/dist/atoms/chat/lastMessage.d.ts +2 -2
- package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
- package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
- package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
- package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
- package/dist/atoms/chat/replies.d.cts +3 -3
- package/dist/atoms/chat/replies.d.ts +3 -3
- package/dist/atoms/chat/suggestions.d.cts +2 -2
- package/dist/atoms/chat/suggestions.d.ts +2 -2
- package/dist/atoms/envive/enviveConfig.cjs +1 -11
- package/dist/atoms/envive/enviveConfig.js +1 -11
- package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
- package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
- package/dist/atoms/org/customerService.d.cts +6 -6
- package/dist/atoms/org/customerService.d.ts +6 -6
- package/dist/atoms/org/graphqlConfig.d.cts +4 -4
- package/dist/atoms/org/graphqlConfig.d.ts +4 -4
- package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
- package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
- package/dist/atoms/org/orgAnalyticsConfig.d.cts +5 -5
- package/dist/atoms/org/orgAnalyticsConfig.d.ts +5 -5
- package/dist/atoms/search/chatSearch.d.cts +17 -17
- package/dist/atoms/search/chatSearch.d.ts +17 -17
- package/dist/atoms/search/productRetrievalAPI.cjs +1 -7
- package/dist/atoms/search/productRetrievalAPI.js +1 -7
- package/dist/atoms/search/productRetrievalAdapter.cjs +4 -4
- package/dist/atoms/search/productRetrievalAdapter.js +4 -4
- package/dist/atoms/search/searchAPI.d.cts +13 -13
- package/dist/atoms/search/searchAPI.d.ts +13 -13
- package/dist/atoms/search/utils.d.cts +1 -1
- package/dist/atoms/widget/chatPreviewLoading.d.cts +2 -2
- package/dist/contexts/enviveContext/enviveContext.cjs +21 -15
- package/dist/contexts/enviveContext/enviveContext.d.cts +4 -1
- package/dist/contexts/enviveContext/enviveContext.d.ts +4 -1
- package/dist/contexts/enviveContext/enviveContext.js +21 -15
- package/dist/contexts/graphqlContext/graphqlContext.cjs +86 -5
- package/dist/contexts/graphqlContext/graphqlContext.js +86 -5
- package/dist/contexts/graphqlContext/mockV3Config.cjs +56 -14
- package/dist/contexts/graphqlContext/mockV3Config.js +56 -14
- package/dist/contexts/hardcopyContext/hardcopyContext.cjs +33 -20
- package/dist/contexts/hardcopyContext/hardcopyContext.d.cts +2 -2
- package/dist/contexts/hardcopyContext/hardcopyContext.d.ts +2 -2
- package/dist/contexts/hardcopyContext/hardcopyContext.js +33 -20
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.cjs +11 -9
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.d.cts +2 -1
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.d.ts +2 -1
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.js +11 -9
- package/dist/contexts/pageContext/index.cjs +1 -0
- package/dist/contexts/pageContext/index.d.cts +2 -2
- package/dist/contexts/pageContext/index.d.ts +2 -2
- package/dist/contexts/pageContext/index.js +2 -2
- package/dist/contexts/pageContext/mapping.cjs +91 -1
- package/dist/contexts/pageContext/mapping.d.cts +5 -2
- package/dist/contexts/pageContext/mapping.d.ts +5 -2
- package/dist/contexts/pageContext/mapping.js +90 -2
- package/dist/contexts/pageContext/pageContext.cjs +33 -5
- package/dist/contexts/pageContext/pageContext.d.cts +2 -1
- package/dist/contexts/pageContext/pageContext.d.ts +2 -1
- package/dist/contexts/pageContext/pageContext.js +34 -6
- package/dist/contexts/pageContext/types.d.cts +2 -2
- package/dist/contexts/pageContext/types.d.ts +2 -2
- package/dist/contexts/salesAgentContext/chatAPI.cjs +4 -1
- package/dist/contexts/salesAgentContext/chatAPI.d.cts +4 -1
- package/dist/contexts/salesAgentContext/chatAPI.d.ts +4 -1
- package/dist/contexts/salesAgentContext/chatAPI.js +4 -1
- package/dist/contexts/salesAgentContext/index.d.cts +2 -2
- package/dist/contexts/salesAgentContext/index.d.ts +2 -2
- package/dist/contexts/salesAgentContext/salesAgentContext.cjs +4 -2
- package/dist/contexts/salesAgentContext/salesAgentContext.d.cts +2 -2
- package/dist/contexts/salesAgentContext/salesAgentContext.d.ts +2 -2
- package/dist/contexts/salesAgentContext/salesAgentContext.js +4 -2
- package/dist/contexts/salesAgentContext/salesAgentService.cjs +6 -3
- package/dist/contexts/salesAgentContext/salesAgentService.js +7 -4
- package/dist/contexts/systemSettingsContext/systemSettingsContext.d.ts +2 -2
- package/dist/contexts/types.d.cts +1 -1
- package/dist/contexts/types.d.ts +1 -1
- package/dist/contexts/typesV3.cjs +20 -17
- package/dist/contexts/typesV3.d.cts +39 -12
- package/dist/contexts/typesV3.d.ts +39 -12
- package/dist/contexts/typesV3.js +5 -2
- package/dist/hooks/ChatToggle/useChatToggle.cjs +1 -1
- package/dist/hooks/ChatToggle/useChatToggle.d.cts +5 -5
- package/dist/hooks/ChatToggle/useChatToggle.d.ts +5 -5
- package/dist/hooks/ChatToggle/useChatToggle.js +1 -1
- package/dist/hooks/ElementObserver/useElementObserver.cjs +10 -10
- package/dist/hooks/ElementObserver/useElementObserver.js +10 -10
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.ts +2 -2
- package/dist/hooks/utils.d.cts +1 -1
- package/dist/hooks/utils.d.ts +1 -1
- package/dist/merchants/domInsertion.cjs +1 -1
- package/dist/merchants/domInsertion.d.cts +1 -1
- package/dist/merchants/domInsertion.d.ts +1 -1
- package/dist/merchants/domInsertion.js +1 -1
- package/dist/packages/components-v3/dist/ChatHeader/ChatHeader.cjs +2 -0
- package/dist/packages/components-v3/dist/ChatHeader/ChatHeader.js +4 -0
- package/dist/packages/components-v3/dist/ChatHeader/components/CloseButton.cjs +16 -0
- package/dist/packages/components-v3/dist/ChatHeader/components/CloseButton.js +17 -0
- package/dist/packages/components-v3/dist/ChatHeader/components/Handle.cjs +6 -0
- package/dist/packages/components-v3/dist/ChatHeader/components/Handle.js +8 -0
- package/dist/packages/components-v3/dist/ChatHeader/components/Layout.cjs +4 -0
- package/dist/packages/components-v3/dist/ChatHeader/components/Layout.js +6 -0
- package/dist/packages/components-v3/dist/ChatHeader/components/Logo.cjs +3 -0
- package/dist/packages/components-v3/dist/ChatHeader/components/Logo.js +5 -0
- package/dist/packages/components-v3/dist/ChatHeader/components/Toggle.cjs +7 -0
- package/dist/packages/components-v3/dist/ChatHeader/components/Toggle.js +9 -0
- package/dist/packages/components-v3/dist/ChatHeader/components/ToggleItem.cjs +6 -0
- package/dist/packages/components-v3/dist/ChatHeader/components/ToggleItem.js +8 -0
- package/dist/packages/components-v3/dist/ChatHeader/components/index.cjs +6 -0
- package/dist/packages/components-v3/dist/ChatHeader/components/index.js +8 -0
- package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetCloseButtonProperties.cjs +22 -0
- package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetCloseButtonProperties.js +23 -0
- package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetHandleProperties.cjs +58 -0
- package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetHandleProperties.js +59 -0
- package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetLayoutProperties.cjs +8 -0
- package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetLayoutProperties.js +9 -0
- package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetToggleOptionProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetToggleOptionProperties.js +3 -0
- package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetToggleProperties.cjs +12 -0
- package/dist/packages/components-v3/dist/ChatHeader/hooks/useGetToggleProperties.js +13 -0
- package/dist/packages/components-v3/dist/ChatHeader/index.cjs +2 -0
- package/dist/packages/components-v3/dist/ChatHeader/index.js +4 -0
- package/dist/packages/components-v3/dist/ChatHeader/types/index.cjs +11 -0
- package/dist/packages/components-v3/dist/ChatHeader/types/index.js +10 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/Layout.cjs +1 -1
- package/dist/packages/components-v3/dist/ImageGallery/components/Layout.js +1 -1
- package/dist/packages/components-v3/dist/PromptButton/PromptButton.cjs +1 -1
- package/dist/packages/components-v3/dist/PromptButton/PromptButton.js +1 -1
- package/dist/packages/components-v3/dist/PromptButton/components/Layout.cjs +1 -1
- package/dist/packages/components-v3/dist/PromptButton/components/Layout.js +1 -1
- package/dist/packages/components-v3/dist/PromptButton/hooks/useGetLayoutBaseProperties.cjs +1 -1
- package/dist/packages/components-v3/dist/PromptButton/hooks/useGetLayoutBaseProperties.js +1 -1
- package/dist/packages/components-v3/dist/Tokens/index.cjs +11 -0
- package/dist/packages/components-v3/dist/Tokens/index.js +13 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/WelcomeMessage.cjs +2 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/WelcomeMessage.js +4 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/components/Container.cjs +14 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/components/Container.js +15 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/components/SparkleIcon.cjs +3 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/components/SparkleIcon.js +5 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/components/Text.cjs +3 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/components/Text.js +5 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/components/Title.cjs +3 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/components/Title.js +5 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/components/index.cjs +4 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/components/index.js +6 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/hooks/useGetContainerProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/hooks/useGetContainerProperties.js +3 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/hooks/useGetSparkleIconProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/hooks/useGetSparkleIconProperties.js +3 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/index.cjs +2 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/index.js +4 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/types/types.cjs +14 -0
- package/dist/packages/components-v3/dist/WelcomeMessage/types/types.js +14 -0
- package/dist/packages/components-v3/dist/src/models/colorsConfig.cjs +26 -0
- package/dist/packages/components-v3/dist/src/models/colorsConfig.js +25 -0
- package/dist/packages/components-v3/dist/tokens/aspectRatio/aspectRatio.cjs +16 -0
- package/dist/packages/components-v3/dist/tokens/aspectRatio/aspectRatio.js +17 -0
- package/dist/packages/components-v3/dist/tokens/breakpoints/breakpoints.cjs +25 -0
- package/dist/packages/components-v3/dist/tokens/breakpoints/breakpoints.js +23 -0
- package/dist/packages/components-v3/dist/tokens/colors/colors.cjs +51 -0
- package/dist/packages/components-v3/dist/tokens/colors/colors.js +51 -0
- package/dist/packages/components-v3/dist/tokens/radius/radius.cjs +64 -0
- package/dist/packages/components-v3/dist/tokens/radius/radius.js +65 -0
- package/dist/packages/components-v3/dist/tokens/theme/theme.cjs +13 -0
- package/dist/packages/components-v3/dist/tokens/theme/theme.js +12 -0
- package/dist/packages/components-v3/dist/tokens/typography/fontFamily.cjs +25 -0
- package/dist/packages/components-v3/dist/tokens/typography/fontFamily.js +25 -0
- package/dist/packages/components-v3/dist/tokens/typography/fontSize.cjs +37 -0
- package/dist/packages/components-v3/dist/tokens/typography/fontSize.js +38 -0
- package/dist/packages/components-v3/dist/tokens/typography/fontWeight.cjs +17 -0
- package/dist/packages/components-v3/dist/tokens/typography/fontWeight.js +18 -0
- package/dist/packages/components-v3/dist/tokens/typography/letterSpacing.cjs +15 -0
- package/dist/packages/components-v3/dist/tokens/typography/letterSpacing.js +16 -0
- package/dist/packages/components-v3/dist/tokens/typography/lineHeight.cjs +31 -0
- package/dist/packages/components-v3/dist/tokens/typography/lineHeight.js +32 -0
- package/dist/packages/components-v3/dist/tokens/typography/typography.cjs +5 -0
- package/dist/packages/components-v3/dist/tokens/typography/typography.js +7 -0
- package/dist/packages/components-v3/dist/tokens/utils.cjs +7 -0
- package/dist/packages/components-v3/dist/tokens/utils.js +6 -0
- package/dist/packages/components-v3/dist/utils/useResponsiveValue.cjs +2 -2
- package/dist/packages/components-v3/dist/utils/useResponsiveValue.js +2 -2
- package/dist/packages/icons/dist/IconCloseRounded.cjs +22 -0
- package/dist/packages/icons/dist/IconCloseRounded.js +22 -0
- package/dist/packages/icons/dist/IconCloseSharp.cjs +31 -0
- package/dist/packages/icons/dist/IconCloseSharp.js +31 -0
- package/dist/packages/icons/dist/IconCloseTransparent.cjs +24 -0
- package/dist/packages/icons/dist/IconCloseTransparent.js +24 -0
- package/dist/packages/icons/dist/Sparkles.cjs +8 -0
- package/dist/packages/icons/dist/Sparkles.js +9 -0
- package/dist/types/customerService.cjs +20 -0
- package/dist/types/customerService.js +19 -0
- package/package.json +1 -5
- package/src/application/models/chatElementDisplayLocationV3.ts +6 -0
- package/src/application/models/featureGates.ts +6 -1
- package/src/application/models/guards/api/isApiPDPEventAttributes.ts +5 -1
- package/src/atoms/app/index.ts +7 -1
- package/src/atoms/app/variant.ts +3 -2
- package/src/atoms/envive/enviveConfig.ts +0 -11
- package/src/atoms/search/productRetrievalAPI.ts +0 -8
- package/src/atoms/search/productRetrievalAdapter.ts +6 -10
- package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +0 -1
- package/src/contexts/enviveContext/enviveContext.tsx +9 -5
- package/src/contexts/graphqlContext/graphqlContext.tsx +128 -9
- package/src/contexts/graphqlContext/mockV3Config.ts +53 -12
- package/src/contexts/hardcopyContext/hardcopyContext.tsx +29 -13
- package/src/contexts/newOrgConfigContext/__tests__/newOrgConfigContext.test.tsx +234 -0
- package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +15 -8
- package/src/contexts/pageContext/__tests__/pageContext.test.tsx +119 -69
- package/src/contexts/pageContext/mapping.ts +184 -2
- package/src/contexts/pageContext/pageContext.tsx +30 -5
- package/src/contexts/pageContext/types.ts +1 -2
- package/src/contexts/salesAgentContext/chatAPI.ts +9 -0
- package/src/contexts/salesAgentContext/salesAgentContext.tsx +10 -3
- package/src/contexts/salesAgentContext/salesAgentService.ts +13 -1
- package/src/contexts/typesV3.ts +52 -20
- package/src/contexts/uiConfigContext/__tests__/uiConfigContext.test.tsx +14 -6
- package/src/contexts/widgetConfigContext/__tests__/widgetConfigContext.test.tsx +1 -1
- package/src/hooks/ChatToggle/useChatToggle.ts +4 -4
- package/src/hooks/ElementObserver/useElementObserver.ts +9 -9
- package/src/merchants/domInsertion.ts +0 -16
- package/dist/hooks/ChatToggleAnalytics/index.cjs +0 -3
- package/dist/hooks/ChatToggleAnalytics/index.d.cts +0 -2
- package/dist/hooks/ChatToggleAnalytics/index.d.ts +0 -2
- package/dist/hooks/ChatToggleAnalytics/index.js +0 -3
- package/dist/hooks/ChatToggleAnalytics/useChatToggleAnalytics.cjs +0 -19
- package/dist/hooks/ChatToggleAnalytics/useChatToggleAnalytics.d.cts +0 -9
- package/dist/hooks/ChatToggleAnalytics/useChatToggleAnalytics.d.ts +0 -9
- package/dist/hooks/ChatToggleAnalytics/useChatToggleAnalytics.js +0 -18
- package/dist/packages/components-v3/dist/packages/components-v3/tokens/breakpoints/breakpoints.cjs +0 -25
- package/dist/packages/components-v3/dist/packages/components-v3/tokens/breakpoints/breakpoints.js +0 -23
- package/src/application/utils/cdnUtils.ts +0 -8
- package/src/config/divIds.ts +0 -31
- package/src/config/locators/components/chat/entrypoints.ts +0 -13
- package/src/config/locators/components/chat/preview.ts +0 -12
- package/src/config/locators/components/report-issue.ts +0 -21
- package/src/config/socialProofClasses.ts +0 -12
- package/src/events/registerAnalyticsListeners.ts +0 -44
- package/src/hooks/ChatToggleAnalytics/index.ts +0 -1
- package/src/hooks/ChatToggleAnalytics/useChatToggleAnalytics.ts +0 -15
- package/src/types/FilterAttribute.ts +0 -32
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_contexts_types = require('../types.cjs');
|
|
2
3
|
const require_contexts_typesV3 = require('../typesV3.cjs');
|
|
3
4
|
const require_logger = require('../../application/logging/logger.cjs');
|
|
4
5
|
const require_config_versions = require('../../types/config-versions.cjs');
|
|
@@ -22,10 +23,87 @@ const colorsAndFrontendConfigQuery = () => `
|
|
|
22
23
|
getProductsConfigByVersion(version: $version) {
|
|
23
24
|
frontend { values }
|
|
24
25
|
colors { values }
|
|
26
|
+
v_three_config { values }
|
|
25
27
|
}
|
|
26
28
|
}
|
|
27
29
|
}
|
|
28
30
|
`;
|
|
31
|
+
const DEFAULT_PAGE_VARIANTS = [{
|
|
32
|
+
variantId: "plp",
|
|
33
|
+
variantType: "plp",
|
|
34
|
+
plpIdExtractor: "url-resolver-plp-id",
|
|
35
|
+
widgetMounting: [],
|
|
36
|
+
variantTests: [{ testType: require_contexts_types.PageVariantTestType.UrlResolver }]
|
|
37
|
+
}, {
|
|
38
|
+
variantId: "pdp",
|
|
39
|
+
variantType: "pdp",
|
|
40
|
+
productIdExtractor: "url-resolver-product-id",
|
|
41
|
+
widgetMounting: [],
|
|
42
|
+
variantTests: [{ testType: require_contexts_types.PageVariantTestType.UrlResolver }]
|
|
43
|
+
}];
|
|
44
|
+
const mapPositionToCamelCase = (position) => {
|
|
45
|
+
if (position === "bottom-left") return "bottomLeft";
|
|
46
|
+
if (position === "middle-left") return "middleLeft";
|
|
47
|
+
if (position === "middle-right") return "middleRight";
|
|
48
|
+
if (position === "bottom-right") return "bottomRight";
|
|
49
|
+
throw new Error(`Invalid position: ${position}`);
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* This function is used to do some additional cleanup of the v3 frontend config to ensure that the config is in the correct format.
|
|
53
|
+
*/
|
|
54
|
+
const v3FrontendConfigCleanup = (v3RootConfig) => {
|
|
55
|
+
const { uiConfigs } = v3RootConfig;
|
|
56
|
+
if (!uiConfigs) return v3RootConfig;
|
|
57
|
+
const { floatingButton, lookAndFeel } = uiConfigs;
|
|
58
|
+
if (!floatingButton || !lookAndFeel) return v3RootConfig;
|
|
59
|
+
const { fontSize, lineHeight } = lookAndFeel.typography;
|
|
60
|
+
return {
|
|
61
|
+
...v3RootConfig,
|
|
62
|
+
uiConfigs: {
|
|
63
|
+
...uiConfigs,
|
|
64
|
+
floatingButton: {
|
|
65
|
+
...floatingButton,
|
|
66
|
+
position: mapPositionToCamelCase(v3RootConfig.uiConfigs?.floatingButton?.position)
|
|
67
|
+
},
|
|
68
|
+
lookAndFeel: {
|
|
69
|
+
...lookAndFeel,
|
|
70
|
+
chatHeaderLogoDarkSrc: lookAndFeel.chatHeaderLogoDarkSrc || lookAndFeel.chatHeaderLogoSrc,
|
|
71
|
+
chatHeaderLogoLightSrc: lookAndFeel.chatHeaderLogoLightSrc || lookAndFeel.chatHeaderLogoSrc,
|
|
72
|
+
typography: {
|
|
73
|
+
...lookAndFeel.typography,
|
|
74
|
+
fontSize: {
|
|
75
|
+
b1: fontSize?.b1 || fontSize?.b_1,
|
|
76
|
+
b2: fontSize?.b2 || fontSize?.b_2,
|
|
77
|
+
b3: fontSize?.b3 || fontSize?.b_3,
|
|
78
|
+
b4: fontSize?.b4 || fontSize?.b_4,
|
|
79
|
+
b5: fontSize?.b5 || fontSize?.b_5,
|
|
80
|
+
h1: fontSize?.h1 || fontSize?.h_1,
|
|
81
|
+
h2: fontSize?.h2 || fontSize?.h_2,
|
|
82
|
+
h3: fontSize?.h3 || fontSize?.h_3,
|
|
83
|
+
l1: fontSize?.l1 || fontSize?.l_1,
|
|
84
|
+
l2: fontSize?.l2 || fontSize?.l_2,
|
|
85
|
+
t1: fontSize?.t1 || fontSize?.t_1,
|
|
86
|
+
t2: fontSize?.t2 || fontSize?.t_2,
|
|
87
|
+
t3: fontSize?.t3 || fontSize?.t_3
|
|
88
|
+
},
|
|
89
|
+
lineHeight: {
|
|
90
|
+
...lookAndFeel.typography.lineHeight,
|
|
91
|
+
"114": lineHeight?.lh_114 || lineHeight?.[114],
|
|
92
|
+
"116": lineHeight?.lh_116 || lineHeight?.[116],
|
|
93
|
+
"118": lineHeight?.lh_118 || lineHeight?.[118],
|
|
94
|
+
"120": lineHeight?.lh_120 || lineHeight?.[120],
|
|
95
|
+
"124": lineHeight?.lh_124 || lineHeight?.[124],
|
|
96
|
+
"128": lineHeight?.lh_128 || lineHeight?.[128],
|
|
97
|
+
"130": lineHeight?.lh_130 || lineHeight?.[130],
|
|
98
|
+
"133": lineHeight?.lh_133 || lineHeight?.[133],
|
|
99
|
+
"140": lineHeight?.lh_140 || lineHeight?.[140],
|
|
100
|
+
"148": lineHeight?.lh_148 || lineHeight?.[148]
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
};
|
|
29
107
|
const GraphQLProvider = ({ children, requestV3Config = false, mockV3ConfigToDeprecatedConfig = false }) => {
|
|
30
108
|
const apiKey = (0, jotai.useAtomValue)(require_enviveConfig.orgLevelApiKeyAtom);
|
|
31
109
|
const baseUrl = (0, jotai.useAtomValue)(require_enviveConfig.baseUrlAtom);
|
|
@@ -59,8 +137,8 @@ const GraphQLProvider = ({ children, requestV3Config = false, mockV3ConfigToDepr
|
|
|
59
137
|
try {
|
|
60
138
|
const query = await colorsAndFrontendConfigQuery();
|
|
61
139
|
if (!query) throw new Error("Colors and frontend config query is not defined");
|
|
62
|
-
const v3RootConfig = (await executeQuery(query)).me.getProductsConfigByVersion?.
|
|
63
|
-
const v3FrontendConfig = require_snakeToCamelTransformer.transformSnakeToCamel(v3RootConfig);
|
|
140
|
+
const v3RootConfig = (await executeQuery(query)).me.getProductsConfigByVersion?.v_three_config?.values;
|
|
141
|
+
const v3FrontendConfig = v3FrontendConfigCleanup(require_snakeToCamelTransformer.transformSnakeToCamel(v3RootConfig));
|
|
64
142
|
const v3MountingConfigs = (require_snakeToCamelTransformer.transformSnakeToCamel(v3RootConfig?.mounting_configs) ?? []).reduce((acc, { key, config }) => {
|
|
65
143
|
acc[key] = require_validateGraphQLFrontendConfig.validateAndTransformMountingConfig(config, key);
|
|
66
144
|
return acc;
|
|
@@ -70,7 +148,7 @@ const GraphQLProvider = ({ children, requestV3Config = false, mockV3ConfigToDepr
|
|
|
70
148
|
widgetConfigId,
|
|
71
149
|
...rest
|
|
72
150
|
}]));
|
|
73
|
-
const v3pageVariants = v3RootConfig?.page_variants.map(require_validateGraphQLFrontendConfig.validateAndTransformPageVariants);
|
|
151
|
+
const v3pageVariants = Array.isArray(v3RootConfig?.page_variants) ? v3RootConfig?.page_variants.map(require_validateGraphQLFrontendConfig.validateAndTransformPageVariants) : DEFAULT_PAGE_VARIANTS;
|
|
74
152
|
const v3ColorsConfig = require_snakeToCamelTransformer.transformSnakeToCamel(v3RootConfig?.colors?.values);
|
|
75
153
|
if (!v3RootConfig && mockV3ConfigToDeprecatedConfig) return {
|
|
76
154
|
colorsConfig: !window.location.href.includes("globals=merchant") ? require_mockV3Config.mockV3ColorsConfig : v3ColorsConfig,
|
|
@@ -78,7 +156,10 @@ const GraphQLProvider = ({ children, requestV3Config = false, mockV3ConfigToDepr
|
|
|
78
156
|
};
|
|
79
157
|
return {
|
|
80
158
|
colorsConfig: v3ColorsConfig,
|
|
81
|
-
frontendConfig:
|
|
159
|
+
frontendConfig: {
|
|
160
|
+
...v3FrontendConfig,
|
|
161
|
+
widgetConfigs: v3WidgetConfigs
|
|
162
|
+
},
|
|
82
163
|
orgPageConfig: {
|
|
83
164
|
pageVariants: v3pageVariants,
|
|
84
165
|
widgetConfigs: v3WidgetConfigs,
|
|
@@ -158,4 +239,4 @@ const useGraphQLClient = () => {
|
|
|
158
239
|
//#endregion
|
|
159
240
|
exports.GraphQLProvider = GraphQLProvider;
|
|
160
241
|
exports.useGraphQLClient = useGraphQLClient;
|
|
161
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbENvbnRleHQuY2pzIiwibmFtZXMiOlsiY29uZmlnVmVyc2lvbiIsIm9yZ0xldmVsQXBpS2V5QXRvbSIsImJhc2VVcmxBdG9tIiwidmFsaWRhdGVHcmFwaFFMT3JnSWQiLCJnZXRNZXJjaGFudE9yZ0lkUXVlcnkiLCJ0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwiLCJ2YWxpZGF0ZUFuZFRyYW5zZm9ybU1vdW50aW5nQ29uZmlnIiwidmFsaWRhdGVBbmRUcmFuc2Zvcm1QYWdlVmFyaWFudHMiLCJtb2NrVjNDb2xvcnNDb25maWciLCJtb2NrVjNGcm9udGVuZENvbmZpZyIsIkNvbmZpZ1ZlcnNpb25FbnVtIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRleHRzL2dyYXBocWxDb250ZXh0L2dyYXBocWxDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlLCBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IGJhc2VVcmxBdG9tLCBvcmdMZXZlbEFwaUtleUF0b20gfSBmcm9tICdzcmMvYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZyc7XG5pbXBvcnQgeyBnZXRNZXJjaGFudE9yZ0lkUXVlcnkgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwvcXVlcmllcy9nZXRNZXJjaGFudE9yZ0lkUXVlcnknO1xuaW1wb3J0IHsgdmFsaWRhdGVHcmFwaFFMT3JnSWQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVHcmFwaFFMT3JnSWQnO1xuaW1wb3J0IHtcbiAgR2V0TWVyY2hhbnRDb2xvcnNRdWVyeURhdGEsXG4gIEdldE1lcmNoYW50RnJvbnRlbmRDb25maWdRdWVyeURhdGEsXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbCc7XG5pbXBvcnQgeyBDb2xvck1hcHBpbmcgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbG9yc0NvbmZpZyc7XG5pbXBvcnQgeyBGcm9udGVuZENvbmZpZyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZnJvbnRlbmRDb25maWcnO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHsgY29uZmlnVmVyc2lvbiB9IGZyb20gJ3NyYy90eXBlcy9jb25maWctdmVyc2lvbnMnO1xuaW1wb3J0IHtcbiAgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwLFxuICB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtTW91bnRpbmdDb25maWcsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtUGFnZVZhcmlhbnRzLFxufSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IEZyb250ZW5kQ29uZmlnVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2Zyb250ZW5kQ29uZmlnVjMnO1xuaW1wb3J0IHsgQ29sb3JNYXBwaW5nVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbG9yc0NvbmZpZ1YzJztcbmltcG9ydCB7IG1vY2tWM0NvbG9yc0NvbmZpZywgbW9ja1YzRnJvbnRlbmRDb25maWcgfSBmcm9tICcuL21vY2tWM0NvbmZpZyc7XG5pbXBvcnQgeyBDb25maWdWZXJzaW9uRW51bSwgV2lkZ2V0Q29uZmlnVjMgfSBmcm9tICcuLi90eXBlc1YzJztcbmltcG9ydCB7IE9yZ1BhZ2VDb25maWcsIFBhZ2VWYXJpYW50Q29uZmlnLCBXaWRnZXRNb3VudGluZ0NvbmZpZyB9IGZyb20gJy4uL3R5cGVzJztcblxuaW50ZXJmYWNlIEJhc2VNZUNvbmZpZ1F1ZXJ5UmVzcG9uc2Uge1xuICBtZToge1xuICAgIG9yZz86IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBnZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbj86IHtcbiAgICAgIGZyb250ZW5kPzoge1xuICAgICAgICB2YWx1ZXM6IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxHZXRNZXJjaGFudEZyb250ZW5kQ29uZmlnUXVlcnlEYXRhPjtcbiAgICAgIH07XG4gICAgICBjb2xvcnM/OiB7IHZhbHVlczogQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEdldE1lcmNoYW50Q29sb3JzUXVlcnlEYXRhPiB9O1xuICAgIH07XG4gIH07XG59XG5leHBvcnQgdHlwZSBDb2xvcnNDb25maWdSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxDb2xvck1hcHBpbmc+O1xuZXhwb3J0IHR5cGUgRnJvbnRlbmRDb25maWdSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxGcm9udGVuZENvbmZpZz47XG5leHBvcnQgdHlwZSBDb2xvcnNDb25maWdWM1Jlc3BvbnNlID0gQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPENvbG9yTWFwcGluZ1YzPjtcbmV4cG9ydCB0eXBlIEZyb250ZW5kQ29uZmlnVjNSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxGcm9udGVuZENvbmZpZ1YzPjtcblxuZXhwb3J0IHR5cGUgR3JhcGhRbENvbmZpZ1ZhbHVlcyA9IHtcbiAgY29sb3JzQ29uZmlnPzogQ29sb3JzQ29uZmlnUmVzcG9uc2UgfCBDb2xvcnNDb25maWdWM1Jlc3BvbnNlO1xuICBmcm9udGVuZENvbmZpZz86IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxGcm9udGVuZENvbmZpZyB8IEZyb250ZW5kQ29uZmlnVjM+O1xuICBvcmdQYWdlQ29uZmlnPzogT3JnUGFnZUNvbmZpZztcbn07XG5cbmludGVyZmFjZSBHcmFwaFFMQ29udGV4dFZhbHVlIHtcbiAgZXhlY3V0ZVF1ZXJ5OiA8VD4ocXVlcnk6IHN0cmluZywgdmFyaWFibGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IFByb21pc2U8VD47XG4gIGdldE9yZ0lkOiAoKSA9PiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD47XG4gIGdldENvbG9yc0FuZEZyb250ZW5kQ29uZmlnOiAoKSA9PiBQcm9taXNlPEdyYXBoUWxDb25maWdWYWx1ZXM+O1xuICBnZXRWM0NvbmZpZzogKCkgPT4gUHJvbWlzZTxHcmFwaFFsQ29uZmlnVmFsdWVzPjtcbiAgZ2V0Q29uZmlnOiAoKSA9PiBQcm9taXNlPEdyYXBoUWxDb25maWdWYWx1ZXM+O1xuICBpc1JlYWR5OiBib29sZWFuO1xufVxuXG5jb25zdCBHcmFwaFFMQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8R3JhcGhRTENvbnRleHRWYWx1ZSB8IG51bGw+KG51bGwpO1xuXG5jb25zdCBjb2xvcnNBbmRGcm9udGVuZENvbmZpZ1F1ZXJ5ID0gKCkgPT4gYFxuICBxdWVyeSAoJHZlcnNpb246IFN0cmluZyA9IFwiJHtjb25maWdWZXJzaW9uKCl9XCIpIHtcbiAgICBtZSB7XG4gICAgICBnZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbih2ZXJzaW9uOiAkdmVyc2lvbikge1xuICAgICAgICBmcm9udGVuZCB7IHZhbHVlcyB9XG4gICAgICAgIGNvbG9ycyB7IHZhbHVlcyB9XG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG50eXBlIEdyYXBoUUxQcm92aWRlclByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICByZXF1ZXN0VjNDb25maWc/OiBib29sZWFuO1xuICBtb2NrVjNDb25maWdUb0RlcHJlY2F0ZWRDb25maWc/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IEdyYXBoUUxQcm92aWRlciA9ICh7XG4gIGNoaWxkcmVuLFxuICByZXF1ZXN0VjNDb25maWcgPSBmYWxzZSxcbiAgbW9ja1YzQ29uZmlnVG9EZXByZWNhdGVkQ29uZmlnID0gZmFsc2UsXG59OiBHcmFwaFFMUHJvdmlkZXJQcm9wcykgPT4ge1xuICBjb25zdCBhcGlLZXkgPSB1c2VBdG9tVmFsdWUob3JnTGV2ZWxBcGlLZXlBdG9tKTtcbiAgY29uc3QgYmFzZVVybCA9IHVzZUF0b21WYWx1ZShiYXNlVXJsQXRvbSk7XG4gIGNvbnN0IGlzUmVhZHkgPSB1c2VNZW1vKCgpID0+IEJvb2xlYW4oYXBpS2V5ICYmIGJhc2VVcmwpLCBbYXBpS2V5LCBiYXNlVXJsXSk7XG5cbiAgY29uc3QgZXhlY3V0ZVF1ZXJ5ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHF1ZXJ5OiBzdHJpbmcsIHZhcmlhYmxlcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gICAgICBpZiAoIWlzUmVhZHkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHcmFwaFFMIGNsaWVudCBub3QgcmVhZHkgLSBtaXNzaW5nIGFwaUtleSBvciBiYXNlVXJsJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7YmFzZVVybH0vdjEvZ3JhcGhxbGAsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthcGlLZXl9YCxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBxdWVyeSwgdmFyaWFibGVzIH0pLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBHcmFwaFFMIHJlcXVlc3QgZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICAgIGlmIChyZXN1bHQuZXJyb3JzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgR3JhcGhRTCBlcnJvcnM6ICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0LmVycm9ycyl9YCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgICB9LFxuICAgIFthcGlLZXksIGJhc2VVcmwsIGlzUmVhZHldLFxuICApO1xuXG4gIGNvbnN0IGdldE9yZ0lkID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZXhlY3V0ZVF1ZXJ5KGdldE1lcmNoYW50T3JnSWRRdWVyeSk7XG4gICAgcmV0dXJuIHZhbGlkYXRlR3JhcGhRTE9yZ0lkKHJlc3BvbnNlLm1lLm9yZz8uaWQpO1xuICB9LCBbZXhlY3V0ZVF1ZXJ5XSk7XG5cbiAgY29uc3QgZ2V0VjNDb25maWcgPSB1c2VDYWxsYmFjayhhc3luYyAoKTogUHJvbWlzZTxHcmFwaFFsQ29uZmlnVmFsdWVzPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgY29sb3JzQW5kRnJvbnRlbmRDb25maWdRdWVyeSgpO1xuICAgICAgaWYgKCFxdWVyeSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbG9ycyBhbmQgZnJvbnRlbmQgY29uZmlnIHF1ZXJ5IGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGV4ZWN1dGVRdWVyeShxdWVyeSk7XG5cbiAgICAgIC8vIFdlIG1heSB1cGRhdGUgdGhpcyByb290IGNvbmZpZyBsb2NhdGlvbiBpbiB0aGUgZnV0dXJlXG4gICAgICBjb25zdCB2M1Jvb3RDb25maWcgPVxuICAgICAgICByZXNwb25zZS5tZS5nZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbj8uZnJvbnRlbmQ/LnZhbHVlcz8udWlfY29uZmlncz8udl90aHJlZV9jb25maWc7XG5cbiAgICAgIGNvbnN0IHYzRnJvbnRlbmRDb25maWcgPSB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwodjNSb290Q29uZmlnKSBhcyBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2U7XG5cbiAgICAgIGNvbnN0IHYzTW91bnRpbmdDb25maWdzQXJyYXkgPSAodHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZz8ubW91bnRpbmdfY29uZmlncykgPz9cbiAgICAgICAgW10pIGFzIHVua25vd24gYXMgeyBrZXk6IHN0cmluZzsgY29uZmlnOiBXaWRnZXRNb3VudGluZ0NvbmZpZyB9W107XG5cbiAgICAgIGNvbnN0IHYzTW91bnRpbmdDb25maWdzID0gdjNNb3VudGluZ0NvbmZpZ3NBcnJheS5yZWR1Y2UoXG4gICAgICAgIChhY2MsIHsga2V5LCBjb25maWcgfSkgPT4ge1xuICAgICAgICAgIGFjY1trZXldID0gdmFsaWRhdGVBbmRUcmFuc2Zvcm1Nb3VudGluZ0NvbmZpZyhjb25maWcsIGtleSk7XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSxcbiAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgV2lkZ2V0TW91bnRpbmdDb25maWc+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgdjN3aWRnZXRDb25maWdzQXJyYXkgPSAodHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZz8ud2lkZ2V0X2NvbmZpZ3MpID8/XG4gICAgICAgIFtdKSBhcyB1bmtub3duIGFzIFdpZGdldENvbmZpZ1YzW107XG4gICAgICBjb25zdCB2M1dpZGdldENvbmZpZ3MgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIHYzd2lkZ2V0Q29uZmlnc0FycmF5Py5tYXAoKHsgd2lkZ2V0Q29uZmlnSWQsIC4uLnJlc3QgfTogV2lkZ2V0Q29uZmlnVjMpID0+IFtcbiAgICAgICAgICB3aWRnZXRDb25maWdJZCxcbiAgICAgICAgICB7IHdpZGdldENvbmZpZ0lkLCAuLi5yZXN0IH0gYXMgV2lkZ2V0Q29uZmlnVjMsXG4gICAgICAgIF0pLFxuICAgICAgKSBhcyBSZWNvcmQ8c3RyaW5nLCBXaWRnZXRDb25maWdWMz47XG4gICAgICBjb25zdCB2M3BhZ2VWYXJpYW50cyA9IHYzUm9vdENvbmZpZz8ucGFnZV92YXJpYW50cy5tYXAoXG4gICAgICAgIHZhbGlkYXRlQW5kVHJhbnNmb3JtUGFnZVZhcmlhbnRzLFxuICAgICAgKSBhcyBQYWdlVmFyaWFudENvbmZpZ1tdO1xuXG4gICAgICBjb25zdCB2M0NvbG9yc0NvbmZpZyA9IHRyYW5zZm9ybVNuYWtlVG9DYW1lbCh2M1Jvb3RDb25maWc/LmNvbG9ycz8udmFsdWVzKTtcblxuICAgICAgLy8gSWYgdGhlIHYzIHJvb3QgY29uZmlnIGlzIG5vdCBmb3VuZCBhbmQgd2UgYXJlIGNvbmZpZ3VyZWQgdG8gcmV0dXJuIHRoZSBkZXByZWNhdGVkIGNvbmZpZywgd2Ugd2lsbCByZXR1cm4gdGhlIG1vY2tlZCBjb25maWdcbiAgICAgIGlmICghdjNSb290Q29uZmlnICYmIG1vY2tWM0NvbmZpZ1RvRGVwcmVjYXRlZENvbmZpZykge1xuICAgICAgICBjb25zdCBpc1NlbWFudGljQ29sb3JzID0gIXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdnbG9iYWxzPW1lcmNoYW50Jyk7XG4gICAgICAgIGNvbnN0IGNvbG9yc0NvbmZpZyA9IG1vY2tWM0NvbG9yc0NvbmZpZztcbiAgICAgICAgY29uc3QgZnJvbnRlbmRDb25maWcgPSBtb2NrVjNGcm9udGVuZENvbmZpZztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb2xvcnNDb25maWc6IGlzU2VtYW50aWNDb2xvcnNcbiAgICAgICAgICAgID8gKGNvbG9yc0NvbmZpZyBhcyBDb2xvcnNDb25maWdWM1Jlc3BvbnNlKVxuICAgICAgICAgICAgOiAodjNDb2xvcnNDb25maWcgYXMgQ29sb3JzQ29uZmlnVjNSZXNwb25zZSksXG4gICAgICAgICAgZnJvbnRlbmRDb25maWc6IGZyb250ZW5kQ29uZmlnIGFzIEZyb250ZW5kQ29uZmlnVjNSZXNwb25zZSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3JzQ29uZmlnOiB2M0NvbG9yc0NvbmZpZyBhcyBDb2xvcnNDb25maWdWM1Jlc3BvbnNlLFxuICAgICAgICBmcm9udGVuZENvbmZpZzogdjNGcm9udGVuZENvbmZpZyBhcyBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UsXG4gICAgICAgIG9yZ1BhZ2VDb25maWc6IHtcbiAgICAgICAgICBwYWdlVmFyaWFudHM6IHYzcGFnZVZhcmlhbnRzLFxuICAgICAgICAgIHdpZGdldENvbmZpZ3M6IHYzV2lkZ2V0Q29uZmlncyxcbiAgICAgICAgICBtb3VudGluZ0NvbmZpZ3M6IHYzTW91bnRpbmdDb25maWdzLFxuICAgICAgICB9LFxuICAgICAgICAvLyBUT0RPOiBBZGQgd2lkZ2V0cyBhbmQgb3RoZXIgY29uZmlnIGhlcmVcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBMb2dnZXIubG9nRXJyb3IoJ0Vycm9yIGZldGNoaW5nIGdyYXBocWwgY29sb3JzIGFuZCBmcm9udGVuZCBjb25maWcnLCBlcnIpO1xuICAgICAgcmV0dXJuIHsgY29sb3JzQ29uZmlnOiB1bmRlZmluZWQsIGZyb250ZW5kQ29uZmlnOiB1bmRlZmluZWQgfTtcbiAgICB9XG4gIH0sIFtleGVjdXRlUXVlcnksIG1vY2tWM0NvbmZpZ1RvRGVwcmVjYXRlZENvbmZpZ10pO1xuXG4gIGNvbnN0IGdldENvbG9yc0FuZEZyb250ZW5kQ29uZmlnID0gdXNlQ2FsbGJhY2soYXN5bmMgKCk6IFByb21pc2U8R3JhcGhRbENvbmZpZ1ZhbHVlcz4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IGNvbG9yc0FuZEZyb250ZW5kQ29uZmlnUXVlcnkoKTtcbiAgICAgIGlmICghcXVlcnkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2xvcnMgYW5kIGZyb250ZW5kIGNvbmZpZyBxdWVyeSBpcyBub3QgZGVmaW5lZCcpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBleGVjdXRlUXVlcnkocXVlcnkpO1xuICAgICAgaWYgKFxuICAgICAgICByZXNwb25zZS5tZS5nZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbj8udmVyc2lvbiAhPT0gQ29uZmlnVmVyc2lvbkVudW0uVjMgJiZcbiAgICAgICAgIW1vY2tWM0NvbmZpZ1RvRGVwcmVjYXRlZENvbmZpZ1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGNvbG9yc0NvbmZpZyA9IHJlc3BvbnNlLm1lLmdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uPy5jb2xvcnM/LnZhbHVlcztcbiAgICAgICAgY29uc3QgZnJvbnRlbmRDb25maWcgPSByZXNwb25zZS5tZS5nZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbj8uZnJvbnRlbmQ/LnZhbHVlcztcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRDb2xvckNvbmZpZyA9IHRyYW5zZm9ybVNuYWtlVG9DYW1lbChjb2xvcnNDb25maWcpO1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZEZyb250ZW5kQ29uZmlnID0gdHJhbnNmb3JtU25ha2VUb0NhbWVsKGZyb250ZW5kQ29uZmlnKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb2xvcnNDb25maWc6IHRyYW5zZm9ybWVkQ29sb3JDb25maWcgYXMgQ29sb3JzQ29uZmlnUmVzcG9uc2UsXG4gICAgICAgICAgZnJvbnRlbmRDb25maWc6IHRyYW5zZm9ybWVkRnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdSZXNwb25zZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIC8vIFRPRE86IFJFTU9WRSBNT0NLRUQgQ09ORklHIE9OQ0UgV0UgSEFWRSBUSEUgTkVXIENPTkZJRyBJTVBMRU1FTlRFRCBPTiBCQUNLRU5EXG4gICAgICBjb25zdCBtZXJjaGFudENvbG9yc0NvbmZpZyA9IHJlc3BvbnNlLm1lLmdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uPy5jb2xvcnM/LnZhbHVlcztcbiAgICAgIGNvbnN0IHRyYW5zZm9ybWVkTWVyY2hhbnRDb2xvckNvbmZpZyA9IHRyYW5zZm9ybVNuYWtlVG9DYW1lbChtZXJjaGFudENvbG9yc0NvbmZpZyk7XG5cbiAgICAgIGNvbnN0IGlzU2VtYW50aWNDb2xvcnMgPSAhd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJ2dsb2JhbHM9bWVyY2hhbnQnKTtcblxuICAgICAgY29uc3QgY29sb3JzQ29uZmlnID0gbW9ja1YzQ29sb3JzQ29uZmlnO1xuICAgICAgY29uc3QgZnJvbnRlbmRDb25maWcgPSBtb2NrVjNGcm9udGVuZENvbmZpZztcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3JzQ29uZmlnOiBpc1NlbWFudGljQ29sb3JzXG4gICAgICAgICAgPyAoY29sb3JzQ29uZmlnIGFzIENvbG9yc0NvbmZpZ1YzUmVzcG9uc2UpXG4gICAgICAgICAgOiAodHJhbnNmb3JtZWRNZXJjaGFudENvbG9yQ29uZmlnIGFzIENvbG9yc0NvbmZpZ1YzUmVzcG9uc2UpLFxuICAgICAgICBmcm9udGVuZENvbmZpZzogZnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIExvZ2dlci5sb2dFcnJvcignRXJyb3IgZmV0Y2hpbmcgZ3JhcGhxbCBjb2xvcnMgYW5kIGZyb250ZW5kIGNvbmZpZycsIGVycik7XG4gICAgICByZXR1cm4geyBjb2xvcnNDb25maWc6IHVuZGVmaW5lZCwgZnJvbnRlbmRDb25maWc6IHVuZGVmaW5lZCB9O1xuICAgIH1cbiAgfSwgW2V4ZWN1dGVRdWVyeV0pO1xuXG4gIGNvbnN0IGdldENvbmZpZyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpOiBQcm9taXNlPEdyYXBoUWxDb25maWdWYWx1ZXM+ID0+IHtcbiAgICBjb25zb2xlLmxvZygnR3JhcGhRTFByb3ZpZGVyOiBnZXRDb25maWc6IHJlcXVlc3RWM0NvbmZpZycsIHJlcXVlc3RWM0NvbmZpZyk7XG4gICAgaWYgKHJlcXVlc3RWM0NvbmZpZykge1xuICAgICAgcmV0dXJuIGdldFYzQ29uZmlnKCk7XG4gICAgfVxuICAgIHJldHVybiBnZXRDb2xvcnNBbmRGcm9udGVuZENvbmZpZygpO1xuICB9LCBbZ2V0Q29sb3JzQW5kRnJvbnRlbmRDb25maWcsIGdldFYzQ29uZmlnLCByZXF1ZXN0VjNDb25maWddKTtcblxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGV4ZWN1dGVRdWVyeSxcbiAgICAgIGdldE9yZ0lkLFxuICAgICAgZ2V0Q29sb3JzQW5kRnJvbnRlbmRDb25maWcsXG4gICAgICBnZXRWM0NvbmZpZyxcbiAgICAgIGdldENvbmZpZyxcbiAgICAgIGlzUmVhZHksXG4gICAgfSksXG4gICAgW2V4ZWN1dGVRdWVyeSwgZ2V0T3JnSWQsIGdldENvbG9yc0FuZEZyb250ZW5kQ29uZmlnLCBnZXRWM0NvbmZpZywgZ2V0Q29uZmlnLCBpc1JlYWR5XSxcbiAgKTtcblxuICByZXR1cm4gPEdyYXBoUUxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvR3JhcGhRTENvbnRleHQuUHJvdmlkZXI+O1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUdyYXBoUUxDbGllbnQgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEdyYXBoUUxDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VHcmFwaFFMQ2xpZW50IG11c3QgYmUgdXNlZCB3aXRoaW4gYSBHcmFwaFFMUHJvdmlkZXInKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMERBLE1BQU0sMENBQTJELEtBQUs7QUFFdEUsTUFBTSxxQ0FBcUM7K0JBQ1pBLHVDQUFlLENBQUM7Ozs7Ozs7OztBQWdCL0MsTUFBYSxtQkFBbUIsRUFDOUIsVUFDQSxrQkFBa0IsT0FDbEIsaUNBQWlDLFlBQ1A7Q0FDMUIsTUFBTSxpQ0FBc0JDLHdDQUFtQjtD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
|
|
242
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbENvbnRleHQuY2pzIiwibmFtZXMiOlsiY29uZmlnVmVyc2lvbiIsIkRFRkFVTFRfUEFHRV9WQVJJQU5UUzogUGFnZVZhcmlhbnRDb25maWdbXSIsIlBhZ2VWYXJpYW50VGVzdFR5cGUiLCJvcmdMZXZlbEFwaUtleUF0b20iLCJiYXNlVXJsQXRvbSIsInZhbGlkYXRlR3JhcGhRTE9yZ0lkIiwiZ2V0TWVyY2hhbnRPcmdJZFF1ZXJ5IiwidHJhbnNmb3JtU25ha2VUb0NhbWVsIiwidmFsaWRhdGVBbmRUcmFuc2Zvcm1Nb3VudGluZ0NvbmZpZyIsInYzcGFnZVZhcmlhbnRzOiBQYWdlVmFyaWFudENvbmZpZ1tdIiwidmFsaWRhdGVBbmRUcmFuc2Zvcm1QYWdlVmFyaWFudHMiLCJtb2NrVjNDb2xvcnNDb25maWciLCJtb2NrVjNGcm9udGVuZENvbmZpZyIsIkNvbmZpZ1ZlcnNpb25FbnVtIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRleHRzL2dyYXBocWxDb250ZXh0L2dyYXBocWxDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlLCBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IGJhc2VVcmxBdG9tLCBvcmdMZXZlbEFwaUtleUF0b20gfSBmcm9tICdzcmMvYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZyc7XG5pbXBvcnQgeyBnZXRNZXJjaGFudE9yZ0lkUXVlcnkgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwvcXVlcmllcy9nZXRNZXJjaGFudE9yZ0lkUXVlcnknO1xuaW1wb3J0IHsgdmFsaWRhdGVHcmFwaFFMT3JnSWQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVHcmFwaFFMT3JnSWQnO1xuaW1wb3J0IHtcbiAgR2V0TWVyY2hhbnRDb2xvcnNRdWVyeURhdGEsXG4gIEdldE1lcmNoYW50RnJvbnRlbmRDb25maWdRdWVyeURhdGEsXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbCc7XG5pbXBvcnQgeyBDb2xvck1hcHBpbmcgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbG9yc0NvbmZpZyc7XG5pbXBvcnQgeyBGcm9udGVuZENvbmZpZyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZnJvbnRlbmRDb25maWcnO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHsgY29uZmlnVmVyc2lvbiB9IGZyb20gJ3NyYy90eXBlcy9jb25maWctdmVyc2lvbnMnO1xuaW1wb3J0IHtcbiAgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwLFxuICB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtTW91bnRpbmdDb25maWcsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtUGFnZVZhcmlhbnRzLFxufSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IEZyb250ZW5kQ29uZmlnVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2Zyb250ZW5kQ29uZmlnVjMnO1xuaW1wb3J0IHsgQ29sb3JNYXBwaW5nVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbG9yc0NvbmZpZ1YzJztcbmltcG9ydCB7IG1vY2tWM0NvbG9yc0NvbmZpZywgbW9ja1YzRnJvbnRlbmRDb25maWcgfSBmcm9tICcuL21vY2tWM0NvbmZpZyc7XG5pbXBvcnQgeyBDb25maWdWZXJzaW9uRW51bSwgUG9zaXRpb24sIFdpZGdldENvbmZpZ1YzIH0gZnJvbSAnLi4vdHlwZXNWMyc7XG5pbXBvcnQge1xuICBPcmdQYWdlQ29uZmlnLFxuICBQYWdlVmFyaWFudENvbmZpZyxcbiAgUGFnZVZhcmlhbnRUZXN0VHlwZSxcbiAgV2lkZ2V0TW91bnRpbmdDb25maWcsXG59IGZyb20gJy4uL3R5cGVzJztcblxuaW50ZXJmYWNlIEJhc2VNZUNvbmZpZ1F1ZXJ5UmVzcG9uc2Uge1xuICBtZToge1xuICAgIG9yZz86IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBnZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbj86IHtcbiAgICAgIGZyb250ZW5kPzoge1xuICAgICAgICB2YWx1ZXM6IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxHZXRNZXJjaGFudEZyb250ZW5kQ29uZmlnUXVlcnlEYXRhPjtcbiAgICAgIH07XG4gICAgICBjb2xvcnM/OiB7IHZhbHVlczogQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEdldE1lcmNoYW50Q29sb3JzUXVlcnlEYXRhPiB9O1xuICAgIH07XG4gIH07XG59XG5leHBvcnQgdHlwZSBDb2xvcnNDb25maWdSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxDb2xvck1hcHBpbmc+O1xuZXhwb3J0IHR5cGUgRnJvbnRlbmRDb25maWdSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxGcm9udGVuZENvbmZpZz47XG5leHBvcnQgdHlwZSBDb2xvcnNDb25maWdWM1Jlc3BvbnNlID0gQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPENvbG9yTWFwcGluZ1YzPjtcbmV4cG9ydCB0eXBlIEZyb250ZW5kQ29uZmlnVjNSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxGcm9udGVuZENvbmZpZ1YzPjtcblxuZXhwb3J0IHR5cGUgR3JhcGhRbENvbmZpZ1ZhbHVlcyA9IHtcbiAgY29sb3JzQ29uZmlnPzogQ29sb3JzQ29uZmlnUmVzcG9uc2UgfCBDb2xvcnNDb25maWdWM1Jlc3BvbnNlO1xuICBmcm9udGVuZENvbmZpZz86IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxGcm9udGVuZENvbmZpZyB8IEZyb250ZW5kQ29uZmlnVjM+O1xuICBvcmdQYWdlQ29uZmlnPzogT3JnUGFnZUNvbmZpZztcbn07XG5cbmludGVyZmFjZSBHcmFwaFFMQ29udGV4dFZhbHVlIHtcbiAgZXhlY3V0ZVF1ZXJ5OiA8VD4ocXVlcnk6IHN0cmluZywgdmFyaWFibGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IFByb21pc2U8VD47XG4gIGdldE9yZ0lkOiAoKSA9PiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD47XG4gIGdldENvbG9yc0FuZEZyb250ZW5kQ29uZmlnOiAoKSA9PiBQcm9taXNlPEdyYXBoUWxDb25maWdWYWx1ZXM+O1xuICBnZXRWM0NvbmZpZzogKCkgPT4gUHJvbWlzZTxHcmFwaFFsQ29uZmlnVmFsdWVzPjtcbiAgZ2V0Q29uZmlnOiAoKSA9PiBQcm9taXNlPEdyYXBoUWxDb25maWdWYWx1ZXM+O1xuICBpc1JlYWR5OiBib29sZWFuO1xufVxuXG5jb25zdCBHcmFwaFFMQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8R3JhcGhRTENvbnRleHRWYWx1ZSB8IG51bGw+KG51bGwpO1xuXG5jb25zdCBjb2xvcnNBbmRGcm9udGVuZENvbmZpZ1F1ZXJ5ID0gKCkgPT4gYFxuICBxdWVyeSAoJHZlcnNpb246IFN0cmluZyA9IFwiJHtjb25maWdWZXJzaW9uKCl9XCIpIHtcbiAgICBtZSB7XG4gICAgICBnZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbih2ZXJzaW9uOiAkdmVyc2lvbikge1xuICAgICAgICBmcm9udGVuZCB7IHZhbHVlcyB9XG4gICAgICAgIGNvbG9ycyB7IHZhbHVlcyB9XG4gICAgICAgIHZfdGhyZWVfY29uZmlnIHsgdmFsdWVzIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbnR5cGUgR3JhcGhRTFByb3ZpZGVyUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIHJlcXVlc3RWM0NvbmZpZz86IGJvb2xlYW47XG4gIG1vY2tWM0NvbmZpZ1RvRGVwcmVjYXRlZENvbmZpZz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBERUZBVUxUX1BBR0VfVkFSSUFOVFM6IFBhZ2VWYXJpYW50Q29uZmlnW10gPSBbXG4gIHtcbiAgICB2YXJpYW50SWQ6ICdwbHAnLFxuICAgIHZhcmlhbnRUeXBlOiAncGxwJyxcbiAgICBwbHBJZEV4dHJhY3RvcjogJ3VybC1yZXNvbHZlci1wbHAtaWQnLFxuICAgIHdpZGdldE1vdW50aW5nOiBbXSxcbiAgICB2YXJpYW50VGVzdHM6IFtcbiAgICAgIHtcbiAgICAgICAgdGVzdFR5cGU6IFBhZ2VWYXJpYW50VGVzdFR5cGUuVXJsUmVzb2x2ZXIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICB2YXJpYW50SWQ6ICdwZHAnLFxuICAgIHZhcmlhbnRUeXBlOiAncGRwJyxcbiAgICBwcm9kdWN0SWRFeHRyYWN0b3I6ICd1cmwtcmVzb2x2ZXItcHJvZHVjdC1pZCcsXG4gICAgd2lkZ2V0TW91bnRpbmc6IFtdLFxuICAgIHZhcmlhbnRUZXN0czogW1xuICAgICAge1xuICAgICAgICB0ZXN0VHlwZTogUGFnZVZhcmlhbnRUZXN0VHlwZS5VcmxSZXNvbHZlcixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbl07XG5cbmNvbnN0IG1hcFBvc2l0aW9uVG9DYW1lbENhc2UgPSAocG9zaXRpb246IHN0cmluZyk6IFBvc2l0aW9uID0+IHtcbiAgaWYgKHBvc2l0aW9uID09PSAnYm90dG9tLWxlZnQnKSB7XG4gICAgcmV0dXJuICdib3R0b21MZWZ0JztcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdtaWRkbGUtbGVmdCcpIHtcbiAgICByZXR1cm4gJ21pZGRsZUxlZnQnO1xuICB9XG4gIGlmIChwb3NpdGlvbiA9PT0gJ21pZGRsZS1yaWdodCcpIHtcbiAgICByZXR1cm4gJ21pZGRsZVJpZ2h0JztcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdib3R0b20tcmlnaHQnKSB7XG4gICAgcmV0dXJuICdib3R0b21SaWdodCc7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBvc2l0aW9uOiAke3Bvc2l0aW9ufWApO1xufTtcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZG8gc29tZSBhZGRpdGlvbmFsIGNsZWFudXAgb2YgdGhlIHYzIGZyb250ZW5kIGNvbmZpZyB0byBlbnN1cmUgdGhhdCB0aGUgY29uZmlnIGlzIGluIHRoZSBjb3JyZWN0IGZvcm1hdC5cbiAqL1xuY29uc3QgdjNGcm9udGVuZENvbmZpZ0NsZWFudXAgPSAoXG4gIHYzUm9vdENvbmZpZzogRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuKTogRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlID0+IHtcbiAgY29uc3QgeyB1aUNvbmZpZ3MgfSA9IHYzUm9vdENvbmZpZztcbiAgaWYgKCF1aUNvbmZpZ3MpIHtcbiAgICByZXR1cm4gdjNSb290Q29uZmlnO1xuICB9XG4gIGNvbnN0IHsgZmxvYXRpbmdCdXR0b24sIGxvb2tBbmRGZWVsIH0gPSB1aUNvbmZpZ3MgYXMgYW55O1xuICBpZiAoIWZsb2F0aW5nQnV0dG9uIHx8ICFsb29rQW5kRmVlbCkge1xuICAgIHJldHVybiB2M1Jvb3RDb25maWc7XG4gIH1cbiAgY29uc3QgeyBmb250U2l6ZSwgbGluZUhlaWdodCB9ID0gbG9va0FuZEZlZWwudHlwb2dyYXBoeSBhcyBhbnk7XG4gIHJldHVybiB7XG4gICAgLi4udjNSb290Q29uZmlnLFxuICAgIHVpQ29uZmlnczoge1xuICAgICAgLi4udWlDb25maWdzLFxuICAgICAgZmxvYXRpbmdCdXR0b246IHtcbiAgICAgICAgLi4uZmxvYXRpbmdCdXR0b24sXG4gICAgICAgIHBvc2l0aW9uOiBtYXBQb3NpdGlvblRvQ2FtZWxDYXNlKFxuICAgICAgICAgIHYzUm9vdENvbmZpZy51aUNvbmZpZ3M/LmZsb2F0aW5nQnV0dG9uPy5wb3NpdGlvbiBhcyBzdHJpbmcsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgbG9va0FuZEZlZWw6IHtcbiAgICAgICAgLi4ubG9va0FuZEZlZWwsXG4gICAgICAgIGNoYXRIZWFkZXJMb2dvRGFya1NyYzogbG9va0FuZEZlZWwuY2hhdEhlYWRlckxvZ29EYXJrU3JjIHx8IGxvb2tBbmRGZWVsLmNoYXRIZWFkZXJMb2dvU3JjLFxuICAgICAgICBjaGF0SGVhZGVyTG9nb0xpZ2h0U3JjOiBsb29rQW5kRmVlbC5jaGF0SGVhZGVyTG9nb0xpZ2h0U3JjIHx8IGxvb2tBbmRGZWVsLmNoYXRIZWFkZXJMb2dvU3JjLFxuICAgICAgICB0eXBvZ3JhcGh5OiB7XG4gICAgICAgICAgLi4ubG9va0FuZEZlZWwudHlwb2dyYXBoeSxcbiAgICAgICAgICBmb250U2l6ZToge1xuICAgICAgICAgICAgLy8gVGhlIGZvbnRzIHNpemVzIGFyZSBkZWZpbmVkIGRpZmZlcmVudGx5IGluIHRoZSBiYWNrZW5kIGNvbmZpZ1xuICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBtYXAgdGhlIHZhbHVlcyB0byB0aGUgY29ycmVjdCBjYW1lbCBjYXNlIGtleXNcbiAgICAgICAgICAgIGIxOiBmb250U2l6ZT8uYjEgfHwgZm9udFNpemU/LmJfMSxcbiAgICAgICAgICAgIGIyOiBmb250U2l6ZT8uYjIgfHwgZm9udFNpemU/LmJfMixcbiAgICAgICAgICAgIGIzOiBmb250U2l6ZT8uYjMgfHwgZm9udFNpemU/LmJfMyxcbiAgICAgICAgICAgIGI0OiBmb250U2l6ZT8uYjQgfHwgZm9udFNpemU/LmJfNCxcbiAgICAgICAgICAgIGI1OiBmb250U2l6ZT8uYjUgfHwgZm9udFNpemU/LmJfNSxcbiAgICAgICAgICAgIGgxOiBmb250U2l6ZT8uaDEgfHwgZm9udFNpemU/LmhfMSxcbiAgICAgICAgICAgIGgyOiBmb250U2l6ZT8uaDIgfHwgZm9udFNpemU/LmhfMixcbiAgICAgICAgICAgIGgzOiBmb250U2l6ZT8uaDMgfHwgZm9udFNpemU/LmhfMyxcbiAgICAgICAgICAgIGwxOiBmb250U2l6ZT8ubDEgfHwgZm9udFNpemU/LmxfMSxcbiAgICAgICAgICAgIGwyOiBmb250U2l6ZT8ubDIgfHwgZm9udFNpemU/LmxfMixcbiAgICAgICAgICAgIHQxOiBmb250U2l6ZT8udDEgfHwgZm9udFNpemU/LnRfMSxcbiAgICAgICAgICAgIHQyOiBmb250U2l6ZT8udDIgfHwgZm9udFNpemU/LnRfMixcbiAgICAgICAgICAgIHQzOiBmb250U2l6ZT8udDMgfHwgZm9udFNpemU/LnRfMyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IHtcbiAgICAgICAgICAgIC4uLmxvb2tBbmRGZWVsLnR5cG9ncmFwaHkubGluZUhlaWdodCxcbiAgICAgICAgICAgICcxMTQnOiBsaW5lSGVpZ2h0Py5saF8xMTQgfHwgbGluZUhlaWdodD8uWzExNF0sXG4gICAgICAgICAgICAnMTE2JzogbGluZUhlaWdodD8ubGhfMTE2IHx8IGxpbmVIZWlnaHQ/LlsxMTZdLFxuICAgICAgICAgICAgJzExOCc6IGxpbmVIZWlnaHQ/LmxoXzExOCB8fCBsaW5lSGVpZ2h0Py5bMTE4XSxcbiAgICAgICAgICAgICcxMjAnOiBsaW5lSGVpZ2h0Py5saF8xMjAgfHwgbGluZUhlaWdodD8uWzEyMF0sXG4gICAgICAgICAgICAnMTI0JzogbGluZUhlaWdodD8ubGhfMTI0IHx8IGxpbmVIZWlnaHQ/LlsxMjRdLFxuICAgICAgICAgICAgJzEyOCc6IGxpbmVIZWlnaHQ/LmxoXzEyOCB8fCBsaW5lSGVpZ2h0Py5bMTI4XSxcbiAgICAgICAgICAgICcxMzAnOiBsaW5lSGVpZ2h0Py5saF8xMzAgfHwgbGluZUhlaWdodD8uWzEzMF0sXG4gICAgICAgICAgICAnMTMzJzogbGluZUhlaWdodD8ubGhfMTMzIHx8IGxpbmVIZWlnaHQ/LlsxMzNdLFxuICAgICAgICAgICAgJzE0MCc6IGxpbmVIZWlnaHQ/LmxoXzE0MCB8fCBsaW5lSGVpZ2h0Py5bMTQwXSxcbiAgICAgICAgICAgICcxNDgnOiBsaW5lSGVpZ2h0Py5saF8xNDggfHwgbGluZUhlaWdodD8uWzE0OF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBHcmFwaFFMUHJvdmlkZXIgPSAoe1xuICBjaGlsZHJlbixcbiAgcmVxdWVzdFYzQ29uZmlnID0gZmFsc2UsXG4gIG1vY2tWM0NvbmZpZ1RvRGVwcmVjYXRlZENvbmZpZyA9IGZhbHNlLFxufTogR3JhcGhRTFByb3ZpZGVyUHJvcHMpID0+IHtcbiAgY29uc3QgYXBpS2V5ID0gdXNlQXRvbVZhbHVlKG9yZ0xldmVsQXBpS2V5QXRvbSk7XG4gIGNvbnN0IGJhc2VVcmwgPSB1c2VBdG9tVmFsdWUoYmFzZVVybEF0b20pO1xuICBjb25zdCBpc1JlYWR5ID0gdXNlTWVtbygoKSA9PiBCb29sZWFuKGFwaUtleSAmJiBiYXNlVXJsKSwgW2FwaUtleSwgYmFzZVVybF0pO1xuXG4gIGNvbnN0IGV4ZWN1dGVRdWVyeSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChxdWVyeTogc3RyaW5nLCB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgICAgaWYgKCFpc1JlYWR5KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignR3JhcGhRTCBjbGllbnQgbm90IHJlYWR5IC0gbWlzc2luZyBhcGlLZXkgb3IgYmFzZVVybCcpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2Jhc2VVcmx9L3YxL2dyYXBocWxgLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YXBpS2V5fWAsXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgcXVlcnksIHZhcmlhYmxlcyB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgR3JhcGhRTCByZXF1ZXN0IGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICBpZiAocmVzdWx0LmVycm9ycykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEdyYXBoUUwgZXJyb3JzOiAke0pTT04uc3RyaW5naWZ5KHJlc3VsdC5lcnJvcnMpfWApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSxcbiAgICBbYXBpS2V5LCBiYXNlVXJsLCBpc1JlYWR5XSxcbiAgKTtcblxuICBjb25zdCBnZXRPcmdJZCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGV4ZWN1dGVRdWVyeShnZXRNZXJjaGFudE9yZ0lkUXVlcnkpO1xuICAgIHJldHVybiB2YWxpZGF0ZUdyYXBoUUxPcmdJZChyZXNwb25zZS5tZS5vcmc/LmlkKTtcbiAgfSwgW2V4ZWN1dGVRdWVyeV0pO1xuXG4gIGNvbnN0IGdldFYzQ29uZmlnID0gdXNlQ2FsbGJhY2soYXN5bmMgKCk6IFByb21pc2U8R3JhcGhRbENvbmZpZ1ZhbHVlcz4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IGNvbG9yc0FuZEZyb250ZW5kQ29uZmlnUXVlcnkoKTtcbiAgICAgIGlmICghcXVlcnkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2xvcnMgYW5kIGZyb250ZW5kIGNvbmZpZyBxdWVyeSBpcyBub3QgZGVmaW5lZCcpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBleGVjdXRlUXVlcnkocXVlcnkpO1xuXG4gICAgICAvLyBXZSBtYXkgdXBkYXRlIHRoaXMgcm9vdCBjb25maWcgbG9jYXRpb24gaW4gdGhlIGZ1dHVyZVxuICAgICAgY29uc3QgdjNSb290Q29uZmlnID0gcmVzcG9uc2UubWUuZ2V0UHJvZHVjdHNDb25maWdCeVZlcnNpb24/LnZfdGhyZWVfY29uZmlnPy52YWx1ZXM7XG5cbiAgICAgIGNvbnN0IHYzRnJvbnRlbmRDb25maWcgPSB2M0Zyb250ZW5kQ29uZmlnQ2xlYW51cChcbiAgICAgICAgdHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZykgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICAgICAgKTtcblxuICAgICAgY29uc3QgdjNNb3VudGluZ0NvbmZpZ3NBcnJheSA9ICh0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwodjNSb290Q29uZmlnPy5tb3VudGluZ19jb25maWdzKSA/P1xuICAgICAgICBbXSkgYXMgdW5rbm93biBhcyB7IGtleTogc3RyaW5nOyBjb25maWc6IFdpZGdldE1vdW50aW5nQ29uZmlnIH1bXTtcblxuICAgICAgY29uc3QgdjNNb3VudGluZ0NvbmZpZ3MgPSB2M01vdW50aW5nQ29uZmlnc0FycmF5LnJlZHVjZShcbiAgICAgICAgKGFjYywgeyBrZXksIGNvbmZpZyB9KSA9PiB7XG4gICAgICAgICAgYWNjW2tleV0gPSB2YWxpZGF0ZUFuZFRyYW5zZm9ybU1vdW50aW5nQ29uZmlnKGNvbmZpZywga2V5KTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LFxuICAgICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBXaWRnZXRNb3VudGluZ0NvbmZpZz4sXG4gICAgICApO1xuXG4gICAgICBjb25zdCB2M3dpZGdldENvbmZpZ3NBcnJheSA9ICh0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwodjNSb290Q29uZmlnPy53aWRnZXRfY29uZmlncykgPz9cbiAgICAgICAgW10pIGFzIHVua25vd24gYXMgV2lkZ2V0Q29uZmlnVjNbXTtcbiAgICAgIGNvbnN0IHYzV2lkZ2V0Q29uZmlncyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgdjN3aWRnZXRDb25maWdzQXJyYXk/Lm1hcCgoeyB3aWRnZXRDb25maWdJZCwgLi4ucmVzdCB9OiBXaWRnZXRDb25maWdWMykgPT4gW1xuICAgICAgICAgIHdpZGdldENvbmZpZ0lkLFxuICAgICAgICAgIHsgd2lkZ2V0Q29uZmlnSWQsIC4uLnJlc3QgfSBhcyBXaWRnZXRDb25maWdWMyxcbiAgICAgICAgXSksXG4gICAgICApIGFzIFJlY29yZDxzdHJpbmcsIFdpZGdldENvbmZpZ1YzPjtcbiAgICAgIGNvbnN0IHYzcGFnZVZhcmlhbnRzOiBQYWdlVmFyaWFudENvbmZpZ1tdID0gQXJyYXkuaXNBcnJheSh2M1Jvb3RDb25maWc/LnBhZ2VfdmFyaWFudHMpXG4gICAgICAgID8gdjNSb290Q29uZmlnPy5wYWdlX3ZhcmlhbnRzLm1hcCh2YWxpZGF0ZUFuZFRyYW5zZm9ybVBhZ2VWYXJpYW50cylcbiAgICAgICAgOiBERUZBVUxUX1BBR0VfVkFSSUFOVFM7XG5cbiAgICAgIGNvbnN0IHYzQ29sb3JzQ29uZmlnID0gdHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZz8uY29sb3JzPy52YWx1ZXMpO1xuXG4gICAgICAvLyBJZiB0aGUgdjMgcm9vdCBjb25maWcgaXMgbm90IGZvdW5kIGFuZCB3ZSBhcmUgY29uZmlndXJlZCB0byByZXR1cm4gdGhlIGRlcHJlY2F0ZWQgY29uZmlnLCB3ZSB3aWxsIHJldHVybiB0aGUgbW9ja2VkIGNvbmZpZ1xuICAgICAgaWYgKCF2M1Jvb3RDb25maWcgJiYgbW9ja1YzQ29uZmlnVG9EZXByZWNhdGVkQ29uZmlnKSB7XG4gICAgICAgIGNvbnN0IGlzU2VtYW50aWNDb2xvcnMgPSAhd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJ2dsb2JhbHM9bWVyY2hhbnQnKTtcbiAgICAgICAgY29uc3QgY29sb3JzQ29uZmlnID0gbW9ja1YzQ29sb3JzQ29uZmlnO1xuICAgICAgICBjb25zdCBmcm9udGVuZENvbmZpZyA9IG1vY2tWM0Zyb250ZW5kQ29uZmlnO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbG9yc0NvbmZpZzogaXNTZW1hbnRpY0NvbG9yc1xuICAgICAgICAgICAgPyAoY29sb3JzQ29uZmlnIGFzIENvbG9yc0NvbmZpZ1YzUmVzcG9uc2UpXG4gICAgICAgICAgICA6ICh2M0NvbG9yc0NvbmZpZyBhcyBDb2xvcnNDb25maWdWM1Jlc3BvbnNlKSxcbiAgICAgICAgICBmcm9udGVuZENvbmZpZzogZnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2xvcnNDb25maWc6IHYzQ29sb3JzQ29uZmlnIGFzIENvbG9yc0NvbmZpZ1YzUmVzcG9uc2UsXG4gICAgICAgIGZyb250ZW5kQ29uZmlnOiB7XG4gICAgICAgICAgLi4uKHYzRnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlKSxcbiAgICAgICAgICAvLyBOZWVkIHRvIHJlcGxhY2UgdGhlIGF1dG9tYXRpYyB3aWRnZXQgY29uZmlncyB3aXRoIHRoZSBvYmplY3QgYmFzZWQgb25lc1xuICAgICAgICAgIHdpZGdldENvbmZpZ3M6IHYzV2lkZ2V0Q29uZmlncyxcbiAgICAgICAgfSxcbiAgICAgICAgb3JnUGFnZUNvbmZpZzoge1xuICAgICAgICAgIHBhZ2VWYXJpYW50czogdjNwYWdlVmFyaWFudHMsXG4gICAgICAgICAgd2lkZ2V0Q29uZmlnczogdjNXaWRnZXRDb25maWdzLFxuICAgICAgICAgIG1vdW50aW5nQ29uZmlnczogdjNNb3VudGluZ0NvbmZpZ3MsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIFRPRE86IEFkZCB3aWRnZXRzIGFuZCBvdGhlciBjb25maWcgaGVyZVxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIExvZ2dlci5sb2dFcnJvcignRXJyb3IgZmV0Y2hpbmcgZ3JhcGhxbCBjb2xvcnMgYW5kIGZyb250ZW5kIGNvbmZpZycsIGVycik7XG4gICAgICByZXR1cm4geyBjb2xvcnNDb25maWc6IHVuZGVmaW5lZCwgZnJvbnRlbmRDb25maWc6IHVuZGVmaW5lZCB9O1xuICAgIH1cbiAgfSwgW2V4ZWN1dGVRdWVyeSwgbW9ja1YzQ29uZmlnVG9EZXByZWNhdGVkQ29uZmlnXSk7XG5cbiAgY29uc3QgZ2V0Q29sb3JzQW5kRnJvbnRlbmRDb25maWcgPSB1c2VDYWxsYmFjayhhc3luYyAoKTogUHJvbWlzZTxHcmFwaFFsQ29uZmlnVmFsdWVzPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgY29sb3JzQW5kRnJvbnRlbmRDb25maWdRdWVyeSgpO1xuICAgICAgaWYgKCFxdWVyeSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbG9ycyBhbmQgZnJvbnRlbmQgY29uZmlnIHF1ZXJ5IGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGV4ZWN1dGVRdWVyeShxdWVyeSk7XG4gICAgICBpZiAoXG4gICAgICAgIHJlc3BvbnNlLm1lLmdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uPy52ZXJzaW9uICE9PSBDb25maWdWZXJzaW9uRW51bS5WMyAmJlxuICAgICAgICAhbW9ja1YzQ29uZmlnVG9EZXByZWNhdGVkQ29uZmlnXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgY29sb3JzQ29uZmlnID0gcmVzcG9uc2UubWUuZ2V0UHJvZHVjdHNDb25maWdCeVZlcnNpb24/LmNvbG9ycz8udmFsdWVzO1xuICAgICAgICBjb25zdCBmcm9udGVuZENvbmZpZyA9IHJlc3BvbnNlLm1lLmdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uPy5mcm9udGVuZD8udmFsdWVzO1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZENvbG9yQ29uZmlnID0gdHJhbnNmb3JtU25ha2VUb0NhbWVsKGNvbG9yc0NvbmZpZyk7XG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkRnJvbnRlbmRDb25maWcgPSB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwoZnJvbnRlbmRDb25maWcpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbG9yc0NvbmZpZzogdHJhbnNmb3JtZWRDb2xvckNvbmZpZyBhcyBDb2xvcnNDb25maWdSZXNwb25zZSxcbiAgICAgICAgICBmcm9udGVuZENvbmZpZzogdHJhbnNmb3JtZWRGcm9udGVuZENvbmZpZyBhcyBGcm9udGVuZENvbmZpZ1Jlc3BvbnNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgLy8gVE9ETzogUkVNT1ZFIE1PQ0tFRCBDT05GSUcgT05DRSBXRSBIQVZFIFRIRSBORVcgQ09ORklHIElNUExFTUVOVEVEIE9OIEJBQ0tFTkRcbiAgICAgIGNvbnN0IG1lcmNoYW50Q29sb3JzQ29uZmlnID0gcmVzcG9uc2UubWUuZ2V0UHJvZHVjdHNDb25maWdCeVZlcnNpb24/LmNvbG9ycz8udmFsdWVzO1xuICAgICAgY29uc3QgdHJhbnNmb3JtZWRNZXJjaGFudENvbG9yQ29uZmlnID0gdHJhbnNmb3JtU25ha2VUb0NhbWVsKG1lcmNoYW50Q29sb3JzQ29uZmlnKTtcblxuICAgICAgY29uc3QgaXNTZW1hbnRpY0NvbG9ycyA9ICF3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnZ2xvYmFscz1tZXJjaGFudCcpO1xuXG4gICAgICBjb25zdCBjb2xvcnNDb25maWcgPSBtb2NrVjNDb2xvcnNDb25maWc7XG4gICAgICBjb25zdCBmcm9udGVuZENvbmZpZyA9IG1vY2tWM0Zyb250ZW5kQ29uZmlnO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2xvcnNDb25maWc6IGlzU2VtYW50aWNDb2xvcnNcbiAgICAgICAgICA/IChjb2xvcnNDb25maWcgYXMgQ29sb3JzQ29uZmlnVjNSZXNwb25zZSlcbiAgICAgICAgICA6ICh0cmFuc2Zvcm1lZE1lcmNoYW50Q29sb3JDb25maWcgYXMgQ29sb3JzQ29uZmlnVjNSZXNwb25zZSksXG4gICAgICAgIGZyb250ZW5kQ29uZmlnOiBmcm9udGVuZENvbmZpZyBhcyBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdFcnJvciBmZXRjaGluZyBncmFwaHFsIGNvbG9ycyBhbmQgZnJvbnRlbmQgY29uZmlnJywgZXJyKTtcbiAgICAgIHJldHVybiB7IGNvbG9yc0NvbmZpZzogdW5kZWZpbmVkLCBmcm9udGVuZENvbmZpZzogdW5kZWZpbmVkIH07XG4gICAgfVxuICB9LCBbZXhlY3V0ZVF1ZXJ5XSk7XG5cbiAgY29uc3QgZ2V0Q29uZmlnID0gdXNlQ2FsbGJhY2soYXN5bmMgKCk6IFByb21pc2U8R3JhcGhRbENvbmZpZ1ZhbHVlcz4gPT4ge1xuICAgIGNvbnNvbGUubG9nKCdHcmFwaFFMUHJvdmlkZXI6IGdldENvbmZpZzogcmVxdWVzdFYzQ29uZmlnJywgcmVxdWVzdFYzQ29uZmlnKTtcbiAgICBpZiAocmVxdWVzdFYzQ29uZmlnKSB7XG4gICAgICByZXR1cm4gZ2V0VjNDb25maWcoKTtcbiAgICB9XG4gICAgcmV0dXJuIGdldENvbG9yc0FuZEZyb250ZW5kQ29uZmlnKCk7XG4gIH0sIFtnZXRDb2xvcnNBbmRGcm9udGVuZENvbmZpZywgZ2V0VjNDb25maWcsIHJlcXVlc3RWM0NvbmZpZ10pO1xuXG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgZXhlY3V0ZVF1ZXJ5LFxuICAgICAgZ2V0T3JnSWQsXG4gICAgICBnZXRDb2xvcnNBbmRGcm9udGVuZENvbmZpZyxcbiAgICAgIGdldFYzQ29uZmlnLFxuICAgICAgZ2V0Q29uZmlnLFxuICAgICAgaXNSZWFkeSxcbiAgICB9KSxcbiAgICBbZXhlY3V0ZVF1ZXJ5LCBnZXRPcmdJZCwgZ2V0Q29sb3JzQW5kRnJvbnRlbmRDb25maWcsIGdldFYzQ29uZmlnLCBnZXRDb25maWcsIGlzUmVhZHldLFxuICApO1xuXG4gIHJldHVybiA8R3JhcGhRTENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9HcmFwaFFMQ29udGV4dC5Qcm92aWRlcj47XG59O1xuXG5leHBvcnQgY29uc3QgdXNlR3JhcGhRTENsaWVudCA9ICgpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoR3JhcGhRTENvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZUdyYXBoUUxDbGllbnQgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIEdyYXBoUUxQcm92aWRlcicpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0RBLE1BQU0sMENBQTJELEtBQUs7QUFFdEUsTUFBTSxxQ0FBcUM7K0JBQ1pBLHVDQUFlLENBQUM7Ozs7Ozs7Ozs7QUFpQi9DLE1BQU1DLHdCQUE2QyxDQUNqRDtDQUNFLFdBQVc7Q0FDWCxhQUFhO0NBQ2IsZ0JBQWdCO0NBQ2hCLGdCQUFnQixFQUFFO0NBQ2xCLGNBQWMsQ0FDWixFQUNFLFVBQVVDLDJDQUFvQixhQUMvQixDQUNGO0NBQ0YsRUFDRDtDQUNFLFdBQVc7Q0FDWCxhQUFhO0NBQ2Isb0JBQW9CO0NBQ3BCLGdCQUFnQixFQUFFO0NBQ2xCLGNBQWMsQ0FDWixFQUNFLFVBQVVBLDJDQUFvQixhQUMvQixDQUNGO0NBQ0YsQ0FDRjtBQUVELE1BQU0sMEJBQTBCLGFBQStCO0FBQzdELEtBQUksYUFBYSxjQUNmLFFBQU87QUFFVCxLQUFJLGFBQWEsY0FDZixRQUFPO0FBRVQsS0FBSSxhQUFhLGVBQ2YsUUFBTztBQUVULEtBQUksYUFBYSxlQUNmLFFBQU87QUFFVCxPQUFNLElBQUksTUFBTSxxQkFBcUIsV0FBVzs7Ozs7QUFNbEQsTUFBTSwyQkFDSixpQkFDNkI7Q0FDN0IsTUFBTSxFQUFFLGNBQWM7QUFDdEIsS0FBSSxDQUFDLFVBQ0gsUUFBTztDQUVULE1BQU0sRUFBRSxnQkFBZ0IsZ0JBQWdCO0FBQ3hDLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUN0QixRQUFPO0NBRVQsTUFBTSxFQUFFLFVBQVUs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
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PageVariantTestType } from "../types.js";
|
|
1
2
|
import { ConfigVersionEnum } from "../typesV3.js";
|
|
2
3
|
import logger_default from "../../application/logging/logger.js";
|
|
3
4
|
import { configVersion } from "../../types/config-versions.js";
|
|
@@ -20,10 +21,87 @@ const colorsAndFrontendConfigQuery = () => `
|
|
|
20
21
|
getProductsConfigByVersion(version: $version) {
|
|
21
22
|
frontend { values }
|
|
22
23
|
colors { values }
|
|
24
|
+
v_three_config { values }
|
|
23
25
|
}
|
|
24
26
|
}
|
|
25
27
|
}
|
|
26
28
|
`;
|
|
29
|
+
const DEFAULT_PAGE_VARIANTS = [{
|
|
30
|
+
variantId: "plp",
|
|
31
|
+
variantType: "plp",
|
|
32
|
+
plpIdExtractor: "url-resolver-plp-id",
|
|
33
|
+
widgetMounting: [],
|
|
34
|
+
variantTests: [{ testType: PageVariantTestType.UrlResolver }]
|
|
35
|
+
}, {
|
|
36
|
+
variantId: "pdp",
|
|
37
|
+
variantType: "pdp",
|
|
38
|
+
productIdExtractor: "url-resolver-product-id",
|
|
39
|
+
widgetMounting: [],
|
|
40
|
+
variantTests: [{ testType: PageVariantTestType.UrlResolver }]
|
|
41
|
+
}];
|
|
42
|
+
const mapPositionToCamelCase = (position) => {
|
|
43
|
+
if (position === "bottom-left") return "bottomLeft";
|
|
44
|
+
if (position === "middle-left") return "middleLeft";
|
|
45
|
+
if (position === "middle-right") return "middleRight";
|
|
46
|
+
if (position === "bottom-right") return "bottomRight";
|
|
47
|
+
throw new Error(`Invalid position: ${position}`);
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* This function is used to do some additional cleanup of the v3 frontend config to ensure that the config is in the correct format.
|
|
51
|
+
*/
|
|
52
|
+
const v3FrontendConfigCleanup = (v3RootConfig) => {
|
|
53
|
+
const { uiConfigs } = v3RootConfig;
|
|
54
|
+
if (!uiConfigs) return v3RootConfig;
|
|
55
|
+
const { floatingButton, lookAndFeel } = uiConfigs;
|
|
56
|
+
if (!floatingButton || !lookAndFeel) return v3RootConfig;
|
|
57
|
+
const { fontSize, lineHeight } = lookAndFeel.typography;
|
|
58
|
+
return {
|
|
59
|
+
...v3RootConfig,
|
|
60
|
+
uiConfigs: {
|
|
61
|
+
...uiConfigs,
|
|
62
|
+
floatingButton: {
|
|
63
|
+
...floatingButton,
|
|
64
|
+
position: mapPositionToCamelCase(v3RootConfig.uiConfigs?.floatingButton?.position)
|
|
65
|
+
},
|
|
66
|
+
lookAndFeel: {
|
|
67
|
+
...lookAndFeel,
|
|
68
|
+
chatHeaderLogoDarkSrc: lookAndFeel.chatHeaderLogoDarkSrc || lookAndFeel.chatHeaderLogoSrc,
|
|
69
|
+
chatHeaderLogoLightSrc: lookAndFeel.chatHeaderLogoLightSrc || lookAndFeel.chatHeaderLogoSrc,
|
|
70
|
+
typography: {
|
|
71
|
+
...lookAndFeel.typography,
|
|
72
|
+
fontSize: {
|
|
73
|
+
b1: fontSize?.b1 || fontSize?.b_1,
|
|
74
|
+
b2: fontSize?.b2 || fontSize?.b_2,
|
|
75
|
+
b3: fontSize?.b3 || fontSize?.b_3,
|
|
76
|
+
b4: fontSize?.b4 || fontSize?.b_4,
|
|
77
|
+
b5: fontSize?.b5 || fontSize?.b_5,
|
|
78
|
+
h1: fontSize?.h1 || fontSize?.h_1,
|
|
79
|
+
h2: fontSize?.h2 || fontSize?.h_2,
|
|
80
|
+
h3: fontSize?.h3 || fontSize?.h_3,
|
|
81
|
+
l1: fontSize?.l1 || fontSize?.l_1,
|
|
82
|
+
l2: fontSize?.l2 || fontSize?.l_2,
|
|
83
|
+
t1: fontSize?.t1 || fontSize?.t_1,
|
|
84
|
+
t2: fontSize?.t2 || fontSize?.t_2,
|
|
85
|
+
t3: fontSize?.t3 || fontSize?.t_3
|
|
86
|
+
},
|
|
87
|
+
lineHeight: {
|
|
88
|
+
...lookAndFeel.typography.lineHeight,
|
|
89
|
+
"114": lineHeight?.lh_114 || lineHeight?.[114],
|
|
90
|
+
"116": lineHeight?.lh_116 || lineHeight?.[116],
|
|
91
|
+
"118": lineHeight?.lh_118 || lineHeight?.[118],
|
|
92
|
+
"120": lineHeight?.lh_120 || lineHeight?.[120],
|
|
93
|
+
"124": lineHeight?.lh_124 || lineHeight?.[124],
|
|
94
|
+
"128": lineHeight?.lh_128 || lineHeight?.[128],
|
|
95
|
+
"130": lineHeight?.lh_130 || lineHeight?.[130],
|
|
96
|
+
"133": lineHeight?.lh_133 || lineHeight?.[133],
|
|
97
|
+
"140": lineHeight?.lh_140 || lineHeight?.[140],
|
|
98
|
+
"148": lineHeight?.lh_148 || lineHeight?.[148]
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
};
|
|
27
105
|
const GraphQLProvider = ({ children, requestV3Config = false, mockV3ConfigToDeprecatedConfig = false }) => {
|
|
28
106
|
const apiKey = useAtomValue(orgLevelApiKeyAtom);
|
|
29
107
|
const baseUrl = useAtomValue(baseUrlAtom);
|
|
@@ -57,8 +135,8 @@ const GraphQLProvider = ({ children, requestV3Config = false, mockV3ConfigToDepr
|
|
|
57
135
|
try {
|
|
58
136
|
const query = await colorsAndFrontendConfigQuery();
|
|
59
137
|
if (!query) throw new Error("Colors and frontend config query is not defined");
|
|
60
|
-
const v3RootConfig = (await executeQuery(query)).me.getProductsConfigByVersion?.
|
|
61
|
-
const v3FrontendConfig = transformSnakeToCamel(v3RootConfig);
|
|
138
|
+
const v3RootConfig = (await executeQuery(query)).me.getProductsConfigByVersion?.v_three_config?.values;
|
|
139
|
+
const v3FrontendConfig = v3FrontendConfigCleanup(transformSnakeToCamel(v3RootConfig));
|
|
62
140
|
const v3MountingConfigs = (transformSnakeToCamel(v3RootConfig?.mounting_configs) ?? []).reduce((acc, { key, config }) => {
|
|
63
141
|
acc[key] = validateAndTransformMountingConfig(config, key);
|
|
64
142
|
return acc;
|
|
@@ -68,7 +146,7 @@ const GraphQLProvider = ({ children, requestV3Config = false, mockV3ConfigToDepr
|
|
|
68
146
|
widgetConfigId,
|
|
69
147
|
...rest
|
|
70
148
|
}]));
|
|
71
|
-
const v3pageVariants = v3RootConfig?.page_variants.map(validateAndTransformPageVariants);
|
|
149
|
+
const v3pageVariants = Array.isArray(v3RootConfig?.page_variants) ? v3RootConfig?.page_variants.map(validateAndTransformPageVariants) : DEFAULT_PAGE_VARIANTS;
|
|
72
150
|
const v3ColorsConfig = transformSnakeToCamel(v3RootConfig?.colors?.values);
|
|
73
151
|
if (!v3RootConfig && mockV3ConfigToDeprecatedConfig) return {
|
|
74
152
|
colorsConfig: !window.location.href.includes("globals=merchant") ? mockV3ColorsConfig : v3ColorsConfig,
|
|
@@ -76,7 +154,10 @@ const GraphQLProvider = ({ children, requestV3Config = false, mockV3ConfigToDepr
|
|
|
76
154
|
};
|
|
77
155
|
return {
|
|
78
156
|
colorsConfig: v3ColorsConfig,
|
|
79
|
-
frontendConfig:
|
|
157
|
+
frontendConfig: {
|
|
158
|
+
...v3FrontendConfig,
|
|
159
|
+
widgetConfigs: v3WidgetConfigs
|
|
160
|
+
},
|
|
80
161
|
orgPageConfig: {
|
|
81
162
|
pageVariants: v3pageVariants,
|
|
82
163
|
widgetConfigs: v3WidgetConfigs,
|
|
@@ -155,4 +236,4 @@ const useGraphQLClient = () => {
|
|
|
155
236
|
|
|
156
237
|
//#endregion
|
|
157
238
|
export { GraphQLProvider, useGraphQLClient };
|
|
158
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbENvbnRleHQuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRleHRzL2dyYXBocWxDb250ZXh0L2dyYXBocWxDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlLCBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IGJhc2VVcmxBdG9tLCBvcmdMZXZlbEFwaUtleUF0b20gfSBmcm9tICdzcmMvYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZyc7XG5pbXBvcnQgeyBnZXRNZXJjaGFudE9yZ0lkUXVlcnkgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwvcXVlcmllcy9nZXRNZXJjaGFudE9yZ0lkUXVlcnknO1xuaW1wb3J0IHsgdmFsaWRhdGVHcmFwaFFMT3JnSWQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVHcmFwaFFMT3JnSWQnO1xuaW1wb3J0IHtcbiAgR2V0TWVyY2hhbnRDb2xvcnNRdWVyeURhdGEsXG4gIEdldE1lcmNoYW50RnJvbnRlbmRDb25maWdRdWVyeURhdGEsXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbCc7XG5pbXBvcnQgeyBDb2xvck1hcHBpbmcgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbG9yc0NvbmZpZyc7XG5pbXBvcnQgeyBGcm9udGVuZENvbmZpZyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZnJvbnRlbmRDb25maWcnO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHsgY29uZmlnVmVyc2lvbiB9IGZyb20gJ3NyYy90eXBlcy9jb25maWctdmVyc2lvbnMnO1xuaW1wb3J0IHtcbiAgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwLFxuICB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtTW91bnRpbmdDb25maWcsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtUGFnZVZhcmlhbnRzLFxufSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IEZyb250ZW5kQ29uZmlnVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2Zyb250ZW5kQ29uZmlnVjMnO1xuaW1wb3J0IHsgQ29sb3JNYXBwaW5nVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbG9yc0NvbmZpZ1YzJztcbmltcG9ydCB7IG1vY2tWM0NvbG9yc0NvbmZpZywgbW9ja1YzRnJvbnRlbmRDb25maWcgfSBmcm9tICcuL21vY2tWM0NvbmZpZyc7XG5pbXBvcnQgeyBDb25maWdWZXJzaW9uRW51bSwgV2lkZ2V0Q29uZmlnVjMgfSBmcm9tICcuLi90eXBlc1YzJztcbmltcG9ydCB7IE9yZ1BhZ2VDb25maWcsIFBhZ2VWYXJpYW50Q29uZmlnLCBXaWRnZXRNb3VudGluZ0NvbmZpZyB9IGZyb20gJy4uL3R5cGVzJztcblxuaW50ZXJmYWNlIEJhc2VNZUNvbmZpZ1F1ZXJ5UmVzcG9uc2Uge1xuICBtZToge1xuICAgIG9yZz86IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgfTtcbiAgICBnZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbj86IHtcbiAgICAgIGZyb250ZW5kPzoge1xuICAgICAgICB2YWx1ZXM6IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxHZXRNZXJjaGFudEZyb250ZW5kQ29uZmlnUXVlcnlEYXRhPjtcbiAgICAgIH07XG4gICAgICBjb2xvcnM/OiB7IHZhbHVlczogQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEdldE1lcmNoYW50Q29sb3JzUXVlcnlEYXRhPiB9O1xuICAgIH07XG4gIH07XG59XG5leHBvcnQgdHlwZSBDb2xvcnNDb25maWdSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxDb2xvck1hcHBpbmc+O1xuZXhwb3J0IHR5cGUgRnJvbnRlbmRDb25maWdSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxGcm9udGVuZENvbmZpZz47XG5leHBvcnQgdHlwZSBDb2xvcnNDb25maWdWM1Jlc3BvbnNlID0gQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPENvbG9yTWFwcGluZ1YzPjtcbmV4cG9ydCB0eXBlIEZyb250ZW5kQ29uZmlnVjNSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxGcm9udGVuZENvbmZpZ1YzPjtcblxuZXhwb3J0IHR5cGUgR3JhcGhRbENvbmZpZ1ZhbHVlcyA9IHtcbiAgY29sb3JzQ29uZmlnPzogQ29sb3JzQ29uZmlnUmVzcG9uc2UgfCBDb2xvcnNDb25maWdWM1Jlc3BvbnNlO1xuICBmcm9udGVuZENvbmZpZz86IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxGcm9udGVuZENvbmZpZyB8IEZyb250ZW5kQ29uZmlnVjM+O1xuICBvcmdQYWdlQ29uZmlnPzogT3JnUGFnZUNvbmZpZztcbn07XG5cbmludGVyZmFjZSBHcmFwaFFMQ29udGV4dFZhbHVlIHtcbiAgZXhlY3V0ZVF1ZXJ5OiA8VD4ocXVlcnk6IHN0cmluZywgdmFyaWFibGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IFByb21pc2U8VD47XG4gIGdldE9yZ0lkOiAoKSA9PiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD47XG4gIGdldENvbG9yc0FuZEZyb250ZW5kQ29uZmlnOiAoKSA9PiBQcm9taXNlPEdyYXBoUWxDb25maWdWYWx1ZXM+O1xuICBnZXRWM0NvbmZpZzogKCkgPT4gUHJvbWlzZTxHcmFwaFFsQ29uZmlnVmFsdWVzPjtcbiAgZ2V0Q29uZmlnOiAoKSA9PiBQcm9taXNlPEdyYXBoUWxDb25maWdWYWx1ZXM+O1xuICBpc1JlYWR5OiBib29sZWFuO1xufVxuXG5jb25zdCBHcmFwaFFMQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8R3JhcGhRTENvbnRleHRWYWx1ZSB8IG51bGw+KG51bGwpO1xuXG5jb25zdCBjb2xvcnNBbmRGcm9udGVuZENvbmZpZ1F1ZXJ5ID0gKCkgPT4gYFxuICBxdWVyeSAoJHZlcnNpb246IFN0cmluZyA9IFwiJHtjb25maWdWZXJzaW9uKCl9XCIpIHtcbiAgICBtZSB7XG4gICAgICBnZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbih2ZXJzaW9uOiAkdmVyc2lvbikge1xuICAgICAgICBmcm9udGVuZCB7IHZhbHVlcyB9XG4gICAgICAgIGNvbG9ycyB7IHZhbHVlcyB9XG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG50eXBlIEdyYXBoUUxQcm92aWRlclByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICByZXF1ZXN0VjNDb25maWc/OiBib29sZWFuO1xuICBtb2NrVjNDb25maWdUb0RlcHJlY2F0ZWRDb25maWc/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IEdyYXBoUUxQcm92aWRlciA9ICh7XG4gIGNoaWxkcmVuLFxuICByZXF1ZXN0VjNDb25maWcgPSBmYWxzZSxcbiAgbW9ja1YzQ29uZmlnVG9EZXByZWNhdGVkQ29uZmlnID0gZmFsc2UsXG59OiBHcmFwaFFMUHJvdmlkZXJQcm9wcykgPT4ge1xuICBjb25zdCBhcGlLZXkgPSB1c2VBdG9tVmFsdWUob3JnTGV2ZWxBcGlLZXlBdG9tKTtcbiAgY29uc3QgYmFzZVVybCA9IHVzZUF0b21WYWx1ZShiYXNlVXJsQXRvbSk7XG4gIGNvbnN0IGlzUmVhZHkgPSB1c2VNZW1vKCgpID0+IEJvb2xlYW4oYXBpS2V5ICYmIGJhc2VVcmwpLCBbYXBpS2V5LCBiYXNlVXJsXSk7XG5cbiAgY29uc3QgZXhlY3V0ZVF1ZXJ5ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHF1ZXJ5OiBzdHJpbmcsIHZhcmlhYmxlcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gICAgICBpZiAoIWlzUmVhZHkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHcmFwaFFMIGNsaWVudCBub3QgcmVhZHkgLSBtaXNzaW5nIGFwaUtleSBvciBiYXNlVXJsJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7YmFzZVVybH0vdjEvZ3JhcGhxbGAsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthcGlLZXl9YCxcbiAgICAgICAgfSxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBxdWVyeSwgdmFyaWFibGVzIH0pLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBHcmFwaFFMIHJlcXVlc3QgZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICAgIGlmIChyZXN1bHQuZXJyb3JzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgR3JhcGhRTCBlcnJvcnM6ICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0LmVycm9ycyl9YCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgICB9LFxuICAgIFthcGlLZXksIGJhc2VVcmwsIGlzUmVhZHldLFxuICApO1xuXG4gIGNvbnN0IGdldE9yZ0lkID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZXhlY3V0ZVF1ZXJ5KGdldE1lcmNoYW50T3JnSWRRdWVyeSk7XG4gICAgcmV0dXJuIHZhbGlkYXRlR3JhcGhRTE9yZ0lkKHJlc3BvbnNlLm1lLm9yZz8uaWQpO1xuICB9LCBbZXhlY3V0ZVF1ZXJ5XSk7XG5cbiAgY29uc3QgZ2V0VjNDb25maWcgPSB1c2VDYWxsYmFjayhhc3luYyAoKTogUHJvbWlzZTxHcmFwaFFsQ29uZmlnVmFsdWVzPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgY29sb3JzQW5kRnJvbnRlbmRDb25maWdRdWVyeSgpO1xuICAgICAgaWYgKCFxdWVyeSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbG9ycyBhbmQgZnJvbnRlbmQgY29uZmlnIHF1ZXJ5IGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGV4ZWN1dGVRdWVyeShxdWVyeSk7XG5cbiAgICAgIC8vIFdlIG1heSB1cGRhdGUgdGhpcyByb290IGNvbmZpZyBsb2NhdGlvbiBpbiB0aGUgZnV0dXJlXG4gICAgICBjb25zdCB2M1Jvb3RDb25maWcgPVxuICAgICAgICByZXNwb25zZS5tZS5nZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbj8uZnJvbnRlbmQ/LnZhbHVlcz8udWlfY29uZmlncz8udl90aHJlZV9jb25maWc7XG5cbiAgICAgIGNvbnN0IHYzRnJvbnRlbmRDb25maWcgPSB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwodjNSb290Q29uZmlnKSBhcyBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2U7XG5cbiAgICAgIGNvbnN0IHYzTW91bnRpbmdDb25maWdzQXJyYXkgPSAodHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZz8ubW91bnRpbmdfY29uZmlncykgPz9cbiAgICAgICAgW10pIGFzIHVua25vd24gYXMgeyBrZXk6IHN0cmluZzsgY29uZmlnOiBXaWRnZXRNb3VudGluZ0NvbmZpZyB9W107XG5cbiAgICAgIGNvbnN0IHYzTW91bnRpbmdDb25maWdzID0gdjNNb3VudGluZ0NvbmZpZ3NBcnJheS5yZWR1Y2UoXG4gICAgICAgIChhY2MsIHsga2V5LCBjb25maWcgfSkgPT4ge1xuICAgICAgICAgIGFjY1trZXldID0gdmFsaWRhdGVBbmRUcmFuc2Zvcm1Nb3VudGluZ0NvbmZpZyhjb25maWcsIGtleSk7XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSxcbiAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgV2lkZ2V0TW91bnRpbmdDb25maWc+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgdjN3aWRnZXRDb25maWdzQXJyYXkgPSAodHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZz8ud2lkZ2V0X2NvbmZpZ3MpID8/XG4gICAgICAgIFtdKSBhcyB1bmtub3duIGFzIFdpZGdldENvbmZpZ1YzW107XG4gICAgICBjb25zdCB2M1dpZGdldENvbmZpZ3MgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIHYzd2lkZ2V0Q29uZmlnc0FycmF5Py5tYXAoKHsgd2lkZ2V0Q29uZmlnSWQsIC4uLnJlc3QgfTogV2lkZ2V0Q29uZmlnVjMpID0+IFtcbiAgICAgICAgICB3aWRnZXRDb25maWdJZCxcbiAgICAgICAgICB7IHdpZGdldENvbmZpZ0lkLCAuLi5yZXN0IH0gYXMgV2lkZ2V0Q29uZmlnVjMsXG4gICAgICAgIF0pLFxuICAgICAgKSBhcyBSZWNvcmQ8c3RyaW5nLCBXaWRnZXRDb25maWdWMz47XG4gICAgICBjb25zdCB2M3BhZ2VWYXJpYW50cyA9IHYzUm9vdENvbmZpZz8ucGFnZV92YXJpYW50cy5tYXAoXG4gICAgICAgIHZhbGlkYXRlQW5kVHJhbnNmb3JtUGFnZVZhcmlhbnRzLFxuICAgICAgKSBhcyBQYWdlVmFyaWFudENvbmZpZ1tdO1xuXG4gICAgICBjb25zdCB2M0NvbG9yc0NvbmZpZyA9IHRyYW5zZm9ybVNuYWtlVG9DYW1lbCh2M1Jvb3RDb25maWc/LmNvbG9ycz8udmFsdWVzKTtcblxuICAgICAgLy8gSWYgdGhlIHYzIHJvb3QgY29uZmlnIGlzIG5vdCBmb3VuZCBhbmQgd2UgYXJlIGNvbmZpZ3VyZWQgdG8gcmV0dXJuIHRoZSBkZXByZWNhdGVkIGNvbmZpZywgd2Ugd2lsbCByZXR1cm4gdGhlIG1vY2tlZCBjb25maWdcbiAgICAgIGlmICghdjNSb290Q29uZmlnICYmIG1vY2tWM0NvbmZpZ1RvRGVwcmVjYXRlZENvbmZpZykge1xuICAgICAgICBjb25zdCBpc1NlbWFudGljQ29sb3JzID0gIXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdnbG9iYWxzPW1lcmNoYW50Jyk7XG4gICAgICAgIGNvbnN0IGNvbG9yc0NvbmZpZyA9IG1vY2tWM0NvbG9yc0NvbmZpZztcbiAgICAgICAgY29uc3QgZnJvbnRlbmRDb25maWcgPSBtb2NrVjNGcm9udGVuZENvbmZpZztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb2xvcnNDb25maWc6IGlzU2VtYW50aWNDb2xvcnNcbiAgICAgICAgICAgID8gKGNvbG9yc0NvbmZpZyBhcyBDb2xvcnNDb25maWdWM1Jlc3BvbnNlKVxuICAgICAgICAgICAgOiAodjNDb2xvcnNDb25maWcgYXMgQ29sb3JzQ29uZmlnVjNSZXNwb25zZSksXG4gICAgICAgICAgZnJvbnRlbmRDb25maWc6IGZyb250ZW5kQ29uZmlnIGFzIEZyb250ZW5kQ29uZmlnVjNSZXNwb25zZSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3JzQ29uZmlnOiB2M0NvbG9yc0NvbmZpZyBhcyBDb2xvcnNDb25maWdWM1Jlc3BvbnNlLFxuICAgICAgICBmcm9udGVuZENvbmZpZzogdjNGcm9udGVuZENvbmZpZyBhcyBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UsXG4gICAgICAgIG9yZ1BhZ2VDb25maWc6IHtcbiAgICAgICAgICBwYWdlVmFyaWFudHM6IHYzcGFnZVZhcmlhbnRzLFxuICAgICAgICAgIHdpZGdldENvbmZpZ3M6IHYzV2lkZ2V0Q29uZmlncyxcbiAgICAgICAgICBtb3VudGluZ0NvbmZpZ3M6IHYzTW91bnRpbmdDb25maWdzLFxuICAgICAgICB9LFxuICAgICAgICAvLyBUT0RPOiBBZGQgd2lkZ2V0cyBhbmQgb3RoZXIgY29uZmlnIGhlcmVcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBMb2dnZXIubG9nRXJyb3IoJ0Vycm9yIGZldGNoaW5nIGdyYXBocWwgY29sb3JzIGFuZCBmcm9udGVuZCBjb25maWcnLCBlcnIpO1xuICAgICAgcmV0dXJuIHsgY29sb3JzQ29uZmlnOiB1bmRlZmluZWQsIGZyb250ZW5kQ29uZmlnOiB1bmRlZmluZWQgfTtcbiAgICB9XG4gIH0sIFtleGVjdXRlUXVlcnksIG1vY2tWM0NvbmZpZ1RvRGVwcmVjYXRlZENvbmZpZ10pO1xuXG4gIGNvbnN0IGdldENvbG9yc0FuZEZyb250ZW5kQ29uZmlnID0gdXNlQ2FsbGJhY2soYXN5bmMgKCk6IFByb21pc2U8R3JhcGhRbENvbmZpZ1ZhbHVlcz4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IGNvbG9yc0FuZEZyb250ZW5kQ29uZmlnUXVlcnkoKTtcbiAgICAgIGlmICghcXVlcnkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2xvcnMgYW5kIGZyb250ZW5kIGNvbmZpZyBxdWVyeSBpcyBub3QgZGVmaW5lZCcpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBleGVjdXRlUXVlcnkocXVlcnkpO1xuICAgICAgaWYgKFxuICAgICAgICByZXNwb25zZS5tZS5nZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbj8udmVyc2lvbiAhPT0gQ29uZmlnVmVyc2lvbkVudW0uVjMgJiZcbiAgICAgICAgIW1vY2tWM0NvbmZpZ1RvRGVwcmVjYXRlZENvbmZpZ1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGNvbG9yc0NvbmZpZyA9IHJlc3BvbnNlLm1lLmdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uPy5jb2xvcnM/LnZhbHVlcztcbiAgICAgICAgY29uc3QgZnJvbnRlbmRDb25maWcgPSByZXNwb25zZS5tZS5nZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbj8uZnJvbnRlbmQ/LnZhbHVlcztcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRDb2xvckNvbmZpZyA9IHRyYW5zZm9ybVNuYWtlVG9DYW1lbChjb2xvcnNDb25maWcpO1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZEZyb250ZW5kQ29uZmlnID0gdHJhbnNmb3JtU25ha2VUb0NhbWVsKGZyb250ZW5kQ29uZmlnKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb2xvcnNDb25maWc6IHRyYW5zZm9ybWVkQ29sb3JDb25maWcgYXMgQ29sb3JzQ29uZmlnUmVzcG9uc2UsXG4gICAgICAgICAgZnJvbnRlbmRDb25maWc6IHRyYW5zZm9ybWVkRnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdSZXNwb25zZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIC8vIFRPRE86IFJFTU9WRSBNT0NLRUQgQ09ORklHIE9OQ0UgV0UgSEFWRSBUSEUgTkVXIENPTkZJRyBJTVBMRU1FTlRFRCBPTiBCQUNLRU5EXG4gICAgICBjb25zdCBtZXJjaGFudENvbG9yc0NvbmZpZyA9IHJlc3BvbnNlLm1lLmdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uPy5jb2xvcnM/LnZhbHVlcztcbiAgICAgIGNvbnN0IHRyYW5zZm9ybWVkTWVyY2hhbnRDb2xvckNvbmZpZyA9IHRyYW5zZm9ybVNuYWtlVG9DYW1lbChtZXJjaGFudENvbG9yc0NvbmZpZyk7XG5cbiAgICAgIGNvbnN0IGlzU2VtYW50aWNDb2xvcnMgPSAhd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJ2dsb2JhbHM9bWVyY2hhbnQnKTtcblxuICAgICAgY29uc3QgY29sb3JzQ29uZmlnID0gbW9ja1YzQ29sb3JzQ29uZmlnO1xuICAgICAgY29uc3QgZnJvbnRlbmRDb25maWcgPSBtb2NrVjNGcm9udGVuZENvbmZpZztcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3JzQ29uZmlnOiBpc1NlbWFudGljQ29sb3JzXG4gICAgICAgICAgPyAoY29sb3JzQ29uZmlnIGFzIENvbG9yc0NvbmZpZ1YzUmVzcG9uc2UpXG4gICAgICAgICAgOiAodHJhbnNmb3JtZWRNZXJjaGFudENvbG9yQ29uZmlnIGFzIENvbG9yc0NvbmZpZ1YzUmVzcG9uc2UpLFxuICAgICAgICBmcm9udGVuZENvbmZpZzogZnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIExvZ2dlci5sb2dFcnJvcignRXJyb3IgZmV0Y2hpbmcgZ3JhcGhxbCBjb2xvcnMgYW5kIGZyb250ZW5kIGNvbmZpZycsIGVycik7XG4gICAgICByZXR1cm4geyBjb2xvcnNDb25maWc6IHVuZGVmaW5lZCwgZnJvbnRlbmRDb25maWc6IHVuZGVmaW5lZCB9O1xuICAgIH1cbiAgfSwgW2V4ZWN1dGVRdWVyeV0pO1xuXG4gIGNvbnN0IGdldENvbmZpZyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpOiBQcm9taXNlPEdyYXBoUWxDb25maWdWYWx1ZXM+ID0+IHtcbiAgICBjb25zb2xlLmxvZygnR3JhcGhRTFByb3ZpZGVyOiBnZXRDb25maWc6IHJlcXVlc3RWM0NvbmZpZycsIHJlcXVlc3RWM0NvbmZpZyk7XG4gICAgaWYgKHJlcXVlc3RWM0NvbmZpZykge1xuICAgICAgcmV0dXJuIGdldFYzQ29uZmlnKCk7XG4gICAgfVxuICAgIHJldHVybiBnZXRDb2xvcnNBbmRGcm9udGVuZENvbmZpZygpO1xuICB9LCBbZ2V0Q29sb3JzQW5kRnJvbnRlbmRDb25maWcsIGdldFYzQ29uZmlnLCByZXF1ZXN0VjNDb25maWddKTtcblxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGV4ZWN1dGVRdWVyeSxcbiAgICAgIGdldE9yZ0lkLFxuICAgICAgZ2V0Q29sb3JzQW5kRnJvbnRlbmRDb25maWcsXG4gICAgICBnZXRWM0NvbmZpZyxcbiAgICAgIGdldENvbmZpZyxcbiAgICAgIGlzUmVhZHksXG4gICAgfSksXG4gICAgW2V4ZWN1dGVRdWVyeSwgZ2V0T3JnSWQsIGdldENvbG9yc0FuZEZyb250ZW5kQ29uZmlnLCBnZXRWM0NvbmZpZywgZ2V0Q29uZmlnLCBpc1JlYWR5XSxcbiAgKTtcblxuICByZXR1cm4gPEdyYXBoUUxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvR3JhcGhRTENvbnRleHQuUHJvdmlkZXI+O1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUdyYXBoUUxDbGllbnQgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEdyYXBoUUxDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VHcmFwaFFMQ2xpZW50IG11c3QgYmUgdXNlZCB3aXRoaW4gYSBHcmFwaFFMUHJvdmlkZXInKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQTBEQSxNQUFNLGlCQUFpQixjQUEwQyxLQUFLO0FBRXRFLE1BQU0scUNBQXFDOytCQUNaLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBZ0IvQyxNQUFhLG1CQUFtQixFQUM5QixVQUNBLGtCQUFrQixPQUNsQixpQ0FBaUMsWUFDUDtDQUMxQixNQUFNLFNBQVMsYUFBYSxtQkFBbUI7Q0FDL0MsTUFBTSxVQUFVLGFBQWEsWUFBWTtDQUN6QyxNQUFNLFVBQVUsY0FBYyxRQUFRLFVBQVUsUUFBUSxFQUFFLENBQUMsUUFBUSxRQUFRLENBQUM7Q0FFNUUsTUFBTSxlQUFlLFlBQ25CLE9BQU8sT0FBZSxjQUF3QztBQUM1RCxNQUFJLENBQUMsUUFDSCxPQUFNLElBQUksTUFBTSx1REFBdUQ7RUFHekUsTUFBTSxXQUFXLE1BQU0sTUFBTSxHQUFHLFFBQVEsY0FBYztHQUNwRCxRQUFRO0dBQ1IsU0FBUztJQUNQLGdCQUFnQjtJQUNoQixlQUFlLFVB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
|
|
239
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbENvbnRleHQuanMiLCJuYW1lcyI6WyJERUZBVUxUX1BBR0VfVkFSSUFOVFM6IFBhZ2VWYXJpYW50Q29uZmlnW10iLCJ2M3BhZ2VWYXJpYW50czogUGFnZVZhcmlhbnRDb25maWdbXSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9ncmFwaHFsQ29udGV4dC9ncmFwaHFsQ29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFJlYWN0Tm9kZSwgY3JlYXRlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VBdG9tVmFsdWUgfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBiYXNlVXJsQXRvbSwgb3JnTGV2ZWxBcGlLZXlBdG9tIH0gZnJvbSAnc3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWcnO1xuaW1wb3J0IHsgZ2V0TWVyY2hhbnRPcmdJZFF1ZXJ5IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ncmFwaHFsL3F1ZXJpZXMvZ2V0TWVyY2hhbnRPcmdJZFF1ZXJ5JztcbmltcG9ydCB7IHZhbGlkYXRlR3JhcGhRTE9yZ0lkIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlR3JhcGhRTE9yZ0lkJztcbmltcG9ydCB7XG4gIEdldE1lcmNoYW50Q29sb3JzUXVlcnlEYXRhLFxuICBHZXRNZXJjaGFudEZyb250ZW5kQ29uZmlnUXVlcnlEYXRhLFxufSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwnO1xuaW1wb3J0IHsgQ29sb3JNYXBwaW5nIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9jb2xvcnNDb25maWcnO1xuaW1wb3J0IHsgRnJvbnRlbmRDb25maWcgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2Zyb250ZW5kQ29uZmlnJztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IGNvbmZpZ1ZlcnNpb24gfSBmcm9tICdzcmMvdHlwZXMvY29uZmlnLXZlcnNpb25zJztcbmltcG9ydCB7XG4gIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcCxcbiAgdHJhbnNmb3JtU25ha2VUb0NhbWVsLFxuICB2YWxpZGF0ZUFuZFRyYW5zZm9ybU1vdW50aW5nQ29uZmlnLFxuICB2YWxpZGF0ZUFuZFRyYW5zZm9ybVBhZ2VWYXJpYW50cyxcbn0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyBGcm9udGVuZENvbmZpZ1YzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9mcm9udGVuZENvbmZpZ1YzJztcbmltcG9ydCB7IENvbG9yTWFwcGluZ1YzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9jb2xvcnNDb25maWdWMyc7XG5pbXBvcnQgeyBtb2NrVjNDb2xvcnNDb25maWcsIG1vY2tWM0Zyb250ZW5kQ29uZmlnIH0gZnJvbSAnLi9tb2NrVjNDb25maWcnO1xuaW1wb3J0IHsgQ29uZmlnVmVyc2lvbkVudW0sIFBvc2l0aW9uLCBXaWRnZXRDb25maWdWMyB9IGZyb20gJy4uL3R5cGVzVjMnO1xuaW1wb3J0IHtcbiAgT3JnUGFnZUNvbmZpZyxcbiAgUGFnZVZhcmlhbnRDb25maWcsXG4gIFBhZ2VWYXJpYW50VGVzdFR5cGUsXG4gIFdpZGdldE1vdW50aW5nQ29uZmlnLFxufSBmcm9tICcuLi90eXBlcyc7XG5cbmludGVyZmFjZSBCYXNlTWVDb25maWdRdWVyeVJlc3BvbnNlIHtcbiAgbWU6IHtcbiAgICBvcmc/OiB7XG4gICAgICBpZDogc3RyaW5nO1xuICAgIH07XG4gICAgZ2V0UHJvZHVjdHNDb25maWdCeVZlcnNpb24/OiB7XG4gICAgICBmcm9udGVuZD86IHtcbiAgICAgICAgdmFsdWVzOiBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8R2V0TWVyY2hhbnRGcm9udGVuZENvbmZpZ1F1ZXJ5RGF0YT47XG4gICAgICB9O1xuICAgICAgY29sb3JzPzogeyB2YWx1ZXM6IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxHZXRNZXJjaGFudENvbG9yc1F1ZXJ5RGF0YT4gfTtcbiAgICB9O1xuICB9O1xufVxuZXhwb3J0IHR5cGUgQ29sb3JzQ29uZmlnUmVzcG9uc2UgPSBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8Q29sb3JNYXBwaW5nPjtcbmV4cG9ydCB0eXBlIEZyb250ZW5kQ29uZmlnUmVzcG9uc2UgPSBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8RnJvbnRlbmRDb25maWc+O1xuZXhwb3J0IHR5cGUgQ29sb3JzQ29uZmlnVjNSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxDb2xvck1hcHBpbmdWMz47XG5leHBvcnQgdHlwZSBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UgPSBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8RnJvbnRlbmRDb25maWdWMz47XG5cbmV4cG9ydCB0eXBlIEdyYXBoUWxDb25maWdWYWx1ZXMgPSB7XG4gIGNvbG9yc0NvbmZpZz86IENvbG9yc0NvbmZpZ1Jlc3BvbnNlIHwgQ29sb3JzQ29uZmlnVjNSZXNwb25zZTtcbiAgZnJvbnRlbmRDb25maWc/OiBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8RnJvbnRlbmRDb25maWcgfCBGcm9udGVuZENvbmZpZ1YzPjtcbiAgb3JnUGFnZUNvbmZpZz86IE9yZ1BhZ2VDb25maWc7XG59O1xuXG5pbnRlcmZhY2UgR3JhcGhRTENvbnRleHRWYWx1ZSB7XG4gIGV4ZWN1dGVRdWVyeTogPFQ+KHF1ZXJ5OiBzdHJpbmcsIHZhcmlhYmxlcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBQcm9taXNlPFQ+O1xuICBnZXRPcmdJZDogKCkgPT4gUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuICBnZXRDb2xvcnNBbmRGcm9udGVuZENvbmZpZzogKCkgPT4gUHJvbWlzZTxHcmFwaFFsQ29uZmlnVmFsdWVzPjtcbiAgZ2V0VjNDb25maWc6ICgpID0+IFByb21pc2U8R3JhcGhRbENvbmZpZ1ZhbHVlcz47XG4gIGdldENvbmZpZzogKCkgPT4gUHJvbWlzZTxHcmFwaFFsQ29uZmlnVmFsdWVzPjtcbiAgaXNSZWFkeTogYm9vbGVhbjtcbn1cblxuY29uc3QgR3JhcGhRTENvbnRleHQgPSBjcmVhdGVDb250ZXh0PEdyYXBoUUxDb250ZXh0VmFsdWUgfCBudWxsPihudWxsKTtcblxuY29uc3QgY29sb3JzQW5kRnJvbnRlbmRDb25maWdRdWVyeSA9ICgpID0+IGBcbiAgcXVlcnkgKCR2ZXJzaW9uOiBTdHJpbmcgPSBcIiR7Y29uZmlnVmVyc2lvbigpfVwiKSB7XG4gICAgbWUge1xuICAgICAgZ2V0UHJvZHVjdHNDb25maWdCeVZlcnNpb24odmVyc2lvbjogJHZlcnNpb24pIHtcbiAgICAgICAgZnJvbnRlbmQgeyB2YWx1ZXMgfVxuICAgICAgICBjb2xvcnMgeyB2YWx1ZXMgfVxuICAgICAgICB2X3RocmVlX2NvbmZpZyB7IHZhbHVlcyB9XG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG50eXBlIEdyYXBoUUxQcm92aWRlclByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICByZXF1ZXN0VjNDb25maWc/OiBib29sZWFuO1xuICBtb2NrVjNDb25maWdUb0RlcHJlY2F0ZWRDb25maWc/OiBib29sZWFuO1xufTtcblxuY29uc3QgREVGQVVMVF9QQUdFX1ZBUklBTlRTOiBQYWdlVmFyaWFudENvbmZpZ1tdID0gW1xuICB7XG4gICAgdmFyaWFudElkOiAncGxwJyxcbiAgICB2YXJpYW50VHlwZTogJ3BscCcsXG4gICAgcGxwSWRFeHRyYWN0b3I6ICd1cmwtcmVzb2x2ZXItcGxwLWlkJyxcbiAgICB3aWRnZXRNb3VudGluZzogW10sXG4gICAgdmFyaWFudFRlc3RzOiBbXG4gICAgICB7XG4gICAgICAgIHRlc3RUeXBlOiBQYWdlVmFyaWFudFRlc3RUeXBlLlVybFJlc29sdmVyLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgdmFyaWFudElkOiAncGRwJyxcbiAgICB2YXJpYW50VHlwZTogJ3BkcCcsXG4gICAgcHJvZHVjdElkRXh0cmFjdG9yOiAndXJsLXJlc29sdmVyLXByb2R1Y3QtaWQnLFxuICAgIHdpZGdldE1vdW50aW5nOiBbXSxcbiAgICB2YXJpYW50VGVzdHM6IFtcbiAgICAgIHtcbiAgICAgICAgdGVzdFR5cGU6IFBhZ2VWYXJpYW50VGVzdFR5cGUuVXJsUmVzb2x2ZXIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG5dO1xuXG5jb25zdCBtYXBQb3NpdGlvblRvQ2FtZWxDYXNlID0gKHBvc2l0aW9uOiBzdHJpbmcpOiBQb3NpdGlvbiA9PiB7XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2JvdHRvbS1sZWZ0Jykge1xuICAgIHJldHVybiAnYm90dG9tTGVmdCc7XG4gIH1cbiAgaWYgKHBvc2l0aW9uID09PSAnbWlkZGxlLWxlZnQnKSB7XG4gICAgcmV0dXJuICdtaWRkbGVMZWZ0JztcbiAgfVxuICBpZiAocG9zaXRpb24gPT09ICdtaWRkbGUtcmlnaHQnKSB7XG4gICAgcmV0dXJuICdtaWRkbGVSaWdodCc7XG4gIH1cbiAgaWYgKHBvc2l0aW9uID09PSAnYm90dG9tLXJpZ2h0Jykge1xuICAgIHJldHVybiAnYm90dG9tUmlnaHQnO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwb3NpdGlvbjogJHtwb3NpdGlvbn1gKTtcbn07XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGRvIHNvbWUgYWRkaXRpb25hbCBjbGVhbnVwIG9mIHRoZSB2MyBmcm9udGVuZCBjb25maWcgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbmZpZyBpcyBpbiB0aGUgY29ycmVjdCBmb3JtYXQuXG4gKi9cbmNvbnN0IHYzRnJvbnRlbmRDb25maWdDbGVhbnVwID0gKFxuICB2M1Jvb3RDb25maWc6IEZyb250ZW5kQ29uZmlnVjNSZXNwb25zZSxcbik6IEZyb250ZW5kQ29uZmlnVjNSZXNwb25zZSA9PiB7XG4gIGNvbnN0IHsgdWlDb25maWdzIH0gPSB2M1Jvb3RDb25maWc7XG4gIGlmICghdWlDb25maWdzKSB7XG4gICAgcmV0dXJuIHYzUm9vdENvbmZpZztcbiAgfVxuICBjb25zdCB7IGZsb2F0aW5nQnV0dG9uLCBsb29rQW5kRmVlbCB9ID0gdWlDb25maWdzIGFzIGFueTtcbiAgaWYgKCFmbG9hdGluZ0J1dHRvbiB8fCAhbG9va0FuZEZlZWwpIHtcbiAgICByZXR1cm4gdjNSb290Q29uZmlnO1xuICB9XG4gIGNvbnN0IHsgZm9udFNpemUsIGxpbmVIZWlnaHQgfSA9IGxvb2tBbmRGZWVsLnR5cG9ncmFwaHkgYXMgYW55O1xuICByZXR1cm4ge1xuICAgIC4uLnYzUm9vdENvbmZpZyxcbiAgICB1aUNvbmZpZ3M6IHtcbiAgICAgIC4uLnVpQ29uZmlncyxcbiAgICAgIGZsb2F0aW5nQnV0dG9uOiB7XG4gICAgICAgIC4uLmZsb2F0aW5nQnV0dG9uLFxuICAgICAgICBwb3NpdGlvbjogbWFwUG9zaXRpb25Ub0NhbWVsQ2FzZShcbiAgICAgICAgICB2M1Jvb3RDb25maWcudWlDb25maWdzPy5mbG9hdGluZ0J1dHRvbj8ucG9zaXRpb24gYXMgc3RyaW5nLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIGxvb2tBbmRGZWVsOiB7XG4gICAgICAgIC4uLmxvb2tBbmRGZWVsLFxuICAgICAgICBjaGF0SGVhZGVyTG9nb0RhcmtTcmM6IGxvb2tBbmRGZWVsLmNoYXRIZWFkZXJMb2dvRGFya1NyYyB8fCBsb29rQW5kRmVlbC5jaGF0SGVhZGVyTG9nb1NyYyxcbiAgICAgICAgY2hhdEhlYWRlckxvZ29MaWdodFNyYzogbG9va0FuZEZlZWwuY2hhdEhlYWRlckxvZ29MaWdodFNyYyB8fCBsb29rQW5kRmVlbC5jaGF0SGVhZGVyTG9nb1NyYyxcbiAgICAgICAgdHlwb2dyYXBoeToge1xuICAgICAgICAgIC4uLmxvb2tBbmRGZWVsLnR5cG9ncmFwaHksXG4gICAgICAgICAgZm9udFNpemU6IHtcbiAgICAgICAgICAgIC8vIFRoZSBmb250cyBzaXplcyBhcmUgZGVmaW5lZCBkaWZmZXJlbnRseSBpbiB0aGUgYmFja2VuZCBjb25maWdcbiAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gbWFwIHRoZSB2YWx1ZXMgdG8gdGhlIGNvcnJlY3QgY2FtZWwgY2FzZSBrZXlzXG4gICAgICAgICAgICBiMTogZm9udFNpemU/LmIxIHx8IGZvbnRTaXplPy5iXzEsXG4gICAgICAgICAgICBiMjogZm9udFNpemU/LmIyIHx8IGZvbnRTaXplPy5iXzIsXG4gICAgICAgICAgICBiMzogZm9udFNpemU/LmIzIHx8IGZvbnRTaXplPy5iXzMsXG4gICAgICAgICAgICBiNDogZm9udFNpemU/LmI0IHx8IGZvbnRTaXplPy5iXzQsXG4gICAgICAgICAgICBiNTogZm9udFNpemU/LmI1IHx8IGZvbnRTaXplPy5iXzUsXG4gICAgICAgICAgICBoMTogZm9udFNpemU/LmgxIHx8IGZvbnRTaXplPy5oXzEsXG4gICAgICAgICAgICBoMjogZm9udFNpemU/LmgyIHx8IGZvbnRTaXplPy5oXzIsXG4gICAgICAgICAgICBoMzogZm9udFNpemU/LmgzIHx8IGZvbnRTaXplPy5oXzMsXG4gICAgICAgICAgICBsMTogZm9udFNpemU/LmwxIHx8IGZvbnRTaXplPy5sXzEsXG4gICAgICAgICAgICBsMjogZm9udFNpemU/LmwyIHx8IGZvbnRTaXplPy5sXzIsXG4gICAgICAgICAgICB0MTogZm9udFNpemU/LnQxIHx8IGZvbnRTaXplPy50XzEsXG4gICAgICAgICAgICB0MjogZm9udFNpemU/LnQyIHx8IGZvbnRTaXplPy50XzIsXG4gICAgICAgICAgICB0MzogZm9udFNpemU/LnQzIHx8IGZvbnRTaXplPy50XzMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsaW5lSGVpZ2h0OiB7XG4gICAgICAgICAgICAuLi5sb29rQW5kRmVlbC50eXBvZ3JhcGh5LmxpbmVIZWlnaHQsXG4gICAgICAgICAgICAnMTE0JzogbGluZUhlaWdodD8ubGhfMTE0IHx8IGxpbmVIZWlnaHQ/LlsxMTRdLFxuICAgICAgICAgICAgJzExNic6IGxpbmVIZWlnaHQ/LmxoXzExNiB8fCBsaW5lSGVpZ2h0Py5bMTE2XSxcbiAgICAgICAgICAgICcxMTgnOiBsaW5lSGVpZ2h0Py5saF8xMTggfHwgbGluZUhlaWdodD8uWzExOF0sXG4gICAgICAgICAgICAnMTIwJzogbGluZUhlaWdodD8ubGhfMTIwIHx8IGxpbmVIZWlnaHQ/LlsxMjBdLFxuICAgICAgICAgICAgJzEyNCc6IGxpbmVIZWlnaHQ/LmxoXzEyNCB8fCBsaW5lSGVpZ2h0Py5bMTI0XSxcbiAgICAgICAgICAgICcxMjgnOiBsaW5lSGVpZ2h0Py5saF8xMjggfHwgbGluZUhlaWdodD8uWzEyOF0sXG4gICAgICAgICAgICAnMTMwJzogbGluZUhlaWdodD8ubGhfMTMwIHx8IGxpbmVIZWlnaHQ/LlsxMzBdLFxuICAgICAgICAgICAgJzEzMyc6IGxpbmVIZWlnaHQ/LmxoXzEzMyB8fCBsaW5lSGVpZ2h0Py5bMTMzXSxcbiAgICAgICAgICAgICcxNDAnOiBsaW5lSGVpZ2h0Py5saF8xNDAgfHwgbGluZUhlaWdodD8uWzE0MF0sXG4gICAgICAgICAgICAnMTQ4JzogbGluZUhlaWdodD8ubGhfMTQ4IHx8IGxpbmVIZWlnaHQ/LlsxNDhdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgR3JhcGhRTFByb3ZpZGVyID0gKHtcbiAgY2hpbGRyZW4sXG4gIHJlcXVlc3RWM0NvbmZpZyA9IGZhbHNlLFxuICBtb2NrVjNDb25maWdUb0RlcHJlY2F0ZWRDb25maWcgPSBmYWxzZSxcbn06IEdyYXBoUUxQcm92aWRlclByb3BzKSA9PiB7XG4gIGNvbnN0IGFwaUtleSA9IHVzZUF0b21WYWx1ZShvcmdMZXZlbEFwaUtleUF0b20pO1xuICBjb25zdCBiYXNlVXJsID0gdXNlQXRvbVZhbHVlKGJhc2VVcmxBdG9tKTtcbiAgY29uc3QgaXNSZWFkeSA9IHVzZU1lbW8oKCkgPT4gQm9vbGVhbihhcGlLZXkgJiYgYmFzZVVybCksIFthcGlLZXksIGJhc2VVcmxdKTtcblxuICBjb25zdCBleGVjdXRlUXVlcnkgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocXVlcnk6IHN0cmluZywgdmFyaWFibGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHtcbiAgICAgIGlmICghaXNSZWFkeSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dyYXBoUUwgY2xpZW50IG5vdCByZWFkeSAtIG1pc3NpbmcgYXBpS2V5IG9yIGJhc2VVcmwnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtiYXNlVXJsfS92MS9ncmFwaHFsYCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2FwaUtleX1gLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHF1ZXJ5LCB2YXJpYWJsZXMgfSksXG4gICAgICB9KTtcblxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEdyYXBoUUwgcmVxdWVzdCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgICAgaWYgKHJlc3VsdC5lcnJvcnMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBHcmFwaFFMIGVycm9yczogJHtKU09OLnN0cmluZ2lmeShyZXN1bHQuZXJyb3JzKX1gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0sXG4gICAgW2FwaUtleSwgYmFzZVVybCwgaXNSZWFkeV0sXG4gICk7XG5cbiAgY29uc3QgZ2V0T3JnSWQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBleGVjdXRlUXVlcnkoZ2V0TWVyY2hhbnRPcmdJZFF1ZXJ5KTtcbiAgICByZXR1cm4gdmFsaWRhdGVHcmFwaFFMT3JnSWQocmVzcG9uc2UubWUub3JnPy5pZCk7XG4gIH0sIFtleGVjdXRlUXVlcnldKTtcblxuICBjb25zdCBnZXRWM0NvbmZpZyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpOiBQcm9taXNlPEdyYXBoUWxDb25maWdWYWx1ZXM+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnkgPSBhd2FpdCBjb2xvcnNBbmRGcm9udGVuZENvbmZpZ1F1ZXJ5KCk7XG4gICAgICBpZiAoIXF1ZXJ5KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ29sb3JzIGFuZCBmcm9udGVuZCBjb25maWcgcXVlcnkgaXMgbm90IGRlZmluZWQnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KTtcblxuICAgICAgLy8gV2UgbWF5IHVwZGF0ZSB0aGlzIHJvb3QgY29uZmlnIGxvY2F0aW9uIGluIHRoZSBmdXR1cmVcbiAgICAgIGNvbnN0IHYzUm9vdENvbmZpZyA9IHJlc3BvbnNlLm1lLmdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uPy52X3RocmVlX2NvbmZpZz8udmFsdWVzO1xuXG4gICAgICBjb25zdCB2M0Zyb250ZW5kQ29uZmlnID0gdjNGcm9udGVuZENvbmZpZ0NsZWFudXAoXG4gICAgICAgIHRyYW5zZm9ybVNuYWtlVG9DYW1lbCh2M1Jvb3RDb25maWcpIGFzIEZyb250ZW5kQ29uZmlnVjNSZXNwb25zZSxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHYzTW91bnRpbmdDb25maWdzQXJyYXkgPSAodHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZz8ubW91bnRpbmdfY29uZmlncykgPz9cbiAgICAgICAgW10pIGFzIHVua25vd24gYXMgeyBrZXk6IHN0cmluZzsgY29uZmlnOiBXaWRnZXRNb3VudGluZ0NvbmZpZyB9W107XG5cbiAgICAgIGNvbnN0IHYzTW91bnRpbmdDb25maWdzID0gdjNNb3VudGluZ0NvbmZpZ3NBcnJheS5yZWR1Y2UoXG4gICAgICAgIChhY2MsIHsga2V5LCBjb25maWcgfSkgPT4ge1xuICAgICAgICAgIGFjY1trZXldID0gdmFsaWRhdGVBbmRUcmFuc2Zvcm1Nb3VudGluZ0NvbmZpZyhjb25maWcsIGtleSk7XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSxcbiAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgV2lkZ2V0TW91bnRpbmdDb25maWc+LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgdjN3aWRnZXRDb25maWdzQXJyYXkgPSAodHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZz8ud2lkZ2V0X2NvbmZpZ3MpID8/XG4gICAgICAgIFtdKSBhcyB1bmtub3duIGFzIFdpZGdldENvbmZpZ1YzW107XG4gICAgICBjb25zdCB2M1dpZGdldENvbmZpZ3MgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIHYzd2lkZ2V0Q29uZmlnc0FycmF5Py5tYXAoKHsgd2lkZ2V0Q29uZmlnSWQsIC4uLnJlc3QgfTogV2lkZ2V0Q29uZmlnVjMpID0+IFtcbiAgICAgICAgICB3aWRnZXRDb25maWdJZCxcbiAgICAgICAgICB7IHdpZGdldENvbmZpZ0lkLCAuLi5yZXN0IH0gYXMgV2lkZ2V0Q29uZmlnVjMsXG4gICAgICAgIF0pLFxuICAgICAgKSBhcyBSZWNvcmQ8c3RyaW5nLCBXaWRnZXRDb25maWdWMz47XG4gICAgICBjb25zdCB2M3BhZ2VWYXJpYW50czogUGFnZVZhcmlhbnRDb25maWdbXSA9IEFycmF5LmlzQXJyYXkodjNSb290Q29uZmlnPy5wYWdlX3ZhcmlhbnRzKVxuICAgICAgICA/IHYzUm9vdENvbmZpZz8ucGFnZV92YXJpYW50cy5tYXAodmFsaWRhdGVBbmRUcmFuc2Zvcm1QYWdlVmFyaWFudHMpXG4gICAgICAgIDogREVGQVVMVF9QQUdFX1ZBUklBTlRTO1xuXG4gICAgICBjb25zdCB2M0NvbG9yc0NvbmZpZyA9IHRyYW5zZm9ybVNuYWtlVG9DYW1lbCh2M1Jvb3RDb25maWc/LmNvbG9ycz8udmFsdWVzKTtcblxuICAgICAgLy8gSWYgdGhlIHYzIHJvb3QgY29uZmlnIGlzIG5vdCBmb3VuZCBhbmQgd2UgYXJlIGNvbmZpZ3VyZWQgdG8gcmV0dXJuIHRoZSBkZXByZWNhdGVkIGNvbmZpZywgd2Ugd2lsbCByZXR1cm4gdGhlIG1vY2tlZCBjb25maWdcbiAgICAgIGlmICghdjNSb290Q29uZmlnICYmIG1vY2tWM0NvbmZpZ1RvRGVwcmVjYXRlZENvbmZpZykge1xuICAgICAgICBjb25zdCBpc1NlbWFudGljQ29sb3JzID0gIXdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdnbG9iYWxzPW1lcmNoYW50Jyk7XG4gICAgICAgIGNvbnN0IGNvbG9yc0NvbmZpZyA9IG1vY2tWM0NvbG9yc0NvbmZpZztcbiAgICAgICAgY29uc3QgZnJvbnRlbmRDb25maWcgPSBtb2NrVjNGcm9udGVuZENvbmZpZztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb2xvcnNDb25maWc6IGlzU2VtYW50aWNDb2xvcnNcbiAgICAgICAgICAgID8gKGNvbG9yc0NvbmZpZyBhcyBDb2xvcnNDb25maWdWM1Jlc3BvbnNlKVxuICAgICAgICAgICAgOiAodjNDb2xvcnNDb25maWcgYXMgQ29sb3JzQ29uZmlnVjNSZXNwb25zZSksXG4gICAgICAgICAgZnJvbnRlbmRDb25maWc6IGZyb250ZW5kQ29uZmlnIGFzIEZyb250ZW5kQ29uZmlnVjNSZXNwb25zZSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3JzQ29uZmlnOiB2M0NvbG9yc0NvbmZpZyBhcyBDb2xvcnNDb25maWdWM1Jlc3BvbnNlLFxuICAgICAgICBmcm9udGVuZENvbmZpZzoge1xuICAgICAgICAgIC4uLih2M0Zyb250ZW5kQ29uZmlnIGFzIEZyb250ZW5kQ29uZmlnVjNSZXNwb25zZSksXG4gICAgICAgICAgLy8gTmVlZCB0byByZXBsYWNlIHRoZSBhdXRvbWF0aWMgd2lkZ2V0IGNvbmZpZ3Mgd2l0aCB0aGUgb2JqZWN0IGJhc2VkIG9uZXNcbiAgICAgICAgICB3aWRnZXRDb25maWdzOiB2M1dpZGdldENvbmZpZ3MsXG4gICAgICAgIH0sXG4gICAgICAgIG9yZ1BhZ2VDb25maWc6IHtcbiAgICAgICAgICBwYWdlVmFyaWFudHM6IHYzcGFnZVZhcmlhbnRzLFxuICAgICAgICAgIHdpZGdldENvbmZpZ3M6IHYzV2lkZ2V0Q29uZmlncyxcbiAgICAgICAgICBtb3VudGluZ0NvbmZpZ3M6IHYzTW91bnRpbmdDb25maWdzLFxuICAgICAgICB9LFxuICAgICAgICAvLyBUT0RPOiBBZGQgd2lkZ2V0cyBhbmQgb3RoZXIgY29uZmlnIGhlcmVcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBMb2dnZXIubG9nRXJyb3IoJ0Vycm9yIGZldGNoaW5nIGdyYXBocWwgY29sb3JzIGFuZCBmcm9udGVuZCBjb25maWcnLCBlcnIpO1xuICAgICAgcmV0dXJuIHsgY29sb3JzQ29uZmlnOiB1bmRlZmluZWQsIGZyb250ZW5kQ29uZmlnOiB1bmRlZmluZWQgfTtcbiAgICB9XG4gIH0sIFtleGVjdXRlUXVlcnksIG1vY2tWM0NvbmZpZ1RvRGVwcmVjYXRlZENvbmZpZ10pO1xuXG4gIGNvbnN0IGdldENvbG9yc0FuZEZyb250ZW5kQ29uZmlnID0gdXNlQ2FsbGJhY2soYXN5bmMgKCk6IFByb21pc2U8R3JhcGhRbENvbmZpZ1ZhbHVlcz4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IGNvbG9yc0FuZEZyb250ZW5kQ29uZmlnUXVlcnkoKTtcbiAgICAgIGlmICghcXVlcnkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb2xvcnMgYW5kIGZyb250ZW5kIGNvbmZpZyBxdWVyeSBpcyBub3QgZGVmaW5lZCcpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBleGVjdXRlUXVlcnkocXVlcnkpO1xuICAgICAgaWYgKFxuICAgICAgICByZXNwb25zZS5tZS5nZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbj8udmVyc2lvbiAhPT0gQ29uZmlnVmVyc2lvbkVudW0uVjMgJiZcbiAgICAgICAgIW1vY2tWM0NvbmZpZ1RvRGVwcmVjYXRlZENvbmZpZ1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGNvbG9yc0NvbmZpZyA9IHJlc3BvbnNlLm1lLmdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uPy5jb2xvcnM/LnZhbHVlcztcbiAgICAgICAgY29uc3QgZnJvbnRlbmRDb25maWcgPSByZXNwb25zZS5tZS5nZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbj8uZnJvbnRlbmQ/LnZhbHVlcztcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRDb2xvckNvbmZpZyA9IHRyYW5zZm9ybVNuYWtlVG9DYW1lbChjb2xvcnNDb25maWcpO1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZEZyb250ZW5kQ29uZmlnID0gdHJhbnNmb3JtU25ha2VUb0NhbWVsKGZyb250ZW5kQ29uZmlnKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb2xvcnNDb25maWc6IHRyYW5zZm9ybWVkQ29sb3JDb25maWcgYXMgQ29sb3JzQ29uZmlnUmVzcG9uc2UsXG4gICAgICAgICAgZnJvbnRlbmRDb25maWc6IHRyYW5zZm9ybWVkRnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdSZXNwb25zZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIC8vIFRPRE86IFJFTU9WRSBNT0NLRUQgQ09ORklHIE9OQ0UgV0UgSEFWRSBUSEUgTkVXIENPTkZJRyBJTVBMRU1FTlRFRCBPTiBCQUNLRU5EXG4gICAgICBjb25zdCBtZXJjaGFudENvbG9yc0NvbmZpZyA9IHJlc3BvbnNlLm1lLmdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uPy5jb2xvcnM/LnZhbHVlcztcbiAgICAgIGNvbnN0IHRyYW5zZm9ybWVkTWVyY2hhbnRDb2xvckNvbmZpZyA9IHRyYW5zZm9ybVNuYWtlVG9DYW1lbChtZXJjaGFudENvbG9yc0NvbmZpZyk7XG5cbiAgICAgIGNvbnN0IGlzU2VtYW50aWNDb2xvcnMgPSAhd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJ2dsb2JhbHM9bWVyY2hhbnQnKTtcblxuICAgICAgY29uc3QgY29sb3JzQ29uZmlnID0gbW9ja1YzQ29sb3JzQ29uZmlnO1xuICAgICAgY29uc3QgZnJvbnRlbmRDb25maWcgPSBtb2NrVjNGcm9udGVuZENvbmZpZztcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3JzQ29uZmlnOiBpc1NlbWFudGljQ29sb3JzXG4gICAgICAgICAgPyAoY29sb3JzQ29uZmlnIGFzIENvbG9yc0NvbmZpZ1YzUmVzcG9uc2UpXG4gICAgICAgICAgOiAodHJhbnNmb3JtZWRNZXJjaGFudENvbG9yQ29uZmlnIGFzIENvbG9yc0NvbmZpZ1YzUmVzcG9uc2UpLFxuICAgICAgICBmcm9udGVuZENvbmZpZzogZnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIExvZ2dlci5sb2dFcnJvcignRXJyb3IgZmV0Y2hpbmcgZ3JhcGhxbCBjb2xvcnMgYW5kIGZyb250ZW5kIGNvbmZpZycsIGVycik7XG4gICAgICByZXR1cm4geyBjb2xvcnNDb25maWc6IHVuZGVmaW5lZCwgZnJvbnRlbmRDb25maWc6IHVuZGVmaW5lZCB9O1xuICAgIH1cbiAgfSwgW2V4ZWN1dGVRdWVyeV0pO1xuXG4gIGNvbnN0IGdldENvbmZpZyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpOiBQcm9taXNlPEdyYXBoUWxDb25maWdWYWx1ZXM+ID0+IHtcbiAgICBjb25zb2xlLmxvZygnR3JhcGhRTFByb3ZpZGVyOiBnZXRDb25maWc6IHJlcXVlc3RWM0NvbmZpZycsIHJlcXVlc3RWM0NvbmZpZyk7XG4gICAgaWYgKHJlcXVlc3RWM0NvbmZpZykge1xuICAgICAgcmV0dXJuIGdldFYzQ29uZmlnKCk7XG4gICAgfVxuICAgIHJldHVybiBnZXRDb2xvcnNBbmRGcm9udGVuZENvbmZpZygpO1xuICB9LCBbZ2V0Q29sb3JzQW5kRnJvbnRlbmRDb25maWcsIGdldFYzQ29uZmlnLCByZXF1ZXN0VjNDb25maWddKTtcblxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGV4ZWN1dGVRdWVyeSxcbiAgICAgIGdldE9yZ0lkLFxuICAgICAgZ2V0Q29sb3JzQW5kRnJvbnRlbmRDb25maWcsXG4gICAgICBnZXRWM0NvbmZpZyxcbiAgICAgIGdldENvbmZpZyxcbiAgICAgIGlzUmVhZHksXG4gICAgfSksXG4gICAgW2V4ZWN1dGVRdWVyeSwgZ2V0T3JnSWQsIGdldENvbG9yc0FuZEZyb250ZW5kQ29uZmlnLCBnZXRWM0NvbmZpZywgZ2V0Q29uZmlnLCBpc1JlYWR5XSxcbiAgKTtcblxuICByZXR1cm4gPEdyYXBoUUxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvR3JhcGhRTENvbnRleHQuUHJvdmlkZXI+O1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUdyYXBoUUxDbGllbnQgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEdyYXBoUUxDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VHcmFwaFFMQ2xpZW50IG11c3QgYmUgdXNlZCB3aXRoaW4gYSBHcmFwaFFMUHJvdmlkZXInKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUErREEsTUFBTSxpQkFBaUIsY0FBMEMsS0FBSztBQUV0RSxNQUFNLHFDQUFxQzsrQkFDWixlQUFlLENBQUM7Ozs7Ozs7Ozs7QUFpQi9DLE1BQU1BLHdCQUE2QyxDQUNqRDtDQUNFLFdBQVc7Q0FDWCxhQUFhO0NBQ2IsZ0JBQWdCO0NBQ2hCLGdCQUFnQixFQUFFO0NBQ2xCLGNBQWMsQ0FDWixFQUNFLFVBQVUsb0JBQW9CLGFBQy9CLENBQ0Y7Q0FDRixFQUNEO0NBQ0UsV0FBVztDQUNYLGFBQWE7Q0FDYixvQkFBb0I7Q0FDcEIsZ0JBQWdCLEVBQUU7Q0FDbEIsY0FBYyxDQUNaLEVBQ0UsVUFBVSxvQkFBb0IsYUFDL0IsQ0FDRjtDQUNGLENBQ0Y7QUFFRCxNQUFNLDBCQUEwQixhQUErQjtBQUM3RCxLQUFJLGFBQWEsY0FDZixRQUFPO0FBRVQsS0FBSSxhQUFhLGNBQ2YsUUFBTztBQUVULEtBQUksYUFBYSxlQUNmLFFBQU87QUFFVCxLQUFJLGFBQWEsZUFDZixRQUFPO0FBRVQsT0FBTSxJQUFJLE1BQU0scUJBQXFCLFdBQVc7Ozs7O0FBTWxELE1BQU0sMkJBQ0osaUJBQzZCO0NBQzdCLE1BQU0sRUFBRSxjQUFjO0FBQ3RCLEtBQUksQ0FBQyxVQUNILFFBQU87Q0FFVCxNQUFNLEVBQUUsZ0JBQWdCLGdCQUFnQjtBQUN4QyxLQUFJLENBQUMsa0JBQWtCLENBQUMsWUFDdEIsUUFBTztDQUVULE1BQU0sRUFBRSxVQUFVLGVBQWUsWUFBWTtBQUM3QyxRQUFPO0VBQ0wsR0FBRztFQUNILFdBQVc7R0FDVCxHQUFHO0dBQ0gsZ0JBQWdCO0lBQ2QsR0FBRztJQUNILFVBQVUsdUJBQ1IsYUFBYSxXQUFXLGdCQUFnQixTQUN6QztJQUNGO0dBQ0QsYUFBYTtJQUNYLEdBQUc7SUFDSCx1QkFBdUIsWUFBWSx5QkFBeUIsWUFBWTtJQUN4RSx3QkFBd0IsWUFBWSwwQkFBMEIsWUFBWTtJQUMxRSxZQUFZO0tBQ1YsR0FBRyxZQUFZO0tBQ2YsVUFBVTtNQUdSLElBQUksVUFBVSxNQUFNLFVBQVU7TUFDOUIsSUFBSSxVQUFVLE1BQU0sVUFBVTtNQUM5QixJQUFJLFVBQVUsTUFBTSxVQUFVO01BQzlCLElBQUksVUFBVSxNQUFNLFVBQVU7TUFDOUIsSUFBSSxVQUFVLE1BQU0sVUFBVTtNQUM5QixJQUFJLFVBQVUsTUFBTSxVQUFVO01BQzlCLElBQUksVUFBVSxNQUFNLFVBQVU7TUFDOUIsSUFBSSxVQUFVLE1BQU0sVUFBVTtNQUM5QixJQUFJLFVBQVUsTUFBTSxVQUFVO01BQzlCLElBQUksVUFBVSxNQUFNLFVBQVU7TUFDOUIsSUFBSSxVQUFVLE1BQU0sVUFBVTtNQUM5QixJQUFJLFVBQVUsTUFBTSxVQUFVO01BQzlCLElBQUksVUFBVSxNQUFNLFVBQVU7TUFDL0I7S0FDRCxZQUFZO01BQ1YsR0FBRyxZQUFZLFdBQVc7TUFDMUIsT0FBTyxZQUFZLFVBQVUsYUFBYTtNQUMxQyxPQUFPLFlBQVksVUFBVSxhQUFhO01BQzFDLE9BQU8sWUFBWSxVQUFVLGFBQWE7TUFDMUMsT0FBTyxZQUFZLFVBQVUsYUFBYTtNQUMxQyxPQUFPLFlBQVksVUFBVSxhQUFhO01BQzFDLE9BQU8sWUFBWSxVQUFVLGFBQWE7TUFDMUMsT0FBTyxZQUFZLFVBQVUsYUFBYTtNQUMxQyxPQUFPLFlBQVksVUFBVSxhQUFhO01BQzFDLE9BQU8sWUFBWSxVQUFVLGFBQWE7TUFDMUMsT0FBTyxZQUFZLFVBQVUsYUFBYTtNQUMzQztLQUNGO0lBQ0Y7R0FDRjtFQUNGOztBQUdILE1BQWEsbUJBQW1CLEVBQzlCLFVBQ0Esa0JBQWtCLE9BQ2xCLGlDQUFpQyxZQUNQO0NBQzFCLE1BQU0sU0FBUyxhQUFhLG1CQUFtQjtDQUMvQyxNQUFNLFVBQVUsYUFBYSxZQUFZO0NBQ3pDLE1BQU0sVUFBVSxjQUFjLFFBQVEsVUFBVSxRQUFRLEVBQUUsQ0FBQyxRQUFRLFFBQVEsQ0FBQztDQUU1RSxNQUFNLGVBQWUsWUFDbkIsT0FBTyxPQUFlLGNBQXdDO0FBQzVELE1BQUksQ0FBQyxRQUNILE9BQU0sSUFBSSxNQUFNLHVEQUF1RDtFQUd6RSxNQUFNLFdBQVcsTUFBTSxNQUFNLEdBQUcsUUFBUSxjQUFjO0dBQ3BELFFBQVE7R0FDUixTQUFTO0lBQ1AsZ0JBQWdCO0lBQ2hCLGVBQWUsVUFBVTtJQUMxQjtHQUNELE1BQU0sS0FBSyxVQUFVO0lBQUU7SUFBTztJQUFXLENBQUM7R0FDM0MsQ0FBQztBQUVGLE1BQUksQ0FBQyxTQUFTLEdBQ1osT0FBTSxJQUFJLE1BQU0sMkJBQTJCLFNBQVMsYUFBYTtFQUduRSxNQUFNLFNBQVMsTUFBTSxTQUFTLE1BQU07QUFDcEMsTUFBSSxPQUFPLE9BQ1QsT0FBTSxJQUFJLE1BQU0sbUJBQW1CLEtBQUssVUFBVSxPQUFPLE9BQU8sR0FBRztBQUdyRSxTQUFPLE9BQU87SUFFaEI7RUFBQztFQUFRO0VBQVM7RUFBUSxDQUMzQjtDQUVELE1BQU0sV0FBVyxZQUFZLFlBQVk7QUFFdkMsU0FBTyxzQkFEVSxNQUFNLGFBQWEsc0JBQXNCLEVBQ3JCLEdBQUcsS0FBSyxHQUFHO0lBQy9DLENBQUMsYUFBYSxDQUFDO0NBRWxCLE1BQU0sY0FBYyxZQUFZLFlBQTBDO0FBQ3hFLE1BQUk7R0FDRixNQUFNLFFBQVEsTUFBTSw4QkFBOEI7QUFDbEQsT0FBSSxDQUFDLE1BQ0gsT0FBTSxJQUFJLE1BQU0sa0RBQWtEO0dBS3BFLE1BQU0sZ0JBSFcsTUFBTSxhQUFhLE1BQU0sRUFHWixHQUFHLDRCQUE0QixnQkFBZ0I7R0FFN0UsTUFBTSxtQkFBbUIsd0JBQ3ZCLHNCQUFzQixhQUFhLENBQ3BDO0dBS0QsTUFBTSxxQkFIMEIsc0JBQXNCLGNBQWMsaUJBQWlCLElBQ25GLEVBQUUsRUFFNkMsUUFDOUMsS0FBSyxFQUFFLEtBQUssYUFBYTtBQUN4QixRQUFJLE9BQU8sbUNBQW1DLFFBQVEsSUFBSTtBQUMxRCxXQUFPO01BRVQsRUFBRSxDQUNIO0dBRUQsTUFBTSx1QkFBd0Isc0JBQXNCLGNBQWMsZUFBZSxJQUMvRSxFQUFFO0dBQ0osTUFBTSxrQkFBa0IsT0FBTyxZQUM3QixzQkFBc0IsS0FBSyxFQUFFLGdCQUFnQixHQUFHLFdBQTJCLENBQ3pFLGdCQUNBO0lBQUU7SUFBZ0IsR0FBRztJQUFNLENBQzVCLENBQUMsQ0FDSDtHQUNELE1BQU1DLGlCQUFzQyxNQUFNLFFBQVEsY0FBYyxjQUFjLEdBQ2xGLGNBQWMsY0FBYyxJQUFJLGlDQUFpQyxHQUNqRTtHQUVKLE1BQU0saUJBQWlCLHNCQUFzQixjQUFjLFFBQVEsT0FBTztBQUcxRSxPQUFJLENBQUMsZ0JBQWdCLCtCQUluQixRQUFPO0lBQ0wsY0FKdUIsQ0FBQyxPQUFPLFNBQVMsS0FBSyxTQUFTLG1CQUFtQixHQUN0RCxxQkFLZDtJQUNMLGdCQUxxQjtJQU10QjtBQUdILFVBQU87SUFDTCxjQUFjO0lBQ2QsZ0JBQWdCO0tBQ2QsR0FBSTtLQUVKLGVBQWU7S0FDaEI7SUFDRCxlQUFlO0tBQ2IsY0FBYztLQUNkLGVBQWU7S0FDZixpQkFBaUI7S0FDbEI7SUFFRjtXQUNNLEtBQUs7QUFDWixrQkFBTyxTQUFTLHFEQUFxRCxJQUFJO0FBQ3pFLFVBQU87SUFBRSxjQUFjO0lBQVcsZ0JBQWdCO0lBQVc7O0lBRTlELENBQUMsY0FBYywrQkFBK0IsQ0FBQztDQUVsRCxNQUFNLDZCQUE2QixZQUFZLFlBQTBDO0FBQ3ZGLE1BQUk7R0FDRixNQUFNLFFBQVEsTUFBTSw4QkFBOEI7QUFDbEQsT0FBSSxDQUFDLE1BQ0gsT0FBTSxJQUFJLE1BQU0sa0RBQWtEO0dBRXBFLE1BQU0sV0FBVyxNQUFNLGFBQWEsTUFBTTtBQUMxQyxPQUNFLFNBQVMsR0FBRyw0QkFBNEIsWUFBWSxrQkFBa0IsTUFDdEUsQ0FBQyxnQ0FDRDtJQUNBLE1BQU0sZUFBZSxTQUFTLEdBQUcsNEJBQTRCLFFBQVE7SUFDckUsTUFBTSxpQkFBaUIsU0FBUyxHQUFHLDRCQUE0QixVQUFVO0FBR3pFLFdBQU87S0FDTCxjQUg2QixzQkFBc0IsYUFBYTtLQUloRSxnQkFIZ0Msc0JBQXNCLGVBQWU7S0FJdEU7O0dBR0gsTUFBTSx1QkFBdUIsU0FBUyxHQUFHLDRCQUE0QixRQUFRO0dBQzdFLE1BQU0saUNBQWlDLHNCQUFzQixxQkFBcUI7QUFPbEYsVUFBTztJQUNMLGNBTnVCLENBQUMsT0FBTyxTQUFTLEtBQUssU0FBUyxtQkFBbUIsR0FFdEQscUJBTWQ7SUFDTCxnQkFOcUI7SUFPdEI7V0FDTSxLQUFLO0FBQ1osa0JBQU8sU0FBUyxxREFBcUQsSUFBSTtBQUN6RSxVQUFPO0lBQUUsY0FBYztJQUFXLGdCQUFnQjtJQUFXOztJQUU5RCxDQUFDLGFBQWEsQ0FBQztDQUVsQixNQUFNLFlBQVksWUFBWSxZQUEwQztBQUN0RSxVQUFRLElBQUksK0NBQStDLGdCQUFnQjtBQUMzRSxNQUFJLGdCQUNGLFFBQU8sYUFBYTtBQUV0QixTQUFPLDRCQUE0QjtJQUNsQztFQUFDO0VBQTRCO0VBQWE7RUFBZ0IsQ0FBQztDQUU5RCxNQUFNLFFBQVEsZUFDTDtFQUNMO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNELEdBQ0Q7RUFBQztFQUFjO0VBQVU7RUFBNEI7RUFBYTtFQUFXO0VBQVEsQ0FDdEY7QUFFRCxRQUFPLG9CQUFDLGVBQWU7RUFBZ0I7RUFBUTtHQUFtQzs7QUFHcEYsTUFBYSx5QkFBeUI7Q0FDcEMsTUFBTSxVQUFVLFdBQVcsZUFBZTtBQUMxQyxLQUFJLENBQUMsUUFDSCxPQUFNLElBQUksTUFBTSx5REFBeUQ7QUFFM0UsUUFBTyJ9
|