@jobber/hooks 2.11.3-node22-3bf0edd.18 → 2.12.1

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.
Files changed (28) hide show
  1. package/dist/useAssert/useAssert.js +1 -2
  2. package/dist/useBool/useBool.js +1 -2
  3. package/dist/useBreakpoints/mockViewportWidth/mockViewportWidth.js +4 -5
  4. package/dist/useBreakpoints/useBreakpoints.js +2 -2
  5. package/dist/useBreakpoints/useMediaQuery.js +2 -2
  6. package/dist/useCallbackRef/useCallbackRef.js +1 -2
  7. package/dist/useCollectionQuery/mdxUtils.js +3 -3
  8. package/dist/useCollectionQuery/test-utilities/mocks.d.ts +1 -2
  9. package/dist/useCollectionQuery/test-utilities/mocks.js +6 -6
  10. package/dist/useCollectionQuery/test-utilities/utils.js +3 -4
  11. package/dist/useCollectionQuery/uniqueEdges.js +2 -3
  12. package/dist/useCollectionQuery/uniqueNodes.js +1 -2
  13. package/dist/useCollectionQuery/useCollectionQuery.js +2 -3
  14. package/dist/useFocusTrap/useFocusTrap.d.ts +0 -1
  15. package/dist/useFocusTrap/useFocusTrap.js +1 -2
  16. package/dist/useFormState/useFormState.d.ts +0 -1
  17. package/dist/useFormState/useFormState.js +1 -2
  18. package/dist/useInView/useInView.js +1 -2
  19. package/dist/useIsMounted/useIsMounted.js +1 -2
  20. package/dist/useLiveAnnounce/useLiveAnnounce.js +1 -2
  21. package/dist/useOnKeyDown/useOnKeyDown.js +1 -2
  22. package/dist/usePasswordStrength/usePasswordStrength.js +1 -2
  23. package/dist/useRefocusOnActivator/useRefocusOnActivator.js +1 -2
  24. package/dist/useResizeObserver/useResizeObserver.d.ts +0 -1
  25. package/dist/useResizeObserver/useResizeObserver.js +2 -2
  26. package/dist/useShowClear/useShowClear.js +1 -2
  27. package/dist/useWindowDimensions/useWindowDimensions.js +1 -2
  28. package/package.json +3 -3
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.useAssert = void 0;
6
+ exports.useAssert = useAssert;
7
7
  const process_1 = __importDefault(require("process"));
8
8
  function useAssert(shouldShow, message, options) {
9
9
  var _a;
@@ -16,4 +16,3 @@ function useAssert(shouldShow, message, options) {
16
16
  }
17
17
  }
18
18
  }
19
- exports.useAssert = useAssert;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useBool = void 0;
3
+ exports.useBool = useBool;
4
4
  const react_1 = require("react");
