@agilemotion/oui-react-js 2.0.12 → 2.0.13
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/InteractionPortalApp.js +30 -2
- package/dist/components/Turnstile.js +151 -0
- package/dist/components/WordDocumentViewer.js +7 -2
- package/dist/components/footer/Footer.js +9 -16
- package/dist/components/layout/Layout.js +10 -2
- package/dist/components/layout/ViewPort.js +7 -4
- package/dist/view/security/LoginInteractionPortal.js +75 -20
- package/dist/view/security/RegisterInteractionPortal.js +216 -0
- package/dist/view/security/joburg-logo.png +0 -0
- package/dist/view/security/joburg.jpg +0 -0
- package/package.json +1 -1
|
@@ -10,6 +10,7 @@ var _LoginInteractionPortal = _interopRequireDefault(require("./view/security/Lo
|
|
|
10
10
|
var _ForgotPasswordBasic = _interopRequireDefault(require("./view/security/ForgotPasswordBasic"));
|
|
11
11
|
var _ResetPasswordBasic = _interopRequireDefault(require("./view/security/ResetPasswordBasic"));
|
|
12
12
|
var _ChangePasswordBasic = _interopRequireDefault(require("./view/security/ChangePasswordBasic"));
|
|
13
|
+
var _RegisterInteractionPortal = _interopRequireDefault(require("./view/security/RegisterInteractionPortal"));
|
|
13
14
|
var _material = require("@mui/material");
|
|
14
15
|
var _ThemeProvider = _interopRequireDefault(require("@mui/styles/ThemeProvider"));
|
|
15
16
|
var _ViewContainer = _interopRequireDefault(require("./components/layout/ViewContainer"));
|
|
@@ -33,7 +34,16 @@ const agilityTheme = (0, _material.createTheme)({
|
|
|
33
34
|
const InteractionPortalApp = props => {
|
|
34
35
|
const navigate = (0, _reactRouterDom.useNavigate)();
|
|
35
36
|
_react.default.useEffect(() => {
|
|
36
|
-
|
|
37
|
+
// Unauthenticated routes that should NOT be force-redirected
|
|
38
|
+
// to "/". Add new public path prefixes here. Prefix-matching
|
|
39
|
+
// (not exact-equality) so child routes under /register —
|
|
40
|
+
// e.g. /register/registrationFlow once the in-flow navigate
|
|
41
|
+
// fires — also pass the guard. Without the prefix check a
|
|
42
|
+
// refresh on /register/registrationFlow kicks back to /.
|
|
43
|
+
const publicPaths = ['/reset-password', '/login', '/forgot-password', '/change-password', '/register'];
|
|
44
|
+
const path = window.location.pathname;
|
|
45
|
+
const isPublic = publicPaths.some(p => path === p || path.startsWith(p + '/'));
|
|
46
|
+
if (!isPublic) {
|
|
37
47
|
navigate("/");
|
|
38
48
|
}
|
|
39
49
|
}, []);
|
|
@@ -49,6 +59,24 @@ const InteractionPortalApp = props => {
|
|
|
49
59
|
ref: /*#__PURE__*/_react.default.createRef()
|
|
50
60
|
})
|
|
51
61
|
})
|
|
62
|
+
})), /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, {
|
|
63
|
+
path: "/register/:type",
|
|
64
|
+
element: /*#__PURE__*/_react.default.createElement(_RegisterInteractionPortal.default, {
|
|
65
|
+
contextRoot: props.contextRoot,
|
|
66
|
+
implConfig: props.implConfig
|
|
67
|
+
})
|
|
68
|
+
}, /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, {
|
|
69
|
+
path: ":id",
|
|
70
|
+
element: /*#__PURE__*/_react.default.createElement(_ViewContainer.default, null)
|
|
71
|
+
})), /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, {
|
|
72
|
+
path: "/register",
|
|
73
|
+
element: /*#__PURE__*/_react.default.createElement(_RegisterInteractionPortal.default, {
|
|
74
|
+
contextRoot: props.contextRoot,
|
|
75
|
+
implConfig: props.implConfig
|
|
76
|
+
})
|
|
77
|
+
}, /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, {
|
|
78
|
+
path: ":id",
|
|
79
|
+
element: /*#__PURE__*/_react.default.createElement(_ViewContainer.default, null)
|
|
52
80
|
})), /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, {
|
|
53
81
|
path: "/login",
|
|
54
82
|
element: /*#__PURE__*/_react.default.createElement(_LoginInteractionPortal.default, {
|
|
@@ -110,4 +138,4 @@ const InteractionPortalApp = props => {
|
|
|
110
138
|
})));
|
|
111
139
|
};
|
|
112
140
|
var _default = exports.default = InteractionPortalApp;
|
|
113
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9Mb2dpbkludGVyYWN0aW9uUG9ydGFsIiwiX0ZvcmdvdFBhc3N3b3JkQmFzaWMiLCJfUmVzZXRQYXNzd29yZEJhc2ljIiwiX0NoYW5nZVBhc3N3b3JkQmFzaWMiLCJfbWF0ZXJpYWwiLCJfVGhlbWVQcm92aWRlciIsIl9WaWV3Q29udGFpbmVyIiwiX3JlYWN0Um91dGVyRG9tIiwiX1BvcnRhbERhc2hib2FyZCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImxvY2F0aW9uIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsImFnaWxpdHlUaGVtZSIsImNyZWF0ZVRoZW1lIiwicGFsZXR0ZSIsInByaW1hcnkiLCJtYWluIiwic2Vjb25kYXJ5Iiwid2hpdGUiLCJJbnRlcmFjdGlvblBvcnRhbEFwcCIsInByb3BzIiwibmF2aWdhdGUiLCJ1c2VOYXZpZ2F0ZSIsIlJlYWN0IiwidXNlRWZmZWN0IiwicGF0aG5hbWUiLCJjcmVhdGVFbGVtZW50IiwidGhlbWUiLCJSb3V0ZXMiLCJSb3V0ZSIsInBhdGgiLCJlbGVtZW50IiwiaG9tZSIsImRhc2hib2FyZCIsInJlZiIsImNyZWF0ZVJlZiIsInVybCIsImNvbnRleHRSb290IiwiaW1wbENvbmZpZyIsImF1dGhVcmwiLCJiYWNrZ3JvdW5kIiwidGV4dENvbG9yIiwibG9naW5UZXh0Q29sb3IiLCJmb290ZXJMb2dvIiwiZm9vdGVyVGV4dCIsImZvb3RlcldpZHRoIiwiZm9vdGVyU3BsaXR0ZXJDb2xvciIsInRpdGxlIiwibG9naW5UaXRsZSIsInRpdGxlQ29sb3IiLCJsb2dvIiwiYXBwTG9nbyIsImV4YWN0IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL2xpYi9JbnRlcmFjdGlvblBvcnRhbEFwcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICcuL0ludGVyYWN0aW9uUG9ydGFsQXBwLmNzcyc7XG5pbXBvcnQgTG9naW4gZnJvbSBcIi4vdmlldy9zZWN1cml0eS9Mb2dpbkludGVyYWN0aW9uUG9ydGFsXCI7XG5pbXBvcnQgRm9yZ290UGFzc3dvcmQgZnJvbSAnLi92aWV3L3NlY3VyaXR5L0ZvcmdvdFBhc3N3b3JkQmFzaWMnO1xuaW1wb3J0IFJlc2V0UGFzc3dvcmQgZnJvbSAnLi92aWV3L3NlY3VyaXR5L1Jlc2V0UGFzc3dvcmRCYXNpYyc7XG5pbXBvcnQgQ2hhbmdlUGFzc3dvcmQgZnJvbSAnLi92aWV3L3NlY3VyaXR5L0NoYW5nZVBhc3N3b3JkQmFzaWMnO1xuaW1wb3J0IHtjcmVhdGVUaGVtZX0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBUaGVtZVByb3ZpZGVyIGZyb20gXCJAbXVpL3N0eWxlcy9UaGVtZVByb3ZpZGVyXCI7XG5pbXBvcnQgVmlld0NvbnRhaW5lciBmcm9tIFwiLi9jb21wb25lbnRzL2xheW91dC9WaWV3Q29udGFpbmVyXCI7XG5pbXBvcnQge1JvdXRlLCBSb3V0ZXMsIHVzZU5hdmlnYXRlfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xuaW1wb3J0IFBvcnRhbERhc2hib2FyZCBmcm9tIFwiLi92aWV3L1BvcnRhbERhc2hib2FyZFwiO1xuXG5jb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbmNvbnN0IGFnaWxpdHlUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgICAgICAgcGFsZXR0ZToge1xuICAgICAgICAgICAgcHJpbWFyeToge1xuICAgICAgICAgICAgICAgIG1haW46ICcjMDE1NTg4J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlY29uZGFyeToge1xuICAgICAgICAgICAgICAgIG1haW46ICcjMDAwMDk5J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdoaXRlOiB7XG4gICAgICAgICAgICAgICAgbWFpbjogJyNmZmZmZmYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuKTtcblxuY29uc3QgSW50ZXJhY3Rpb25Qb3J0YWxBcHAgPSAocHJvcHMpID0+IHtcblxuICAgIGNvbnN0IG5hdmlnYXRlID0gdXNlTmF2aWdhdGUoKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgaWYod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICE9PSAnL3Jlc2V0LXBhc3N3b3JkJyAmJiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgIT09ICcvbG9naW4nXG4gICAgICAgICAgICAmJiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgIT09ICcvZm9yZ290LXBhc3N3b3JkJyYmIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSAhPT0gJy9jaGFuZ2UtcGFzc3dvcmQnKSB7XG4gICAgICAgICAgICAgICAgbmF2aWdhdGUoXCIvXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e2FnaWxpdHlUaGVtZX0+XG4gICAgICAgICAgICAgICAgPFJvdXRlcz5cbiAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9Jy8nIGVsZW1lbnQ9e3Byb3BzLmhvbWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9J3ZpZXcvOmlkJyBlbGVtZW50PXs8Vmlld0NvbnRhaW5lciBkYXNoYm9hcmQ9ezxQb3J0YWxEYXNoYm9hcmQgcmVmPXtSZWFjdC5jcmVhdGVSZWYoKX0vPn0vPn0vPlxuICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD0nL2xvZ2luJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudD17PExvZ2luIHVybD17bG9jYXRpb24gKyBwcm9wcy5jb250ZXh0Um9vdCArIHByb3BzLmltcGxDb25maWcuYXV0aFVybCArIFwiL2xvZ2luXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD17J3JnYmEoMCwgMCwgMCwgMC42NSknfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj17cHJvcHMuaW1wbENvbmZpZy5sb2dpblRleHRDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJMb2dvPXtwcm9wcy5pbXBsQ29uZmlnLmZvb3RlckxvZ299XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyVGV4dD17cHJvcHMuaW1wbENvbmZpZy5mb290ZXJUZXh0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlcldpZHRoPXtwcm9wcy5mb290ZXJXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJTcGxpdHRlckNvbG9yPXtwcm9wcy5pbXBsQ29uZmlnLmZvb3RlclNwbGl0dGVyQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3Byb3BzLmltcGxDb25maWcubG9naW5UaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUNvbG9yPXtwcm9wcy5pbXBsQ29uZmlnLnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nbz17cHJvcHMuaW1wbENvbmZpZy5hcHBMb2dvfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLz59XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPScvZm9yZ290LXBhc3N3b3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudD17PEZvcmdvdFBhc3N3b3JkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPXtsb2NhdGlvbiArIHByb3BzLmNvbnRleHRSb290ICsgcHJvcHMuaW1wbENvbmZpZy5hdXRoVXJsICsgXCIvcGFzc3dvcmQvZm9yZ290XCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD17J3JnYmEoMCwgMCwgMCwgMC42NSknfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj17cHJvcHMuaW1wbENvbmZpZy5sb2dpblRleHRDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJMb2dvPXtwcm9wcy5pbXBsQ29uZmlnLmZvb3RlckxvZ299XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyVGV4dD17cHJvcHMuaW1wbENvbmZpZy5mb290ZXJUZXh0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlcldpZHRoPXtwcm9wcy5mb290ZXJXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJTcGxpdHRlckNvbG9yPXtwcm9wcy5pbXBsQ29uZmlnLmZvb3RlclNwbGl0dGVyQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3Byb3BzLmltcGxDb25maWcubG9naW5UaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUNvbG9yPXtwcm9wcy5pbXBsQ29uZmlnLnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nbz17cHJvcHMuaW1wbENvbmZpZy5hcHBMb2dvfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLz59XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBleGFjdCBwYXRoPScvcmVzZXQtcGFzc3dvcmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50PXs8UmVzZXRQYXNzd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybD17bG9jYXRpb24gKyBwcm9wcy5jb250ZXh0Um9vdCArIHByb3BzLmltcGxDb25maWcuYXV0aFVybCArIFwiL3Bhc3N3b3JkL2NvbmZpcm1Gb3Jnb3RcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPXsncmdiYSgwLCAwLCAwLCAwLjY1KSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPXtwcm9wcy5pbXBsQ29uZmlnLmxvZ2luVGV4dENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlckxvZ289e3Byb3BzLmltcGxDb25maWcuZm9vdGVyTG9nb31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJUZXh0PXtwcm9wcy5pbXBsQ29uZmlnLmZvb3RlclRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyV2lkdGg9e3Byb3BzLmZvb3RlcldpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlclNwbGl0dGVyQ29sb3I9e3Byb3BzLmltcGxDb25maWcuZm9vdGVyU3BsaXR0ZXJDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17cHJvcHMuaW1wbENvbmZpZy5sb2dpblRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlQ29sb3I9e3Byb3BzLmltcGxDb25maWcudGl0bGVDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dvPXtwcm9wcy5pbXBsQ29uZmlnLmFwcExvZ299XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvPn1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFJvdXRlIGV4YWN0IHBhdGg9Jy9jaGFuZ2UtcGFzc3dvcmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50PXs8Q2hhbmdlUGFzc3dvcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw9e2xvY2F0aW9uICsgcHJvcHMuY29udGV4dFJvb3QgKyBwcm9wcy5pbXBsQ29uZmlnLmF1dGhVcmwgKyBcIi9wYXNzd29yZC9jaGFsbGVuZ2VcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPXsncmdiYSgwLCAwLCAwLCAwLjY1KSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPXtwcm9wcy5pbXBsQ29uZmlnLmxvZ2luVGV4dENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlckxvZ289e3Byb3BzLmltcGxDb25maWcuZm9vdGVyTG9nb31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJUZXh0PXtwcm9wcy5pbXBsQ29uZmlnLmZvb3RlclRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyV2lkdGg9e3Byb3BzLmZvb3RlcldpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlclNwbGl0dGVyQ29sb3I9e3Byb3BzLmltcGxDb25maWcuZm9vdGVyU3BsaXR0ZXJDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17cHJvcHMuaW1wbENvbmZpZy5sb2dpblRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlQ29sb3I9e3Byb3BzLmltcGxDb25maWcudGl0bGVDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dvPXtwcm9wcy5pbXBsQ29uZmlnLmFwcExvZ299XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvPn1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1JvdXRlcz5cbiAgICAgICAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBJbnRlcmFjdGlvblBvcnRhbEFwcDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBQyx1QkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsb0JBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLG1CQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxvQkFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssU0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sY0FBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sY0FBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsZUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsZ0JBQUEsR0FBQVYsc0JBQUEsQ0FBQUMsT0FBQTtBQUFxRCxTQUFBRCx1QkFBQVcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVyRCxNQUFNRyxRQUFRLEdBQUdDLE1BQU0sQ0FBQ0QsUUFBUSxDQUFDRSxRQUFRLEdBQUcsSUFBSSxHQUFHRCxNQUFNLENBQUNELFFBQVEsQ0FBQ0csUUFBUTtBQUMzRSxNQUFNQyxZQUFZLEdBQUcsSUFBQUMscUJBQVcsRUFBQztFQUN6QkMsT0FBTyxFQUFFO0lBQ0xDLE9BQU8sRUFBRTtNQUNMQyxJQUFJLEVBQUU7SUFDVixDQUFDO0lBQ0RDLFNBQVMsRUFBRTtNQUNQRCxJQUFJLEVBQUU7SUFDVixDQUFDO0lB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
|
|
141
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9Mb2dpbkludGVyYWN0aW9uUG9ydGFsIiwiX0ZvcmdvdFBhc3N3b3JkQmFzaWMiLCJfUmVzZXRQYXNzd29yZEJhc2ljIiwiX0NoYW5nZVBhc3N3b3JkQmFzaWMiLCJfUmVnaXN0ZXJJbnRlcmFjdGlvblBvcnRhbCIsIl9tYXRlcmlhbCIsIl9UaGVtZVByb3ZpZGVyIiwiX1ZpZXdDb250YWluZXIiLCJfcmVhY3RSb3V0ZXJEb20iLCJfUG9ydGFsRGFzaGJvYXJkIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwibG9jYXRpb24iLCJ3aW5kb3ciLCJwcm90b2NvbCIsImhvc3RuYW1lIiwiYWdpbGl0eVRoZW1lIiwiY3JlYXRlVGhlbWUiLCJwYWxldHRlIiwicHJpbWFyeSIsIm1haW4iLCJzZWNvbmRhcnkiLCJ3aGl0ZSIsIkludGVyYWN0aW9uUG9ydGFsQXBwIiwicHJvcHMiLCJuYXZpZ2F0ZSIsInVzZU5hdmlnYXRlIiwiUmVhY3QiLCJ1c2VFZmZlY3QiLCJwdWJsaWNQYXRocyIsInBhdGgiLCJwYXRobmFtZSIsImlzUHVibGljIiwic29tZSIsInAiLCJzdGFydHNXaXRoIiwiY3JlYXRlRWxlbWVudCIsInRoZW1lIiwiUm91dGVzIiwiUm91dGUiLCJlbGVtZW50IiwiaG9tZSIsImRhc2hib2FyZCIsInJlZiIsImNyZWF0ZVJlZiIsImNvbnRleHRSb290IiwiaW1wbENvbmZpZyIsInVybCIsImF1dGhVcmwiLCJiYWNrZ3JvdW5kIiwidGV4dENvbG9yIiwibG9naW5UZXh0Q29sb3IiLCJmb290ZXJMb2dvIiwiZm9vdGVyVGV4dCIsImZvb3RlcldpZHRoIiwiZm9vdGVyU3BsaXR0ZXJDb2xvciIsInRpdGxlIiwibG9naW5UaXRsZSIsInRpdGxlQ29sb3IiLCJsb2dvIiwiYXBwTG9nbyIsImV4YWN0IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL2xpYi9JbnRlcmFjdGlvblBvcnRhbEFwcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICcuL0ludGVyYWN0aW9uUG9ydGFsQXBwLmNzcyc7XG5pbXBvcnQgTG9naW4gZnJvbSBcIi4vdmlldy9zZWN1cml0eS9Mb2dpbkludGVyYWN0aW9uUG9ydGFsXCI7XG5pbXBvcnQgRm9yZ290UGFzc3dvcmQgZnJvbSAnLi92aWV3L3NlY3VyaXR5L0ZvcmdvdFBhc3N3b3JkQmFzaWMnO1xuaW1wb3J0IFJlc2V0UGFzc3dvcmQgZnJvbSAnLi92aWV3L3NlY3VyaXR5L1Jlc2V0UGFzc3dvcmRCYXNpYyc7XG5pbXBvcnQgQ2hhbmdlUGFzc3dvcmQgZnJvbSAnLi92aWV3L3NlY3VyaXR5L0NoYW5nZVBhc3N3b3JkQmFzaWMnO1xuaW1wb3J0IFJlZ2lzdGVyIGZyb20gJy4vdmlldy9zZWN1cml0eS9SZWdpc3RlckludGVyYWN0aW9uUG9ydGFsJztcbmltcG9ydCB7Y3JlYXRlVGhlbWV9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgVGhlbWVQcm92aWRlciBmcm9tIFwiQG11aS9zdHlsZXMvVGhlbWVQcm92aWRlclwiO1xuaW1wb3J0IFZpZXdDb250YWluZXIgZnJvbSBcIi4vY29tcG9uZW50cy9sYXlvdXQvVmlld0NvbnRhaW5lclwiO1xuaW1wb3J0IHtSb3V0ZSwgUm91dGVzLCB1c2VOYXZpZ2F0ZX0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIjtcbmltcG9ydCBQb3J0YWxEYXNoYm9hcmQgZnJvbSBcIi4vdmlldy9Qb3J0YWxEYXNoYm9hcmRcIjtcblxuY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyBcIi8vXCIgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG5jb25zdCBhZ2lsaXR5VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gICAgICAgIHBhbGV0dGU6IHtcbiAgICAgICAgICAgIHByaW1hcnk6IHtcbiAgICAgICAgICAgICAgICBtYWluOiAnIzAxNTU4OCdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWNvbmRhcnk6IHtcbiAgICAgICAgICAgICAgICBtYWluOiAnIzAwMDA5OSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3aGl0ZToge1xuICAgICAgICAgICAgICAgIG1haW46ICcjZmZmZmZmJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbik7XG5cbmNvbnN0IEludGVyYWN0aW9uUG9ydGFsQXBwID0gKHByb3BzKSA9PiB7XG5cbiAgICBjb25zdCBuYXZpZ2F0ZSA9IHVzZU5hdmlnYXRlKCk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIC8vIFVuYXV0aGVudGljYXRlZCByb3V0ZXMgdGhhdCBzaG91bGQgTk9UIGJlIGZvcmNlLXJlZGlyZWN0ZWRcbiAgICAgICAgICAgIC8vIHRvIFwiL1wiLiBBZGQgbmV3IHB1YmxpYyBwYXRoIHByZWZpeGVzIGhlcmUuIFByZWZpeC1tYXRjaGluZ1xuICAgICAgICAgICAgLy8gKG5vdCBleGFjdC1lcXVhbGl0eSkgc28gY2hpbGQgcm91dGVzIHVuZGVyIC9yZWdpc3RlciDigJRcbiAgICAgICAgICAgIC8vIGUuZy4gL3JlZ2lzdGVyL3JlZ2lzdHJhdGlvbkZsb3cgb25jZSB0aGUgaW4tZmxvdyBuYXZpZ2F0ZVxuICAgICAgICAgICAgLy8gZmlyZXMg4oCUIGFsc28gcGFzcyB0aGUgZ3VhcmQuIFdpdGhvdXQgdGhlIHByZWZpeCBjaGVjayBhXG4gICAgICAgICAgICAvLyByZWZyZXNoIG9uIC9yZWdpc3Rlci9yZWdpc3RyYXRpb25GbG93IGtpY2tzIGJhY2sgdG8gLy5cbiAgICAgICAgICAgIGNvbnN0IHB1YmxpY1BhdGhzID0gW1xuICAgICAgICAgICAgICAgICcvcmVzZXQtcGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICcvbG9naW4nLFxuICAgICAgICAgICAgICAgICcvZm9yZ290LXBhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAnL2NoYW5nZS1wYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgJy9yZWdpc3RlcicsXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICAgICAgICAgIGNvbnN0IGlzUHVibGljID0gcHVibGljUGF0aHMuc29tZShwID0+IHBhdGggPT09IHAgfHwgcGF0aC5zdGFydHNXaXRoKHAgKyAnLycpKTtcbiAgICAgICAgICAgIGlmICghaXNQdWJsaWMpIHtcbiAgICAgICAgICAgICAgICBuYXZpZ2F0ZShcIi9cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIFtdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17YWdpbGl0eVRoZW1lfT5cbiAgICAgICAgICAgICAgICA8Um91dGVzPlxuICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD0nLycgZWxlbWVudD17cHJvcHMuaG9tZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD0ndmlldy86aWQnIGVsZW1lbnQ9ezxWaWV3Q29udGFpbmVyIGRhc2hib2FyZD17PFBvcnRhbERhc2hib2FyZCByZWY9e1JlYWN0LmNyZWF0ZVJlZigpfS8+fS8+fS8+XG4gICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgIHsvKiBUeXBlLXNjb3BlZCByZWdpc3RyYXRpb246IC9yZWdpc3Rlci86dHlwZSBib290c3RyYXBzXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGUgd2l6YXJkIGZvciB0aGF0IHJlZ2lzdHJhdGlvbiB0eXBlIChlLmcuXG4gICAgICAgICAgICAgICAgICAgICAgICAvcmVnaXN0ZXIvdmVuZG9yKSwgdGhlbiBpbi1mbG93IG5hdmlnYXRlcyB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgL3JlZ2lzdGVyLzp0eXBlLzppZCB3aGVyZSA6aWQgaXMgdGhlIHZpZXcgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHdpemFyZCBncmFwaCByb3V0ZXMgdG8uXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIE5ldyByZWdpc3RyYXRpb24gdHlwZXMgKHByb2JpdG9yLCBldGMuKSBkcm9wIGludG9cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzYW1lIC9yZWdpc3Rlci86dHlwZS8gdHJlZSDigJQgUmVnaXN0ZXJJbnRlcmFjdGlvblBvcnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHMgOnR5cGUgZnJvbSB0aGUgcm91dGUgYW5kIHJlcXVlc3RzIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZyB3aXphcmQgdmlldyBmcm9tIG91aS1zZXJ2ZXIuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIE5vIGBkYXNoYm9hcmRgIHByb3Agb24gVmlld0NvbnRhaW5lciDigJQgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgc2xvdCBvbmx5IHJlbmRlcnMgZm9yIHZpZXdJZCA9PT0gJ2Rhc2hib2FyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwdWxsaW5nIFBvcnRhbERhc2hib2FyZCBjaHJvbWUgaW50byB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuYXV0aGVudGljYXRlZCByZWdpc3RlciBmbG93IHdvdWxkIGVpdGhlclxuICAgICAgICAgICAgICAgICAgICAgICAgTlBFIG9yIHdyYXAgdGhlIGZvcm0gaW4gYXV0aGVudGljYXRlZCBVSS4gKi99XG4gICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPScvcmVnaXN0ZXIvOnR5cGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50PXs8UmVnaXN0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Um9vdD17cHJvcHMuY29udGV4dFJvb3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbENvbmZpZz17cHJvcHMuaW1wbENvbmZpZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD0nOmlkJyBlbGVtZW50PXs8Vmlld0NvbnRhaW5lci8+fS8+XG4gICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgIHsvKiBMZWdhY3kgc2luZ2xlLXNlZ21lbnQgL3JlZ2lzdGVyLzppZCByb3V0ZSDigJQga2VwdCBmb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2t3YXJkcy1jb21wYXQgZHVyaW5nIHRoZSByb2xsb3V0IHdpbmRvdyBzbyBhbnlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluLWZsaWdodCBVUkxzIHN0aWxsIHJlc29sdmUuIERyb3BzIHRoZSB0eXBlIHNlZ21lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBkZWZhdWx0cyB0byAndmVuZG9yJyBpbnNpZGUgUmVnaXN0ZXJJbnRlcmFjdGlvblBvcnRhbC4gKi99XG4gICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPScvcmVnaXN0ZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50PXs8UmVnaXN0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Um9vdD17cHJvcHMuY29udGV4dFJvb3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbENvbmZpZz17cHJvcHMuaW1wbENvbmZpZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD0nOmlkJyBlbGVtZW50PXs8Vmlld0NvbnRhaW5lci8+fS8+XG4gICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPScvbG9naW4nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50PXs8TG9naW4gdXJsPXtsb2NhdGlvbiArIHByb3BzLmNvbnRleHRSb290ICsgcHJvcHMuaW1wbENvbmZpZy5hdXRoVXJsICsgXCIvbG9naW5cIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPXsncmdiYSgwLCAwLCAwLCAwLjY1KSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPXtwcm9wcy5pbXBsQ29uZmlnLmxvZ2luVGV4dENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlckxvZ289e3Byb3BzLmltcGxDb25maWcuZm9vdGVyTG9nb31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJUZXh0PXtwcm9wcy5pbXBsQ29uZmlnLmZvb3RlclRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyV2lkdGg9e3Byb3BzLmZvb3RlcldpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlclNwbGl0dGVyQ29sb3I9e3Byb3BzLmltcGxDb25maWcuZm9vdGVyU3BsaXR0ZXJDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17cHJvcHMuaW1wbENvbmZpZy5sb2dpblRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlQ29sb3I9e3Byb3BzLmltcGxDb25maWcudGl0bGVDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dvPXtwcm9wcy5pbXBsQ29uZmlnLmFwcExvZ299XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvPn1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9Jy9mb3Jnb3QtcGFzc3dvcmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50PXs8Rm9yZ290UGFzc3dvcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw9e2xvY2F0aW9uICsgcHJvcHMuY29udGV4dFJvb3QgKyBwcm9wcy5pbXBsQ29uZmlnLmF1dGhVcmwgKyBcIi9wYXNzd29yZC9mb3Jnb3RcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPXsncmdiYSgwLCAwLCAwLCAwLjY1KSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPXtwcm9wcy5pbXBsQ29uZmlnLmxvZ2luVGV4dENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlckxvZ289e3Byb3BzLmltcGxDb25maWcuZm9vdGVyTG9nb31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJUZXh0PXtwcm9wcy5pbXBsQ29uZmlnLmZvb3RlclRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyV2lkdGg9e3Byb3BzLmZvb3RlcldpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlclNwbGl0dGVyQ29sb3I9e3Byb3BzLmltcGxDb25maWcuZm9vdGVyU3BsaXR0ZXJDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17cHJvcHMuaW1wbENvbmZpZy5sb2dpblRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlQ29sb3I9e3Byb3BzLmltcGxDb25maWcudGl0bGVDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dvPXtwcm9wcy5pbXBsQ29uZmlnLmFwcExvZ299XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvPn1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFJvdXRlIGV4YWN0IHBhdGg9Jy9yZXNldC1wYXNzd29yZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ9ezxSZXNldFBhc3N3b3JkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPXtsb2NhdGlvbiArIHByb3BzLmNvbnRleHRSb290ICsgcHJvcHMuaW1wbENvbmZpZy5hdXRoVXJsICsgXCIvcGFzc3dvcmQvY29uZmlybUZvcmdvdFwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ9eydyZ2JhKDAsIDAsIDAsIDAuNjUpJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9e3Byb3BzLmltcGxDb25maWcubG9naW5UZXh0Q29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyTG9nbz17cHJvcHMuaW1wbENvbmZpZy5mb290ZXJMb2dvfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlclRleHQ9e3Byb3BzLmltcGxDb25maWcuZm9vdGVyVGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJXaWR0aD17cHJvcHMuZm9vdGVyV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyU3BsaXR0ZXJDb2xvcj17cHJvcHMuaW1wbENvbmZpZy5mb290ZXJTcGxpdHRlckNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtwcm9wcy5pbXBsQ29uZmlnLmxvZ2luVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVDb2xvcj17cHJvcHMuaW1wbENvbmZpZy50aXRsZUNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ289e3Byb3BzLmltcGxDb25maWcuYXBwTG9nb31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8Um91dGUgZXhhY3QgcGF0aD0nL2NoYW5nZS1wYXNzd29yZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ9ezxDaGFuZ2VQYXNzd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybD17bG9jYXRpb24gKyBwcm9wcy5jb250ZXh0Um9vdCArIHByb3BzLmltcGxDb25maWcuYXV0aFVybCArIFwiL3Bhc3N3b3JkL2NoYWxsZW5nZVwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ9eydyZ2JhKDAsIDAsIDAsIDAuNjUpJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9e3Byb3BzLmltcGxDb25maWcubG9naW5UZXh0Q29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyTG9nbz17cHJvcHMuaW1wbENvbmZpZy5mb290ZXJMb2dvfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlclRleHQ9e3Byb3BzLmltcGxDb25maWcuZm9vdGVyVGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJXaWR0aD17cHJvcHMuZm9vdGVyV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyU3BsaXR0ZXJDb2xvcj17cHJvcHMuaW1wbENvbmZpZy5mb290ZXJTcGxpdHRlckNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtwcm9wcy5pbXBsQ29uZmlnLmxvZ2luVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVDb2xvcj17cHJvcHMuaW1wbENvbmZpZy50aXRsZUNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ289e3Byb3BzLmltcGxDb25maWcuYXBwTG9nb31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUm91dGVzPlxuICAgICAgICAgICAgPC9UaGVtZVByb3ZpZGVyPlxuICAgICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEludGVyYWN0aW9uUG9ydGFsQXBwO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFDLHVCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxvQkFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsbUJBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLG9CQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSywwQkFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sU0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sY0FBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsY0FBQSxHQUFBVCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVMsZUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsZ0JBQUEsR0FBQVgsc0JBQUEsQ0FBQUMsT0FBQTtBQUFxRCxTQUFBRCx1QkFBQVksQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVyRCxNQUFNRyxRQUFRLEdBQUdDLE1BQU0sQ0FBQ0QsUUFBUSxDQUFDRSxRQUFRLEdBQUcsSUFBSSxHQUFHRCxNQUFNLENBQUNELFFBQVEsQ0FBQ0csUUFBUTtBQUMzRSxNQUFNQyxZQUFZLEdBQUcsSUFBQUMscUJBQVcsRUFBQztFQUN6QkMsT0FBTyxFQUFFO0lBQ0xDLE9BQU8sRUFBRTtNQUNMQyxJQUFJLEVBQUU7SUFDVixDQUFDO0lBQ0RDLFNBQVMsRUFBRTtNQUNQRCxJQUFJLEVBQUU7SUFDVixDQUFDO0lBQ0RFLEtBQUssRUFBRTtNQUNIRixJQUFJLEVBQUU7SUFDVjtFQUNKO0FBQ0osQ0FDSixDQUFDO0FBRUQsTUFBTUcsb0JBQW9CLEdBQUlDLEtBQUssSUFBSztFQUVwQyxNQUFNQyxRQUFRLEdBQUcsSUFBQUMsMkJBQVcsRUFBQyxDQUFDO0VBRTlCQyxjQUFLLENBQUNDLFNBQVMsQ0FDWCxNQUFNO0lBQ0Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsTUFBTUMsV0FBVyxHQUFHLENBQ2hCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1Isa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixXQUFXLENBQ2Q7SUFDRCxNQUFNQyxJQUFJLEdBQUdqQixNQUFNLENBQUNELFFBQVEsQ0FBQ21CLFFBQVE7SUFDckMsTUFBTUMsUUFBUSxHQUFHSCxXQUFXLENBQUNJLElBQUksQ0FBQ0MsQ0FBQyxJQUFJSixJQUFJLEtBQUtJLENBQUMsSUFBSUosSUFBSSxDQUFDSyxVQUFVLENBQUNELENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUM5RSxJQUFJLENBQUNGLFFBQVEsRUFBRTtNQUNYUCxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQ2pCO0VBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVWLG9CQUNRN0IsTUFBQSxDQUFBZSxPQUFBLENBQUF5QixhQUFBLENBQUMvQixjQUFBLENBQUFNLE9BQWE7SUFBQzBCLEtBQUssRUFBRXJCO0VBQWEsZ0JBQy9CcEIsTUFBQSxDQUFBZSxPQUFBLENBQUF5QixhQUFBLENBQUM3QixlQUFBLENBQUErQixNQUFNLHFCQUNIMUMsTUFBQSxDQUFBZSxPQUFBLENBQUF5QixhQUFBLENBQUM3QixlQUFBLENBQUFnQyxLQUFLO0lBQUNULElBQUksRUFBQyxHQUFHO0lBQUNVLE9BQU8sRUFBRWhCLEtBQUssQ0FBQ2lCO0VBQUssZ0JBQ2hDN0MsTUFBQSxDQUFBZSxPQUFBLENBQUF5QixhQUFBLENBQUM3QixlQUFBLENBQUFnQyxLQUFLO0lBQUNULElBQUksRUFBQyxVQUFVO0lBQUNVLE9BQU8sZUFBRTVDLE1BQUEsQ0FBQWUsT0FBQSxDQUFBeUIsYUFBQSxDQUFDOUIsY0FBQSxDQUFBSyxPQUFhO01BQUMrQixTQUFTLGVBQUU5QyxNQUFBLENBQUFlLE9BQUEsQ0FBQXlCLGFBQUEsQ0FBQzVCLGdCQUFBLENBQUFHLE9BQWU7UUFBQ2dDLEdBQUcsZUFBRWhCLGNBQUssQ0FBQ2lCLFNBQVMsQ0FBQztNQUFFLENBQUM7SUFBRSxDQUFDO0VBQUUsQ0FBQyxDQUN0RyxDQUFDLGVBaUJSaEQsTUFBQSxDQUFBZSxPQUFBLENBQUF5QixhQUFBLENBQUM3QixlQUFBLENBQUFnQyxLQUFLO0lBQUNULElBQUksRUFBQyxpQkFBaUI7SUFDdEJVLE9BQU8sZUFBRTVDLE1BQUEsQ0FBQWUsT0FBQSxDQUFBeUIsYUFBQSxDQUFDakMsMEJBQUEsQ0FBQVEsT0FBUTtNQUNka0MsV0FBVyxFQUFFckIsS0FBSyxDQUFDcUIsV0FBWTtNQUMvQkMsVUFBVSxFQUFFdEIsS0FBSyxDQUFDc0I7SUFBVyxDQUNoQztFQUFFLGdCQUVObEQsTUFBQSxDQUFBZSxPQUFBLENBQUF5QixhQUFBLENBQUM3QixlQUFBLENBQUFnQyxLQUFLO0lBQUNULElBQUksRUFBQyxLQUFLO0lBQUNVLE9BQU8sZUFBRTVDLE1BQUEsQ0FBQWUsT0FBQSxDQUFBeUIsYUFBQSxDQUFDOUIsY0FBQSxDQUFBSyxPQUFhLE1BQUM7RUFBRSxDQUFDLENBQzFDLENBQUMsZUFLUmYsTUFBQSxDQUFBZSxPQUFBLENBQUF5QixhQUFBLENBQUM3QixlQUFBLENBQUFnQyxLQUFLO0lBQUNULElBQUksRUFBQyxXQUFXO0lBQ2hCVSxPQUFPLGVBQUU1QyxNQUFBLENBQUFlLE9BQUEsQ0FBQXlCLGFBQUEsQ0FBQ2pDLDBCQUFBLENBQUFRLE9BQVE7TUFDZGtDLFdBQVcsRUFBRXJCLEtBQUssQ0FBQ3FCLFdBQVk7TUFDL0JDLFVBQVUsRUFBRXRCLEtBQUssQ0FBQ3NCO0lBQVcsQ0FDaEM7RUFBRSxnQkFFTmxELE1BQUEsQ0FBQWUsT0FBQSxDQUFBeUIsYUFBQSxDQUFDN0IsZUFBQSxDQUFBZ0MsS0FBSztJQUFDVCxJQUFJLEVBQUMsS0FBSztJQUFDVSxPQUFPLGVBQUU1QyxNQUFBLENBQUFlLE9BQUEsQ0FBQXlCLGFBQUEsQ0FBQzlCLGNBQUEsQ0FBQUssT0FBYSxNQUFDO0VBQUUsQ0FBQyxDQUMxQyxDQUFDLGVBQ1JmLE1BQUEsQ0FBQWUsT0FBQSxDQUFBeUIsYUFBQSxDQUFDN0IsZUFBQSxDQUFBZ0MsS0FBSztJQUFDVCxJQUFJLEVBQUMsUUFBUTtJQUNiVSxPQUFPLGVBQUU1QyxNQUFBLENBQUFlLE9BQUEsQ0FBQXlCLGFBQUEsQ0FBQ3JDLHVCQUFBLENBQUFZLE9BQUs7TUFBQ29DLEdBQUcsRUFBRW5DLFFBQVEsR0FBR1ksS0FBSyxDQUFDcUIsV0FBVyxHQUFHckIsS0FBSyxDQUFDc0IsVUFBVSxDQUFDRSxPQUFPLEdBQUcsUUFBUztNQUN4RUMsVUFBVSxFQUFFLHFCQUFzQjtNQUNsQ0MsU0FBUyxFQUFFMUIsS0FBSyxDQUFDc0IsVUFBVSxDQUFDSyxjQUFlO01BQzNDQyxVQUFVLEVBQUU1QixLQUFLLENBQUNzQixVQUFVLENBQUNNLFVBQVc7TUFDeENDLFVBQVUsRUFBRTdCLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ08sVUFBVztNQUN4Q0MsV0FBVyxFQUFFOUIsS0FBSyxDQUFDOEIsV0FBWTtNQUMvQkMsbUJBQW1CLEVBQUUvQixLQUFLLENBQUNzQixVQUFVLENBQUNTLG1CQUFvQjtNQUMxREMsS0FBSyxFQUFFaEMsS0FBSyxDQUFDc0IsVUFBVSxDQUFDVyxVQUFXO01BQ25DQyxVQUFVLEVBQUVsQyxLQUFLLENBQUNzQixVQUFVLENBQUNZLFVBQVc7TUFDeENDLElBQUksRUFBRW5DLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ2M7SUFBUSxDQUM5QztFQUFFLENBQ1QsQ0FBQyxlQUNGaEUsTUFBQSxDQUFBZSxPQUFBLENBQUF5QixhQUFBLENBQUM3QixlQUFBLENBQUFnQyxLQUFLO0lBQUNULElBQUksRUFBQyxrQkFBa0I7SUFDdkJVLE9BQU8sZUFBRTVDLE1BQUEsQ0FBQWUsT0FBQSxDQUFBeUIsYUFBQSxDQUFDcEMsb0JBQUEsQ0FBQVcsT0FBYztNQUNwQm9DLEdBQUcsRUFBRW5DLFFBQVEsR0FBR1ksS0FBSyxDQUFDcUIsV0FBVyxHQUFHckIsS0FBSyxDQUFDc0IsVUFBVSxDQUFDRSxPQUFPLEdBQUcsa0JBQW1CO01BQ2xGQyxVQUFVLEVBQUUscUJBQXNCO01BQ2xDQyxTQUFTLEVBQUUxQixLQUFLLENBQUNzQixVQUFVLENBQUNLLGNBQWU7TUFDM0NDLFVBQVUsRUFBRTVCLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ00sVUFBVztNQUN4Q0MsVUFBVSxFQUFFN0IsS0FBSyxDQUFDc0IsVUFBVSxDQUFDTyxVQUFXO01BQ3hDQyxXQUFXLEVBQUU5QixLQUFLLENBQUM4QixXQUFZO01BQy9CQyxtQkFBbUIsRUFBRS9CLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ1MsbUJBQW9CO01BQzFEQyxLQUFLLEVBQUVoQyxLQUFLLENBQUNzQixVQUFVLENBQUNXLFVBQVc7TUFDbkNDLFVBQVUsRUFBRWxDLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ1ksVUFBVztNQUN4Q0MsSUFBSSxFQUFFbkMsS0FBSyxDQUFDc0IsVUFBVSxDQUFDYztJQUFRLENBQ2xDO0VBQUUsQ0FDVCxDQUFDLGVBQ0ZoRSxNQUFBLENBQUFlLE9BQUEsQ0FBQXlCLGFBQUEsQ0FBQzdCLGVBQUEsQ0FBQWdDLEtBQUs7SUFBQ3NCLEtBQUs7SUFBQy9CLElBQUksRUFBQyxpQkFBaUI7SUFDNUJVLE9BQU8sZUFBRTVDLE1BQUEsQ0FBQWUsT0FBQSxDQUFBeUIsYUFBQSxDQUFDbkMsbUJBQUEsQ0FBQVUsT0FBYTtNQUNuQm9DLEdBQUcsRUFBRW5DLFFBQVEsR0FBR1ksS0FBSyxDQUFDcUIsV0FBVyxHQUFHckIsS0FBSyxDQUFDc0IsVUFBVSxDQUFDRSxPQUFPLEdBQUcseUJBQTBCO01BQ3pGQyxVQUFVLEVBQUUscUJBQXNCO01BQ2xDQyxTQUFTLEVBQUUxQixLQUFLLENBQUNzQixVQUFVLENBQUNLLGNBQWU7TUFDM0NDLFVBQVUsRUFBRTVCLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ00sVUFBVztNQUN4Q0MsVUFBVSxFQUFFN0IsS0FBSyxDQUFDc0IsVUFBVSxDQUFDTyxVQUFXO01BQ3hDQyxXQUFXLEVBQUU5QixLQUFLLENBQUM4QixXQUFZO01BQy9CQyxtQkFBbUIsRUFBRS9CLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ1MsbUJBQW9CO01BQzFEQyxLQUFLLEVBQUVoQyxLQUFLLENBQUNzQixVQUFVLENBQUNXLFVBQVc7TUFDbkNDLFVBQVUsRUFBRWxDLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ1ksVUFBVztNQUN4Q0MsSUFBSSxFQUFFbkMsS0FBSyxDQUFDc0IsVUFBVSxDQUFDYztJQUFRLENBQ2xDO0VBQUUsQ0FDVCxDQUFDLGVBQ0ZoRSxNQUFBLENBQUFlLE9BQUEsQ0FBQXlCLGFBQUEsQ0FBQzdCLGVBQUEsQ0FBQWdDLEtBQUs7SUFBQ3NCLEtBQUs7SUFBQy9CLElBQUksRUFBQyxrQkFBa0I7SUFDN0JVLE9BQU8sZUFBRTVDLE1BQUEsQ0FBQWUsT0FBQSxDQUFBeUIsYUFBQSxDQUFDbEMsb0JBQUEsQ0FBQVMsT0FBYztNQUNwQm9DLEdBQUcsRUFBRW5DLFFBQVEsR0FBR1ksS0FBSyxDQUFDcUIsV0FBVyxHQUFHckIsS0FBSyxDQUFDc0IsVUFBVSxDQUFDRSxPQUFPLEdBQUcscUJBQXNCO01BQ3JGQyxVQUFVLEVBQUUscUJBQXNCO01BQ2xDQyxTQUFTLEVBQUUxQixLQUFLLENBQUNzQixVQUFVLENBQUNLLGNBQWU7TUFDM0NDLFVBQVUsRUFBRTVCLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ00sVUFBVztNQUN4Q0MsVUFBVSxFQUFFN0IsS0FBSyxDQUFDc0IsVUFBVSxDQUFDTyxVQUFXO01BQ3hDQyxXQUFXLEVBQUU5QixLQUFLLENBQUM4QixXQUFZO01BQy9CQyxtQkFBbUIsRUFBRS9CLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ1MsbUJBQW9CO01BQzFEQyxLQUFLLEVBQUVoQyxLQUFLLENBQUNzQixVQUFVLENBQUNXLFVBQVc7TUFDbkNDLFVBQVUsRUFBRWxDLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ1ksVUFBVztNQUN4Q0MsSUFBSSxFQUFFbkMsS0FBSyxDQUFDc0IsVUFBVSxDQUFDYztJQUFRLENBQ2xDO0VBQUUsQ0FDVCxDQUNHLENBQ0csQ0FBQztBQUU1QixDQUFDO0FBQUEsSUFBQUUsUUFBQSxHQUFBQyxPQUFBLENBQUFwRCxPQUFBLEdBRWNZLG9CQUFvQiIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _Utils = _interopRequireDefault(require("../Utils"));
|
|
9
|
+
var _Observable = _interopRequireDefault(require("../event/Observable"));
|
|
10
|
+
var _Event = _interopRequireDefault(require("../event/Event"));
|
|
11
|
+
var _EventType = _interopRequireDefault(require("../event/EventType"));
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
/**
|
|
14
|
+
* CDUI-wrapped Cloudflare Turnstile widget. Drops the widget into a
|
|
15
|
+
* layout the same way any other CDUI component does and exposes the
|
|
16
|
+
* resolved challenge token through {@code handle.api.value}, so view
|
|
17
|
+
* authors can reference it from other components / service calls via
|
|
18
|
+
* {@code @#{turnstile}.value} when wiring up an httpParameterType.
|
|
19
|
+
*
|
|
20
|
+
* <p>Loads Cloudflare's vendor script lazily on first mount. The script
|
|
21
|
+
* defines {@code window.turnstile} which exposes {@code render()} —
|
|
22
|
+
* we render explicitly (not auto-render via class="cf-turnstile") so
|
|
23
|
+
* the React lifecycle can issue a {@code reset} when the parent view
|
|
24
|
+
* re-mounts.
|
|
25
|
+
*
|
|
26
|
+
* <p>Site key is sourced from {@code REACT_APP_TURNSTILE_SITE_KEY} at
|
|
27
|
+
* build time (matches the project's existing REACT_APP_* convention),
|
|
28
|
+
* NOT from CDUI JSON — view authors shouldn't have to know the key.
|
|
29
|
+
* For dev, hostname {@code localhost} is explicitly supported by
|
|
30
|
+
* Cloudflare so the same env var can be used unchanged.
|
|
31
|
+
*/
|
|
32
|
+
const TURNSTILE_SCRIPT_URL = 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit';
|
|
33
|
+
|
|
34
|
+
// Cloudflare Turnstile's "site key" is intentionally public (it's the
|
|
35
|
+
// publishable identifier, analogous to Stripe's publishable key) and
|
|
36
|
+
// is hostname-bound on the Cloudflare side, so leaking it can't be
|
|
37
|
+
// used against other domains. Even so, sourcing it from an env var
|
|
38
|
+
// keeps dev/staging/prod swappable without a code change — same shape
|
|
39
|
+
// the codebase already uses for REACT_APP_DOCS_API_HOST etc. Set
|
|
40
|
+
// REACT_APP_TURNSTILE_SITE_KEY per environment.
|
|
41
|
+
const SITE_KEY = process.env.REACT_APP_TURNSTILE_SITE_KEY;
|
|
42
|
+
let scriptLoadPromise = null;
|
|
43
|
+
const loadTurnstileScript = () => {
|
|
44
|
+
if (scriptLoadPromise) {
|
|
45
|
+
return scriptLoadPromise;
|
|
46
|
+
}
|
|
47
|
+
if (typeof window !== 'undefined' && window.turnstile) {
|
|
48
|
+
scriptLoadPromise = Promise.resolve();
|
|
49
|
+
return scriptLoadPromise;
|
|
50
|
+
}
|
|
51
|
+
scriptLoadPromise = new Promise((resolve, reject) => {
|
|
52
|
+
const script = document.createElement('script');
|
|
53
|
+
script.src = TURNSTILE_SCRIPT_URL;
|
|
54
|
+
script.async = true;
|
|
55
|
+
script.defer = true;
|
|
56
|
+
script.onload = () => resolve();
|
|
57
|
+
script.onerror = e => {
|
|
58
|
+
scriptLoadPromise = null; // allow retry next mount
|
|
59
|
+
reject(e);
|
|
60
|
+
};
|
|
61
|
+
document.head.appendChild(script);
|
|
62
|
+
});
|
|
63
|
+
return scriptLoadPromise;
|
|
64
|
+
};
|
|
65
|
+
const Turnstile = /*#__PURE__*/_react.default.memo(props => {
|
|
66
|
+
const containerRef = _react.default.useRef(null);
|
|
67
|
+
const widgetIdRef = _react.default.useRef(null);
|
|
68
|
+
const [token, setToken] = _react.default.useState(null);
|
|
69
|
+
_react.default.useEffect(() => {
|
|
70
|
+
props.handle.api = api();
|
|
71
|
+
});
|
|
72
|
+
_react.default.useEffect(() => {
|
|
73
|
+
const parsedConfig = _Utils.default.parseConfig(props.config, props.viewId);
|
|
74
|
+
_Observable.default.addSubscriptions(parsedConfig.eventHandlingConfig, props.handle, props.viewId);
|
|
75
|
+
_Observable.default.addSystemSubscriptions(props.viewId, parsedConfig);
|
|
76
|
+
if (!SITE_KEY) {
|
|
77
|
+
console.error('Turnstile: REACT_APP_TURNSTILE_SITE_KEY env var is not set — the widget will not render');
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
let cancelled = false;
|
|
81
|
+
loadTurnstileScript().then(() => {
|
|
82
|
+
if (cancelled || !containerRef.current || !window.turnstile) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
widgetIdRef.current = window.turnstile.render(containerRef.current, {
|
|
86
|
+
sitekey: SITE_KEY,
|
|
87
|
+
callback: newToken => {
|
|
88
|
+
setToken(newToken);
|
|
89
|
+
const event = new _Event.default(props.handle, props.viewId, newToken);
|
|
90
|
+
_Observable.default.fireEvent(_EventType.default.VALUE_CHANGE, event);
|
|
91
|
+
},
|
|
92
|
+
'error-callback': () => {
|
|
93
|
+
setToken(null);
|
|
94
|
+
},
|
|
95
|
+
'expired-callback': () => {
|
|
96
|
+
setToken(null);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}).catch(e => console.error('Turnstile: failed to load vendor script', e));
|
|
100
|
+
|
|
101
|
+
// Fire COMPONENT_LOAD so any view-level eventHandlingConfig keyed
|
|
102
|
+
// on the turnstile component's load can hook in (mirrors the
|
|
103
|
+
// pattern used by HtmlPanel / other CDUI components).
|
|
104
|
+
const loadEvent = new _Event.default(props.handle, props.viewId, null);
|
|
105
|
+
_Observable.default.fireEvent(_EventType.default.COMPONENT_LOAD, loadEvent);
|
|
106
|
+
return () => {
|
|
107
|
+
cancelled = true;
|
|
108
|
+
if (widgetIdRef.current && window.turnstile) {
|
|
109
|
+
try {
|
|
110
|
+
window.turnstile.remove(widgetIdRef.current);
|
|
111
|
+
} catch (e) {
|
|
112
|
+
// turnstile.remove throws if the widget id is unknown
|
|
113
|
+
// (e.g. script unloaded mid-cleanup) — safe to ignore.
|
|
114
|
+
}
|
|
115
|
+
widgetIdRef.current = null;
|
|
116
|
+
}
|
|
117
|
+
_Observable.default.clearComponentEventListeners(props.handle);
|
|
118
|
+
};
|
|
119
|
+
}, []);
|
|
120
|
+
const api = () => ({
|
|
121
|
+
get id() {
|
|
122
|
+
return props.config.id;
|
|
123
|
+
},
|
|
124
|
+
// The challenge token the backend siteverifies against. Null
|
|
125
|
+
// before the widget resolves; CDUI service-call wiring should
|
|
126
|
+
// guard with `nullable: false` so submit can't fire pre-solve.
|
|
127
|
+
get value() {
|
|
128
|
+
return token;
|
|
129
|
+
},
|
|
130
|
+
getChildren: () => [],
|
|
131
|
+
// Allows callers to manually reset the widget after a backend
|
|
132
|
+
// rejection — e.g. a 403 from siteverify. Token is consumed per
|
|
133
|
+
// call; resetting re-issues a fresh one.
|
|
134
|
+
reset: () => {
|
|
135
|
+
if (widgetIdRef.current && window.turnstile) {
|
|
136
|
+
window.turnstile.reset(widgetIdRef.current);
|
|
137
|
+
setToken(null);
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
refresh: () => {}
|
|
141
|
+
});
|
|
142
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
143
|
+
style: _Utils.default.mergeStyles({
|
|
144
|
+
margin: '8px 0'
|
|
145
|
+
}, props.config)
|
|
146
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
147
|
+
ref: containerRef
|
|
148
|
+
}));
|
|
149
|
+
});
|
|
150
|
+
var _default = exports.default = Turnstile;
|
|
151
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9PYnNlcnZhYmxlIiwiX0V2ZW50IiwiX0V2ZW50VHlwZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIlRVUk5TVElMRV9TQ1JJUFRfVVJMIiwiU0lURV9LRVkiLCJwcm9jZXNzIiwiZW52IiwiUkVBQ1RfQVBQX1RVUk5TVElMRV9TSVRFX0tFWSIsInNjcmlwdExvYWRQcm9taXNlIiwibG9hZFR1cm5zdGlsZVNjcmlwdCIsIndpbmRvdyIsInR1cm5zdGlsZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2NyaXB0IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwic3JjIiwiYXN5bmMiLCJkZWZlciIsIm9ubG9hZCIsIm9uZXJyb3IiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJUdXJuc3RpbGUiLCJSZWFjdCIsIm1lbW8iLCJwcm9wcyIsImNvbnRhaW5lclJlZiIsInVzZVJlZiIsIndpZGdldElkUmVmIiwidG9rZW4iLCJzZXRUb2tlbiIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiaGFuZGxlIiwiYXBpIiwicGFyc2VkQ29uZmlnIiwiVXRpbHMiLCJwYXJzZUNvbmZpZyIsImNvbmZpZyIsInZpZXdJZCIsImV2ZW50TWFuYWdlciIsImFkZFN1YnNjcmlwdGlvbnMiLCJldmVudEhhbmRsaW5nQ29uZmlnIiwiYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyIsImNvbnNvbGUiLCJlcnJvciIsImNhbmNlbGxlZCIsInRoZW4iLCJjdXJyZW50IiwicmVuZGVyIiwic2l0ZWtleSIsImNhbGxiYWNrIiwibmV3VG9rZW4iLCJldmVudCIsIkV2ZW50IiwiZmlyZUV2ZW50IiwiRXZlbnRUeXBlIiwiVkFMVUVfQ0hBTkdFIiwiZXJyb3ItY2FsbGJhY2siLCJleHBpcmVkLWNhbGxiYWNrIiwiY2F0Y2giLCJsb2FkRXZlbnQiLCJDT01QT05FTlRfTE9BRCIsInJlbW92ZSIsImNsZWFyQ29tcG9uZW50RXZlbnRMaXN0ZW5lcnMiLCJpZCIsInZhbHVlIiwiZ2V0Q2hpbGRyZW4iLCJyZXNldCIsInJlZnJlc2giLCJzdHlsZSIsIm1lcmdlU3R5bGVzIiwibWFyZ2luIiwicmVmIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL1R1cm5zdGlsZS5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVdGlscyBmcm9tICcuLi9VdGlscyc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4uL2V2ZW50L09ic2VydmFibGUnO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBFdmVudFR5cGUgZnJvbSAnLi4vZXZlbnQvRXZlbnRUeXBlJztcblxuLyoqXG4gKiBDRFVJLXdyYXBwZWQgQ2xvdWRmbGFyZSBUdXJuc3RpbGUgd2lkZ2V0LiBEcm9wcyB0aGUgd2lkZ2V0IGludG8gYVxuICogbGF5b3V0IHRoZSBzYW1lIHdheSBhbnkgb3RoZXIgQ0RVSSBjb21wb25lbnQgZG9lcyBhbmQgZXhwb3NlcyB0aGVcbiAqIHJlc29sdmVkIGNoYWxsZW5nZSB0b2tlbiB0aHJvdWdoIHtAY29kZSBoYW5kbGUuYXBpLnZhbHVlfSwgc28gdmlld1xuICogYXV0aG9ycyBjYW4gcmVmZXJlbmNlIGl0IGZyb20gb3RoZXIgY29tcG9uZW50cyAvIHNlcnZpY2UgY2FsbHMgdmlhXG4gKiB7QGNvZGUgQCN7dHVybnN0aWxlfS52YWx1ZX0gd2hlbiB3aXJpbmcgdXAgYW4gaHR0cFBhcmFtZXRlclR5cGUuXG4gKlxuICogPHA+TG9hZHMgQ2xvdWRmbGFyZSdzIHZlbmRvciBzY3JpcHQgbGF6aWx5IG9uIGZpcnN0IG1vdW50LiBUaGUgc2NyaXB0XG4gKiBkZWZpbmVzIHtAY29kZSB3aW5kb3cudHVybnN0aWxlfSB3aGljaCBleHBvc2VzIHtAY29kZSByZW5kZXIoKX0g4oCUXG4gKiB3ZSByZW5kZXIgZXhwbGljaXRseSAobm90IGF1dG8tcmVuZGVyIHZpYSBjbGFzcz1cImNmLXR1cm5zdGlsZVwiKSBzb1xuICogdGhlIFJlYWN0IGxpZmVjeWNsZSBjYW4gaXNzdWUgYSB7QGNvZGUgcmVzZXR9IHdoZW4gdGhlIHBhcmVudCB2aWV3XG4gKiByZS1tb3VudHMuXG4gKlxuICogPHA+U2l0ZSBrZXkgaXMgc291cmNlZCBmcm9tIHtAY29kZSBSRUFDVF9BUFBfVFVSTlNUSUxFX1NJVEVfS0VZfSBhdFxuICogYnVpbGQgdGltZSAobWF0Y2hlcyB0aGUgcHJvamVjdCdzIGV4aXN0aW5nIFJFQUNUX0FQUF8qIGNvbnZlbnRpb24pLFxuICogTk9UIGZyb20gQ0RVSSBKU09OIOKAlCB2aWV3IGF1dGhvcnMgc2hvdWxkbid0IGhhdmUgdG8ga25vdyB0aGUga2V5LlxuICogRm9yIGRldiwgaG9zdG5hbWUge0Bjb2RlIGxvY2FsaG9zdH0gaXMgZXhwbGljaXRseSBzdXBwb3J0ZWQgYnlcbiAqIENsb3VkZmxhcmUgc28gdGhlIHNhbWUgZW52IHZhciBjYW4gYmUgdXNlZCB1bmNoYW5nZWQuXG4gKi9cbmNvbnN0IFRVUk5TVElMRV9TQ1JJUFRfVVJMID0gJ2h0dHBzOi8vY2hhbGxlbmdlcy5jbG91ZGZsYXJlLmNvbS90dXJuc3RpbGUvdjAvYXBpLmpzP3JlbmRlcj1leHBsaWNpdCc7XG5cbi8vIENsb3VkZmxhcmUgVHVybnN0aWxlJ3MgXCJzaXRlIGtleVwiIGlzIGludGVudGlvbmFsbHkgcHVibGljIChpdCdzIHRoZVxuLy8gcHVibGlzaGFibGUgaWRlbnRpZmllciwgYW5hbG9nb3VzIHRvIFN0cmlwZSdzIHB1Ymxpc2hhYmxlIGtleSkgYW5kXG4vLyBpcyBob3N0bmFtZS1ib3VuZCBvbiB0aGUgQ2xvdWRmbGFyZSBzaWRlLCBzbyBsZWFraW5nIGl0IGNhbid0IGJlXG4vLyB1c2VkIGFnYWluc3Qgb3RoZXIgZG9tYWlucy4gRXZlbiBzbywgc291cmNpbmcgaXQgZnJvbSBhbiBlbnYgdmFyXG4vLyBrZWVwcyBkZXYvc3RhZ2luZy9wcm9kIHN3YXBwYWJsZSB3aXRob3V0IGEgY29kZSBjaGFuZ2Ug4oCUIHNhbWUgc2hhcGVcbi8vIHRoZSBjb2RlYmFzZSBhbHJlYWR5IHVzZXMgZm9yIFJFQUNUX0FQUF9ET0NTX0FQSV9IT1NUIGV0Yy4gU2V0XG4vLyBSRUFDVF9BUFBfVFVSTlNUSUxFX1NJVEVfS0VZIHBlciBlbnZpcm9ubWVudC5cbmNvbnN0IFNJVEVfS0VZID0gcHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1RVUk5TVElMRV9TSVRFX0tFWTtcblxubGV0IHNjcmlwdExvYWRQcm9taXNlID0gbnVsbDtcbmNvbnN0IGxvYWRUdXJuc3RpbGVTY3JpcHQgPSAoKSA9PiB7XG4gICAgaWYgKHNjcmlwdExvYWRQcm9taXNlKSB7XG4gICAgICAgIHJldHVybiBzY3JpcHRMb2FkUHJvbWlzZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy50dXJuc3RpbGUpIHtcbiAgICAgICAgc2NyaXB0TG9hZFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgcmV0dXJuIHNjcmlwdExvYWRQcm9taXNlO1xuICAgIH1cbiAgICBzY3JpcHRMb2FkUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICAgIHNjcmlwdC5zcmMgPSBUVVJOU1RJTEVfU0NSSVBUX1VSTDtcbiAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICAgICAgc2NyaXB0LmRlZmVyID0gdHJ1ZTtcbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHJlc29sdmUoKTtcbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoZSkgPT4ge1xuICAgICAgICAgICAgc2NyaXB0TG9hZFByb21pc2UgPSBudWxsOyAvLyBhbGxvdyByZXRyeSBuZXh0IG1vdW50XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgIH07XG4gICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gc2NyaXB0TG9hZFByb21pc2U7XG59O1xuXG5jb25zdCBUdXJuc3RpbGUgPSBSZWFjdC5tZW1vKChwcm9wcykgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCB3aWRnZXRJZFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbdG9rZW4sIHNldFRva2VuXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgIH0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgcGFyc2VkQ29uZmlnID0gVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICBldmVudE1hbmFnZXIuYWRkU3Vic2NyaXB0aW9ucyhwYXJzZWRDb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZywgcHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICBldmVudE1hbmFnZXIuYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyhwcm9wcy52aWV3SWQsIHBhcnNlZENvbmZpZyk7XG5cbiAgICAgICAgaWYgKCFTSVRFX0tFWSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignVHVybnN0aWxlOiBSRUFDVF9BUFBfVFVSTlNUSUxFX1NJVEVfS0VZIGVudiB2YXIgaXMgbm90IHNldCDigJQgdGhlIHdpZGdldCB3aWxsIG5vdCByZW5kZXInKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZTtcbiAgICAgICAgbG9hZFR1cm5zdGlsZVNjcmlwdCgpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNhbmNlbGxlZCB8fCAhY29udGFpbmVyUmVmLmN1cnJlbnQgfHwgIXdpbmRvdy50dXJuc3RpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aWRnZXRJZFJlZi5jdXJyZW50ID0gd2luZG93LnR1cm5zdGlsZS5yZW5kZXIoY29udGFpbmVyUmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgc2l0ZWtleTogU0lURV9LRVksXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiAobmV3VG9rZW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRva2VuKG5ld1Rva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBuZXdUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5WQUxVRV9DSEFOR0UsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2Vycm9yLWNhbGxiYWNrJzogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9rZW4obnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICdleHBpcmVkLWNhbGxiYWNrJzogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9rZW4obnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLmVycm9yKCdUdXJuc3RpbGU6IGZhaWxlZCB0byBsb2FkIHZlbmRvciBzY3JpcHQnLCBlKSk7XG5cbiAgICAgICAgLy8gRmlyZSBDT01QT05FTlRfTE9BRCBzbyBhbnkgdmlldy1sZXZlbCBldmVudEhhbmRsaW5nQ29uZmlnIGtleWVkXG4gICAgICAgIC8vIG9uIHRoZSB0dXJuc3RpbGUgY29tcG9uZW50J3MgbG9hZCBjYW4gaG9vayBpbiAobWlycm9ycyB0aGVcbiAgICAgICAgLy8gcGF0dGVybiB1c2VkIGJ5IEh0bWxQYW5lbCAvIG90aGVyIENEVUkgY29tcG9uZW50cykuXG4gICAgICAgIGNvbnN0IGxvYWRFdmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgbnVsbCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkNPTVBPTkVOVF9MT0FELCBsb2FkRXZlbnQpO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHdpZGdldElkUmVmLmN1cnJlbnQgJiYgd2luZG93LnR1cm5zdGlsZSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy50dXJuc3RpbGUucmVtb3ZlKHdpZGdldElkUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdHVybnN0aWxlLnJlbW92ZSB0aHJvd3MgaWYgdGhlIHdpZGdldCBpZCBpcyB1bmtub3duXG4gICAgICAgICAgICAgICAgICAgIC8vIChlLmcuIHNjcmlwdCB1bmxvYWRlZCBtaWQtY2xlYW51cCkg4oCUIHNhZmUgdG8gaWdub3JlLlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aWRnZXRJZFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5jbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzKHByb3BzLmhhbmRsZSk7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgYXBpID0gKCkgPT4gKHtcbiAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgcmV0dXJuIHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gVGhlIGNoYWxsZW5nZSB0b2tlbiB0aGUgYmFja2VuZCBzaXRldmVyaWZpZXMgYWdhaW5zdC4gTnVsbFxuICAgICAgICAvLyBiZWZvcmUgdGhlIHdpZGdldCByZXNvbHZlczsgQ0RVSSBzZXJ2aWNlLWNhbGwgd2lyaW5nIHNob3VsZFxuICAgICAgICAvLyBndWFyZCB3aXRoIGBudWxsYWJsZTogZmFsc2VgIHNvIHN1Ym1pdCBjYW4ndCBmaXJlIHByZS1zb2x2ZS5cbiAgICAgICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9LFxuICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4gW10sXG4gICAgICAgIC8vIEFsbG93cyBjYWxsZXJzIHRvIG1hbnVhbGx5IHJlc2V0IHRoZSB3aWRnZXQgYWZ0ZXIgYSBiYWNrZW5kXG4gICAgICAgIC8vIHJlamVjdGlvbiDigJQgZS5nLiBhIDQwMyBmcm9tIHNpdGV2ZXJpZnkuIFRva2VuIGlzIGNvbnN1bWVkIHBlclxuICAgICAgICAvLyBjYWxsOyByZXNldHRpbmcgcmUtaXNzdWVzIGEgZnJlc2ggb25lLlxuICAgICAgICByZXNldDogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHdpZGdldElkUmVmLmN1cnJlbnQgJiYgd2luZG93LnR1cm5zdGlsZSkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy50dXJuc3RpbGUucmVzZXQod2lkZ2V0SWRSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgc2V0VG9rZW4obnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlZnJlc2g6ICgpID0+IHt9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBzdHlsZT17VXRpbHMubWVyZ2VTdHlsZXMoe21hcmdpbjogJzhweCAwJ30sIHByb3BzLmNvbmZpZyl9PlxuICAgICAgICAgICAgPGRpdiByZWY9e2NvbnRhaW5lclJlZn0vPlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IFR1cm5zdGlsZTsiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFVBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUEyQyxTQUFBRCx1QkFBQU0sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU1HLG9CQUFvQixHQUFHLHVFQUF1RTs7QUFFcEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNQyxRQUFRLEdBQUdDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyw0QkFBNEI7QUFFekQsSUFBSUMsaUJBQWlCLEdBQUcsSUFBSTtBQUM1QixNQUFNQyxtQkFBbUIsR0FBR0EsQ0FBQSxLQUFNO0VBQzlCLElBQUlELGlCQUFpQixFQUFFO0lBQ25CLE9BQU9BLGlCQUFpQjtFQUM1QjtFQUNBLElBQUksT0FBT0UsTUFBTSxLQUFLLFdBQVcsSUFBSUEsTUFBTSxDQUFDQyxTQUFTLEVBQUU7SUFDbkRI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
|