UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

183 lines (182 loc) • 19.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "Nav", { enumerable: true, get: function() { return Nav; } }); const _react = /*#__PURE__*/ _interop_require_wildcard(require("react")); const _reacti18next = require("react-i18next"); const _reactrouterdom = require("react-router-dom"); const _getTranslation = require("../../../../utilities/getTranslation"); const _groupNavItems = require("../../../utilities/groupNavItems"); const _Chevron = /*#__PURE__*/ _interop_require_default(require("../../icons/Chevron")); const _Auth = require("../../utilities/Auth"); const _Config = require("../../utilities/Config"); const _RenderCustomComponent = /*#__PURE__*/ _interop_require_default(require("../../utilities/RenderCustomComponent")); const _Hamburger = require("../Hamburger"); const _Logout = /*#__PURE__*/ _interop_require_default(require("../Logout")); const _NavGroup = /*#__PURE__*/ _interop_require_default(require("../NavGroup")); const _context = require("./context"); require("./index.scss"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interop_require_wildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = { __proto__: null }; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for(var key in obj){ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } const baseClass = 'nav'; const DefaultNav = ()=>{ const { navOpen, navRef, setNavOpen } = (0, _context.useNav)(); const { permissions, user } = (0, _Auth.useAuth)(); const [groups, setGroups] = (0, _react.useState)([]); const { i18n } = (0, _reacti18next.useTranslation)('general'); const { admin: { components: { afterNavLinks, beforeNavLinks } }, collections, globals, routes: { admin } } = (0, _Config.useConfig)(); (0, _react.useEffect)(()=>{ setGroups((0, _groupNavItems.groupNavItems)([ ...collections.filter(({ admin: { hidden } })=>!(typeof hidden === 'function' ? hidden({ user }) : hidden)).map((collection)=>{ const entityToGroup = { entity: collection, type: _groupNavItems.EntityType.collection }; return entityToGroup; }), ...globals.filter(({ admin: { hidden } })=>!(typeof hidden === 'function' ? hidden({ user }) : hidden)).map((global)=>{ const entityToGroup = { entity: global, type: _groupNavItems.EntityType.global }; return entityToGroup; }) ], permissions, i18n)); }, [ collections, globals, permissions, i18n, i18n.language, user ]); return /*#__PURE__*/ _react.default.createElement("aside", { className: [ baseClass, navOpen && `${baseClass}--nav-open` ].filter(Boolean).join(' ') }, /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__scroll`, ref: navRef }, /*#__PURE__*/ _react.default.createElement("nav", { className: `${baseClass}__wrap` }, Array.isArray(beforeNavLinks) && beforeNavLinks.map((Component, i)=>/*#__PURE__*/ _react.default.createElement(Component, { key: i })), groups.map(({ entities, label }, key)=>{ return /*#__PURE__*/ _react.default.createElement(_NavGroup.default, { key, label }, entities.map(({ entity, type }, i)=>{ let entityLabel; let href; let id; if (type === _groupNavItems.EntityType.collection) { href = `${admin}/collections/${entity.slug}`; entityLabel = (0, _getTranslation.getTranslation)(entity.labels.plural, i18n); id = `nav-${entity.slug}`; } if (type === _groupNavItems.EntityType.global) { href = `${admin}/globals/${entity.slug}`; entityLabel = (0, _getTranslation.getTranslation)(entity.label, i18n); id = `nav-global-${entity.slug}`; } return /*#__PURE__*/ _react.default.createElement(_reactrouterdom.NavLink, { activeClassName: "active", className: `${baseClass}__link`, id: id, key: i, tabIndex: !navOpen ? -1 : undefined, to: href }, /*#__PURE__*/ _react.default.createElement("span", { className: `${baseClass}__link-icon` }, /*#__PURE__*/ _react.default.createElement(_Chevron.default, { direction: "right" })), /*#__PURE__*/ _react.default.createElement("span", { className: `${baseClass}__link-label` }, entityLabel)); })); }), Array.isArray(afterNavLinks) && afterNavLinks.map((Component, i)=>/*#__PURE__*/ _react.default.createElement(Component, { key: i })), /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__controls` }, /*#__PURE__*/ _react.default.createElement(_Logout.default, { tabIndex: !navOpen ? -1 : undefined })))), /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__header` }, /*#__PURE__*/ _react.default.createElement("div", { className: `${baseClass}__header-content` }, /*#__PURE__*/ _react.default.createElement("button", { className: `${baseClass}__mobile-close`, onClick: ()=>{ setNavOpen(false); }, tabIndex: !navOpen ? -1 : undefined, type: "button" }, /*#__PURE__*/ _react.default.createElement(_Hamburger.Hamburger, { isActive: true }))))); }; const Nav = ()=>{ const { admin: { components: { Nav: CustomNav } = { Nav: undefined } } = {} } = (0, _Config.useConfig)(); return /*#__PURE__*/ _react.default.createElement(_RenderCustomComponent.default, { CustomComponent: CustomNav, DefaultComponent: DefaultNav }); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL05hdi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IE5hdkxpbmsgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJ1xuXG5pbXBvcnQgdHlwZSB7IEVudGl0eVRvR3JvdXAsIEdyb3VwIH0gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzL2dyb3VwTmF2SXRlbXMnXG5cbmltcG9ydCB7IGdldFRyYW5zbGF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzL2dldFRyYW5zbGF0aW9uJ1xuaW1wb3J0IHsgRW50aXR5VHlwZSwgZ3JvdXBOYXZJdGVtcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcy9ncm91cE5hdkl0ZW1zJ1xuaW1wb3J0IENoZXZyb24gZnJvbSAnLi4vLi4vaWNvbnMvQ2hldnJvbidcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvQXV0aCdcbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9Db25maWcnXG5pbXBvcnQgUmVuZGVyQ3VzdG9tQ29tcG9uZW50IGZyb20gJy4uLy4uL3V0aWxpdGllcy9SZW5kZXJDdXN0b21Db21wb25lbnQnXG5pbXBvcnQgeyBIYW1idXJnZXIgfSBmcm9tICcuLi9IYW1idXJnZXInXG5pbXBvcnQgTG9nb3V0IGZyb20gJy4uL0xvZ291dCdcbmltcG9ydCBOYXZHcm91cCBmcm9tICcuLi9OYXZHcm91cCdcbmltcG9ydCB7IHVzZU5hdiB9IGZyb20gJy4vY29udGV4dCdcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5jb25zdCBiYXNlQ2xhc3MgPSAnbmF2J1xuXG5jb25zdCBEZWZhdWx0TmF2OiBSZWFjdC5GQyA9ICgpID0+IHtcbiAgY29uc3QgeyBuYXZPcGVuLCBuYXZSZWYsIHNldE5hdk9wZW4gfSA9IHVzZU5hdigpXG4gIGNvbnN0IHsgcGVybWlzc2lvbnMsIHVzZXIgfSA9IHVzZUF1dGgoKVxuICBjb25zdCBbZ3JvdXBzLCBzZXRHcm91cHNdID0gdXNlU3RhdGU8R3JvdXBbXT4oW10pXG4gIGNvbnN0IHsgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oJ2dlbmVyYWwnKVxuXG4gIGNvbnN0IHtcbiAgICBhZG1pbjoge1xuICAgICAgY29tcG9uZW50czogeyBhZnRlck5hdkxpbmtzLCBiZWZvcmVOYXZMaW5rcyB9LFxuICAgIH0sXG4gICAgY29sbGVjdGlvbnMsXG4gICAgZ2xvYmFscyxcbiAgICByb3V0ZXM6IHsgYWRtaW4gfSxcbiAgfSA9IHVzZUNvbmZpZygpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRHcm91cHMoXG4gICAgICBncm91cE5hdkl0ZW1zKFxuICAgICAgICBbXG4gICAgICAgICAgLi4uY29sbGVjdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICh7IGFkbWluOiB7IGhpZGRlbiB9IH0pID0+XG4gICAgICAgICAgICAgICAgISh0eXBlb2YgaGlkZGVuID09PSAnZnVuY3Rpb24nID8gaGlkZGVuKHsgdXNlciB9KSA6IGhpZGRlbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKChjb2xsZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGVudGl0eVRvR3JvdXA6IEVudGl0eVRvR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgZW50aXR5OiBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudGl0eVR5cGUuY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBlbnRpdHlUb0dyb3VwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi5nbG9iYWxzXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAoeyBhZG1pbjogeyBoaWRkZW4gfSB9KSA9PlxuICAgICAgICAgICAgICAgICEodHlwZW9mIGhpZGRlbiA9PT0gJ2Z1bmN0aW9uJyA/IGhpZGRlbih7IHVzZXIgfSkgOiBoaWRkZW4pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLm1hcCgoZ2xvYmFsKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGVudGl0eVRvR3JvdXA6IEVudGl0eVRvR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgZW50aXR5OiBnbG9iYWwsXG4gICAgICAgICAgICAgICAgdHlwZTogRW50aXR5VHlwZS5nbG9iYWwsXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gZW50aXR5VG9Hcm91cFxuICAgICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgICBpMThuLFxuICAgICAgKSxcbiAgICApXG4gIH0sIFtjb2xsZWN0aW9ucywgZ2xvYmFscywgcGVybWlzc2lvbnMsIGkxOG4sIGkxOG4ubGFuZ3VhZ2UsIHVzZXJdKVxuXG4gIHJldHVybiAoXG4gICAgPGFzaWRlIGNsYXNzTmFtZT17W2Jhc2VDbGFzcywgbmF2T3BlbiAmJiBgJHtiYXNlQ2xhc3N9LS1uYXYtb3BlbmBdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyl9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3Njcm9sbGB9IHJlZj17bmF2UmVmfT5cbiAgICAgICAgPG5hdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3dyYXBgfT5cbiAgICAgICAgICB7QXJyYXkuaXNBcnJheShiZWZvcmVOYXZMaW5rcykgJiZcbiAgICAgICAgICAgIGJlZm9yZU5hdkxpbmtzLm1hcCgoQ29tcG9uZW50LCBpKSA9PiA8Q29tcG9uZW50IGtleT17aX0gLz4pfVxuICAgICAgICAgIHtncm91cHMubWFwKCh7IGVudGl0aWVzLCBsYWJlbCB9LCBrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxOYXZHcm91cCB7Li4ueyBrZXksIGxhYmVsIH19PlxuICAgICAgICAgICAgICAgIHtlbnRpdGllcy5tYXAoKHsgZW50aXR5LCB0eXBlIH0sIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGxldCBlbnRpdHlMYWJlbDogc3RyaW5nXG4gICAgICAgICAgICAgICAgICBsZXQgaHJlZjogc3RyaW5nXG4gICAgICAgICAgICAgICAgICBsZXQgaWQ6IHN0cmluZ1xuXG4gICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gRW50aXR5VHlwZS5jb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGhyZWYgPSBgJHthZG1pbn0vY29sbGVjdGlvbnMvJHtlbnRpdHkuc2x1Z31gXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eUxhYmVsID0gZ2V0VHJhbnNsYXRpb24oZW50aXR5LmxhYmVscy5wbHVyYWwsIGkxOG4pXG4gICAgICAgICAgICAgICAgICAgIGlkID0gYG5hdi0ke2VudGl0eS5zbHVnfWBcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IEVudGl0eVR5cGUuZ2xvYmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGhyZWYgPSBgJHthZG1pbn0vZ2xvYmFscy8ke2VudGl0eS5zbHVnfWBcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TGFiZWwgPSBnZXRUcmFuc2xhdGlvbihlbnRpdHkubGFiZWwsIGkxOG4pXG4gICAgICAgICAgICAgICAgICAgIGlkID0gYG5hdi1nbG9iYWwtJHtlbnRpdHkuc2x1Z31gXG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxOYXZMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQ2xhc3NOYW1lPVwiYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2xpbmtgfVxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtpZH1cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9eyFuYXZPcGVuID8gLTEgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgICAgICAgdG89e2hyZWZ9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2xpbmstaWNvbmB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPENoZXZyb24gZGlyZWN0aW9uPVwicmlnaHRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2xpbmstbGFiZWxgfT57ZW50aXR5TGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L05hdkxpbms+XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvTmF2R3JvdXA+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfSl9XG4gICAgICAgICAge0FycmF5LmlzQXJyYXkoYWZ0ZXJOYXZMaW5rcykgJiZcbiAgICAgICAgICAgIGFmdGVyTmF2TGlua3MubWFwKChDb21wb25lbnQsIGkpID0+IDxDb21wb25lbnQga2V5PXtpfSAvPil9XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2NvbnRyb2xzYH0+XG4gICAgICAgICAgICA8TG9nb3V0IHRhYkluZGV4PXshbmF2T3BlbiA/IC0xIDogdW5kZWZpbmVkfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25hdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2hlYWRlcmB9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9faGVhZGVyLWNvbnRlbnRgfT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX21vYmlsZS1jbG9zZWB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIHNldE5hdk9wZW4oZmFsc2UpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgdGFiSW5kZXg9eyFuYXZPcGVuID8gLTEgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SGFtYnVyZ2VyIGlzQWN0aXZlIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9hc2lkZT5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgTmF2OiBSZWFjdC5GQyA9ICgpID0+IHtcbiAgY29uc3Qge1xuICAgIGFkbWluOiB7XG4gICAgICBjb21wb25lbnRzOiB7IE5hdjogQ3VzdG9tTmF2IH0gPSB7XG4gICAgICAgIE5hdjogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICB9ID0ge30sXG4gIH0gPSB1c2VDb25maWcoKVxuXG4gIHJldHVybiA8UmVuZGVyQ3VzdG9tQ29tcG9uZW50IEN1c3RvbUNvbXBvbmVudD17Q3VzdG9tTmF2fSBEZWZhdWx0Q29tcG9uZW50PXtEZWZhdWx0TmF2fSAvPlxufVxuIl0sIm5hbWVzIjpbIk5hdiIsImJhc2VDbGFzcyIsIkRlZmF1bHROYXYiLCJuYXZPcGVuIiwibmF2UmVmIiwic2V0TmF2T3BlbiIsInVzZU5hdiIsInBlcm1pc3Npb25zIiwidXNlciIsInVzZUF1dGgiLCJncm91cHMiLCJzZXRHcm91cHMiLCJ1c2VTdGF0ZSIsImkxOG4iLCJ1c2VUcmFuc2xhdGlvbiIsImFkbWluIiwiY29tcG9uZW50cyIsImFmdGVyTmF2TGlua3MiLCJiZWZvcmVOYXZMaW5rcyIsImNvbGxlY3Rpb25zIiwiZ2xvYmFscyIsInJvdXRlcyIsInVzZUNvbmZpZyIsInVzZUVmZmVjdCIsImdyb3VwTmF2SXRlbXMiLCJmaWx0ZXIiLCJoaWRkZW4iLCJtYXAiLCJjb2xsZWN0aW9uIiwiZW50aXR5VG9Hcm91cCIsImVudGl0eSIsInR5cGUiLCJFbnRpdHlUeXBlIiwiZ2xvYmFsIiwibGFuZ3VhZ2UiLCJhc2lkZSIsImNsYXNzTmFtZSIsIkJvb2xlYW4iLCJqb2luIiwiZGl2IiwicmVmIiwibmF2IiwiQXJyYXkiLCJpc0FycmF5IiwiQ29tcG9uZW50IiwiaSIsImtleSIsImVudGl0aWVzIiwibGFiZWwiLCJOYXZHcm91cCIsImVudGl0eUxhYmVsIiwiaHJlZiIsImlkIiwic2x1ZyIsImdldFRyYW5zbGF0aW9uIiwibGFiZWxzIiwicGx1cmFsIiwiTmF2TGluayIsImFjdGl2ZUNsYXNzTmFtZSIsInRhYkluZGV4IiwidW5kZWZpbmVkIiwidG8iLCJzcGFuIiwiQ2hldnJvbiIsImRpcmVjdGlvbiIsIkxvZ291dCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJIYW1idXJnZXIiLCJpc0FjdGl2ZSIsIkN1c3RvbU5hdiIsIlJlbmRlckN1c3RvbUNvbXBvbmVudCIsIkN1c3RvbUNvbXBvbmVudCIsIkRlZmF1bHRDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBOElhQTs7O2VBQUFBOzs7K0RBOUk4Qjs4QkFDWjtnQ0FDUDtnQ0FJTzsrQkFDVztnRUFDdEI7c0JBQ0k7d0JBQ0U7OEVBQ1E7MkJBQ1I7K0RBQ1A7aUVBQ0U7eUJBQ0U7UUFDaEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVAsTUFBTUMsWUFBWTtBQUVsQixNQUFNQyxhQUF1QjtJQUMzQixNQUFNLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxVQUFVLEVBQUUsR0FBR0Ms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