5
5
  function useBool(initialState = false) {
6
6
  const [state, setState] = (0, react_1.useState)(initialState);
@@ -9,4 +9,3 @@ function useBool(initialState = false) {
9
9
  const toggle = (0, react_1.useCallback)(() => setState(current => !current), []);
10
10
  return [state, setTrue, setFalse, toggle];
11
11
  }
12
- exports.useBool = useBool;
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isQueryMatching = exports.mockViewportWidth = void 0;
3
+ exports.mockViewportWidth = mockViewportWidth;
4
+ exports.isQueryMatching = isQueryMatching;
4
5
  const defaultMatchMedia = window.matchMedia;
5
6
  const defaultResizeTo = window.resizeTo;
6
7
  const defaultInnerWidth = window.innerWidth;
7
8
  function mockViewportWidth() {
8
9
  return { cleanup, setViewportWidth };
9
10
  }
10
- exports.mockViewportWidth = mockViewportWidth;
11
11
  function setViewportWidth(newWidth) {
12
12
  Object.defineProperty(window, "matchMedia", {
13
13
  writable: true,
@@ -17,8 +17,8 @@ function setViewportWidth(newWidth) {
17
17
  matches: matches,
18
18
  media: query,
19
19
  onchange: null,
20
- addListener: jest.fn(),
21
- removeListener: jest.fn(),
20
+ addListener: jest.fn(), // Deprecated but some packages use it
21
+ removeListener: jest.fn(), // Deprecated but some packages use it
22
22
  addEventListener: jest.fn(),
23
23
  removeEventListener: jest.fn(),
24
24
  dispatchEvent: jest.fn(),
@@ -63,4 +63,3 @@ function isQueryMatching(query) {
63
63
  return innerWidth >= breakpoint;
64
64
  }
65
65
  }
66
- exports.isQueryMatching = isQueryMatching;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useBreakpoints = exports.BREAKPOINT_SIZES = void 0;
3
+ exports.BREAKPOINT_SIZES = void 0;
4
+ exports.useBreakpoints = useBreakpoints;
4
5
  const useMediaQuery_1 = require("./useMediaQuery");
5
6
  exports.BREAKPOINT_SIZES = { sm: 490, md: 768, lg: 1080, xl: 1440 };
6
7
  /**
@@ -25,4 +26,3 @@ function useBreakpoints() {
25
26
  largeOnly: largeAndUp && !extraLargeAndUp,
26
27
  };
27
28
  }
28
- exports.useBreakpoints = useBreakpoints;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useMediaQuery = exports.mediaQueryStore = void 0;
3
+ exports.mediaQueryStore = void 0;
4
+ exports.useMediaQuery = useMediaQuery;
4
5
  const react_1 = require("react");
5
6
  exports.mediaQueryStore = {
6
7
  subscribe(onChange, query) {
@@ -19,4 +20,3 @@ function useMediaQuery(query) {
19
20
  const matches = (0, react_1.useSyncExternalStore)(subscribeMediaQuery, exports.mediaQueryStore.getSnapshot(query), () => true);
20
21
  return matches;
21
22
  }
22
- exports.useMediaQuery = useMediaQuery;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useCallbackRef = void 0;
3
+ exports.useCallbackRef = useCallbackRef;
4
4
  const react_1 = require("react");
5
5
  /**
6
6
  * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a
@@ -13,4 +13,3 @@ function useCallbackRef(callback) {
13
13
  });
14
14
  return (0, react_1.useMemo)(() => ((...args) => { var _a; return (_a = callbackRef.current) === null || _a === void 0 ? void 0 : _a.call(callbackRef, ...args); }), []);
15
15
  }
16
- exports.useCallbackRef = useCallbackRef;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.returnValues = exports.subscriptionPropsList = exports.propsList = exports.getLoadingState = exports.apolloClient = exports.LIST_QUERY = void 0;
3
+ exports.returnValues = exports.subscriptionPropsList = exports.propsList = exports.apolloClient = exports.LIST_QUERY = void 0;
4
+ exports.getLoadingState = getLoadingState;
4
5
  const client_1 = require("@apollo/client");
5
6
  exports.LIST_QUERY = (0, client_1.gql) `
6
7
  query ListQuery($cursor: String) {
@@ -20,7 +21,7 @@ exports.LIST_QUERY = (0, client_1.gql) `
20
21
  }
21
22
  `;
22
23
  exports.apolloClient = new client_1.ApolloClient({
23
- uri: "https://swapi-graphql.netlify.app/.netlify/functions/index",
24
+ uri: "https://swapi-graphql.netlify.app/graphql",
24
25
  cache: new client_1.InMemoryCache(),
25
26
  });
26
27
  function getLoadingState(loadingInitialContent, loadingRefresh, loadingNextPage) {
@@ -47,7 +48,6 @@ function getLoadingState(loadingInitialContent, loadingRefresh, loadingNextPage)
47
48
  loadingStatus: "Loaded",
48
49
  };
49
50
  }
50
- exports.getLoadingState = getLoadingState;
51
51
  exports.propsList = [
52
52
  {
53
53
  id: 0,
@@ -1,8 +1,7 @@
1
- /// <reference types="jest" />
2
1
  import { DocumentNode } from "@apollo/client";
3
2
  import { MockedResponse } from "@apollo/react-testing";
4
3
  import React from "react";
5
- export declare function wrapper(mocks: MockedResponse[]): React.FunctionComponent<{}>;
4
+ export declare function wrapper(mocks: MockedResponse[]): React.FunctionComponent;
6
5
  export declare const listQueryResponseMock: jest.Mock<{
7
6
  data: {
8
7
  conversation: {
@@ -3,7 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.setListQueryMockHasNextPage = exports.buildListRequestMockForNextPage = exports.buildSubscriptionRequestMock = exports.buildListRequestMock = exports.subscriptionQueryMock = exports.listQueryWithTotalCountResponseMock = exports.listQueryResponseMock = exports.wrapper = void 0;
6
+ exports.subscriptionQueryMock = exports.listQueryWithTotalCountResponseMock = exports.listQueryResponseMock = void 0;
7
+ exports.wrapper = wrapper;
8
+ exports.buildListRequestMock = buildListRequestMock;
9
+ exports.buildSubscriptionRequestMock = buildSubscriptionRequestMock;
10
+ exports.buildListRequestMockForNextPage = buildListRequestMockForNextPage;
11
+ exports.setListQueryMockHasNextPage = setListQueryMockHasNextPage;
7
12
  const react_testing_1 = require("@apollo/react-testing");
8
13
  const react_1 = __importDefault(require("react"));
9
14
  const uuid_1 = require("uuid");
@@ -14,7 +19,6 @@ function wrapper(mocks) {
14
19
  }
15
20
  return ApolloMockedProvider;
16
21
  }
17
- exports.wrapper = wrapper;
18
22
  let listQueryHasNextPage = true;
19
23
  exports.listQueryResponseMock = jest.fn(id => {
20
24
  return {
@@ -104,7 +108,6 @@ function buildListRequestMock(query, responseMock, id, searchTerm) {
104
108
  result: () => responseMock(id),
105
109
  };
106
110
  }
107
- exports.buildListRequestMock = buildListRequestMock;
108
111
  function buildSubscriptionRequestMock(id) {
109
112
  return {
110
113
  request: {
@@ -114,7 +117,6 @@ function buildSubscriptionRequestMock(id) {
114
117
  delay: 100,
115
118
  };
116
119
  }
117
- exports.buildSubscriptionRequestMock = buildSubscriptionRequestMock;
118
120
  function buildListRequestMockForNextPage(query, responseMock, id) {
119
121
  return {
120
122
  request: {
@@ -124,8 +126,6 @@ function buildListRequestMockForNextPage(query, responseMock, id) {
124
126
  result: () => responseMock(id),
125
127
  };
126
128
  }
127
- exports.buildListRequestMockForNextPage = buildListRequestMockForNextPage;
128
129
  function setListQueryMockHasNextPage(hasNextPage) {
129
130
  listQueryHasNextPage = hasNextPage;
130
131
  }
131
- exports.setListQueryMockHasNextPage = setListQueryMockHasNextPage;
@@ -9,10 +9,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.wait = void 0;
13
- function wait(milliseconds = 0) {
14
- return __awaiter(this, void 0, void 0, function* () {
12
+ exports.wait = wait;
13
+ function wait() {
14
+ return __awaiter(this, arguments, void 0, function* (milliseconds = 0) {
15
15
  yield new Promise(resolve => setTimeout(resolve, milliseconds));
16
16
  });
17
17
  }
18
- exports.wait = wait;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.uniqueEdges = exports.createEdge = void 0;
3
+ exports.createEdge = createEdge;
4
+ exports.uniqueEdges = uniqueEdges;
4
5
  function createEdge(node) {
5
6
  return {
6
7
  node: node,
@@ -8,7 +9,6 @@ function createEdge(node) {
8
9
  __typename: `${node.__typename}Edge`,
9
10
  };
10
11
  }
11
- exports.createEdge = createEdge;
12
12
  function uniqueEdges(edges) {
13
13
  const result = new Map();
14
14
  edges.forEach(edge => {
@@ -16,4 +16,3 @@ function uniqueEdges(edges) {
16
16
  });
17
17
  return Array.from(result.values());
18
18
  }
19
- exports.uniqueEdges = uniqueEdges;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.uniqueNodes = void 0;
3
+ exports.uniqueNodes = uniqueNodes;
4
4
  function uniqueNodes(nodes) {
5
5
  const result = new Map();
6
6
  nodes.forEach(node => {
@@ -8,4 +8,3 @@ function uniqueNodes(nodes) {
8
8
  });
9
9
  return Array.from(result.values());
10
10
  }
11
- exports.uniqueNodes = uniqueNodes;
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isAlreadyUpdated = exports.useCollectionQuery = void 0;
6
+ exports.useCollectionQuery = useCollectionQuery;
7
+ exports.isAlreadyUpdated = isAlreadyUpdated;
7
8
  const client_1 = require("@apollo/client");
8
9
  const cloneDeep_1 = __importDefault(require("lodash/cloneDeep"));
9
10
  const react_1 = require("react");
@@ -108,7 +109,6 @@ function useCollectionQuery({ query, queryOptions, getCollectionByPath, subscrip
108
109
  loadingInitialContent,
109
110
  };
110
111
  }
111
- exports.useCollectionQuery = useCollectionQuery;
112
112
  /**
113
113
  * The following method uses an `output` variable, and indirectly modifies it through the `outputCollection` variable.
114
114
  * This type of indirect modification is prone to bugs, but I couldn't think of a better way to write this code.
@@ -180,7 +180,6 @@ function isAlreadyUpdated(outputCollection, newNode) {
180
180
  }
181
181
  return edgesAlreadyUpdated && nodesAlreadyUpdated;
182
182
  }
183
- exports.isAlreadyUpdated = isAlreadyUpdated;
184
183
  function getUpdatedEdges(prevEdges, nextEdges, appendToEnd = true) {
185
184
  const newEdges = appendToEnd
186
185
  ? [...prevEdges, ...nextEdges]
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  /**
3
2
  * Traps the focus within the children of the ref element.
4
3
  *
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useFocusTrap = void 0;
3
+ exports.useFocusTrap = useFocusTrap;
4
4
  const react_1 = require("react");
5
5
  /**
6
6
  * Traps the focus within the children of the ref element.
@@ -46,7 +46,6 @@ function useFocusTrap(active) {
46
46
  }, [active]);
47
47
  return ref;
48
48
  }
49
- exports.useFocusTrap = useFocusTrap;
50
49
  function getElements(ref) {
51
50
  const focusables = [
52
51
  "button",
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export declare function useFormState(): readonly [{
3
2
  isDirty: boolean;
4
3
  isValid: boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useFormState = void 0;
3
+ exports.useFormState = useFormState;
4
4
  const react_1 = require("react");
5
5
  function useFormState() {
6
6
  const [formState, setFormState] = (0, react_1.useState)({
@@ -9,4 +9,3 @@ function useFormState() {
9
9
  });
10
10
  return [formState, setFormState];
11
11
  }
12
- exports.useFormState = useFormState;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useInView = void 0;
3
+ exports.useInView = useInView;
4
4
  const react_1 = require("react");
5
5
  function useInView() {
6
6
  const ref = (0, react_1.useRef)(null);
@@ -17,4 +17,3 @@ function useInView() {
17
17
  }, [handleIntersection, ref.current]);
18
18
  return [ref, isInView];
19
19
  }
20
- exports.useInView = useInView;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useIsMounted = void 0;
3
+ exports.useIsMounted = useIsMounted;
4
4
  const react_1 = require("react");
5
5
  const useSafeLayoutEffect_1 = require("../useSafeLayoutEffect");
6
6
  /**
@@ -32,4 +32,3 @@ function useIsMounted() {
32
32
  }, []);
33
33
  return isMounted;
34
34
  }
35
- exports.useIsMounted = useIsMounted;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useLiveAnnounce = void 0;
3
+ exports.useLiveAnnounce = useLiveAnnounce;
4
4
  const react_1 = require("react");
5
5
  /**
6
6
  * Announce a message on voice over whenever you do an action. This is
@@ -23,7 +23,6 @@ function useLiveAnnounce() {
23
23
  },
24
24
  };
25
25
  }
26
- exports.useLiveAnnounce = useLiveAnnounce;
27
26
  // eslint-disable-next-line max-statements
28
27
  function createAnnouncedElement() {
29
28
  const el = document.createElement("div");
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useOnKeyDown = void 0;
3
+ exports.useOnKeyDown = useOnKeyDown;
4
4
  const react_1 = require("react");
5
5
  function useOnKeyDown(callback, keys) {
6
6
  (0, react_1.useEffect)(() => {
@@ -32,4 +32,3 @@ function useOnKeyDown(callback, keys) {
32
32
  }
33
33
  }
34
34
  }
35
- exports.useOnKeyDown = useOnKeyDown;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.usePasswordStrength = void 0;
6
+ exports.usePasswordStrength = usePasswordStrength;
7
7
  const react_1 = require("react");
8
8
  const zxcvbn_1 = __importDefault(require("zxcvbn"));
9
9
  function usePasswordStrength(password, dictionary) {
@@ -16,4 +16,3 @@ function usePasswordStrength(password, dictionary) {
16
16
  timeToCrack,
17
17
  };
18
18
  }
19
- exports.usePasswordStrength = usePasswordStrength;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useRefocusOnActivator = void 0;
3
+ exports.useRefocusOnActivator = useRefocusOnActivator;
4
4
  const react_1 = require("react");
5
5
  /**
6
6
  * Brings back the focus to the element that opened an overlaid element once
@@ -24,4 +24,3 @@ function useRefocusOnActivator(active) {
24
24
  };
25
25
  }, [active]);
26
26
  }
27
- exports.useRefocusOnActivator = useRefocusOnActivator;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  export declare const Breakpoints: {
3
2
  base: number;
4
3
  small: number;
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.useResizeObserver = exports.Breakpoints = void 0;
6
+ exports.Breakpoints = void 0;
7
+ exports.useResizeObserver = useResizeObserver;
7
8
  const react_1 = require("react");
8
9
  // Importing the polyfilled version of ResizeObserver
9
10
  // eslint-disable-next-line import/no-internal-modules
@@ -36,7 +37,6 @@ function useResizeObserver({ widths = exports.Breakpoints, heights = exports.Bre
36
37
  };
37
38
  return [ref, sizes];
38
39
  }
39
- exports.useResizeObserver = useResizeObserver;
40
40
  /**
41
41
  * To get the proper size we want to make sure that our value is greater
42
42
  * then the comparable, but less then the next largest number in our
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useShowClear = void 0;
3
+ exports.useShowClear = useShowClear;
4
4
  function useShowClear({ clearable, multiline, focused, hasValue, disabled = false, }) {
5
5
  if (multiline && clearable !== "never") {
6
6
  throw new Error("Multiline inputs can not be clearable");
@@ -16,4 +16,3 @@ function useShowClear({ clearable, multiline, focused, hasValue, disabled = fals
16
16
  return true;
17
17
  }
18
18
  }
19
- exports.useShowClear = useShowClear;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useWindowDimensions = void 0;
3
+ exports.useWindowDimensions = useWindowDimensions;
4
4
  const react_1 = require("react");
5
5
  function getWindowDimensions() {
6
6
  if (!(globalThis === null || globalThis === void 0 ? void 0 : globalThis.document)) {
@@ -26,4 +26,3 @@ function useWindowDimensions() {
26
26
  }, []);
27
27
  return windowDimensions;
28
28
  }
29
- exports.useWindowDimensions = useWindowDimensions;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/hooks",
3
- "version": "2.11.3-node22-3bf0edd.18+3bf0eddd",
3
+ "version": "2.12.1",
4
4
  "license": "MIT",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.js",
@@ -20,7 +20,7 @@
20
20
  ],
21
21
  "devDependencies": {
22
22
  "@apollo/react-testing": "^4.0.0",
23
- "@jobber/formatters": "^0.3.1-node22-3bf0edd.346+3bf0eddd",
23
+ "@jobber/formatters": "^0.3.0",
24
24
  "@types/lodash": "4.14.136",
25
25
  "@types/react": "^18.0.28",
26
26
  "@types/react-dom": "^18.0.11",
@@ -40,5 +40,5 @@
40
40
  "@apollo/client": "^3.0.0",
41
41
  "react": "^18.2.0"
42
42
  },
43
- "gitHead": "3bf0eddd96dc11bb9646a691deaa3992b689e982"
43
+ "gitHead": "dc1e53c5e70749429db43ed5f4a4710b66be9092"
44
44
  }