@panneau/medias 3.0.184 → 3.0.185

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 (3) hide show
  1. package/es/index.js +41 -81
  2. package/lib/index.js +41 -81
  3. package/package.json +2 -2
package/es/index.js CHANGED
@@ -100,7 +100,7 @@ var useMedias = function useMedias() {
100
100
  var useMedias$1 = useMedias;
101
101
 
102
102
  var _excluded$6 = ["data"];
103
- var useMedia = function useMedia(id, opts) {
103
+ var useMedia$1 = function useMedia(id, opts) {
104
104
  var api = useMediasApi();
105
105
  var loader = useCallback(function () {
106
106
  return api.find(id);
@@ -112,7 +112,7 @@ var useMedia = function useMedia(id, opts) {
112
112
  story: data
113
113
  }, request);
114
114
  };
115
- var useMedia$1 = useMedia;
115
+ var useMedia$2 = useMedia$1;
116
116
 
117
117
  var useMediaCreate = function useMediaCreate() {
118
118
  var _useState = useState(false),
@@ -557,26 +557,21 @@ function MediaForm(_ref) {
557
557
  MediaForm.propTypes = propTypes$7;
558
558
  MediaForm.defaultProps = defaultProps$7;
559
559
 
560
- var MediasFormContext = /*#__PURE__*/React.createContext(null);
561
- var useMediasForm = function useMediasForm() {
562
- return useContext(MediasFormContext);
560
+ var MediaContext = /*#__PURE__*/React.createContext(null);
561
+ var useMedia = function useMedia() {
562
+ return useContext(MediaContext);
563
563
  };
564
564
  var propTypes$6 = {
565
565
  media: PropTypes.shape({
566
566
  id: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
567
567
  }),
568
- fields: PropTypes.arrayOf(PropTypes.shape({
569
- id: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
570
- })),
571
568
  children: PropTypes.node.isRequired
572
569
  };
573
570
  var defaultProps$6 = {
574
- media: null,
575
- fields: null
571
+ media: null
576
572
  };
577
- function MediasFormProvider(_ref) {
573
+ function MediaProvider(_ref) {
578
574
  var providedMedia = _ref.media,
579
- providedFields = _ref.fields,
580
575
  children = _ref.children;
581
576
  var _useState = useState(providedMedia),
582
577
  _useState2 = _slicedToArray(_useState, 2),
@@ -585,16 +580,15 @@ function MediasFormProvider(_ref) {
585
580
  var values = useMemo(function () {
586
581
  return {
587
582
  media: media,
588
- setMedia: setMedia,
589
- fields: providedFields
583
+ setMedia: setMedia
590
584
  };
591
- }, [media, setMedia, providedFields]);
592
- return /*#__PURE__*/React.createElement(MediasFormContext.Provider, {
585
+ }, [media, setMedia]);
586
+ return /*#__PURE__*/React.createElement(MediaContext.Provider, {
593
587
  value: values
594
588
  }, children);
595
589
  }
596
- MediasFormProvider.propTypes = propTypes$6;
597
- MediasFormProvider.defaultProps = defaultProps$6;
590
+ MediaProvider.propTypes = propTypes$6;
591
+ MediaProvider.defaultProps = defaultProps$6;
598
592
 
599
593
  var defaultColumns = [{
600
594
  id: 'image',
@@ -985,11 +979,9 @@ function MediasBrowser(_ref) {
985
979
  onLayoutChange(newLayout);
986
980
  }
987
981
  }, [setLayout]);
988
- var _useMediasForm = useMediasForm(),
989
- currentMedia = _useMediasForm.media,
990
- setCurrentMedia = _useMediasForm.setMedia,
991
- _useMediasForm$fields = _useMediasForm.fields,
992
- mediaFormFields = _useMediasForm$fields === void 0 ? null : _useMediasForm$fields;
982
+ var _useMedia = useMedia(),
983
+ currentMedia = _useMedia.media,
984
+ setCurrentMedia = _useMedia.setMedia;
993
985
  var onOpenMedia = useCallback(function (media) {
994
986
  setCurrentMedia(media);
995
987
  }, [setCurrentMedia]);
@@ -1207,6 +1199,9 @@ MediasBrowser.propTypes = propTypes$5;
1207
1199
  MediasBrowser.defaultProps = defaultProps$5;
1208
1200
 
1209
1201
  var _excluded$4 = ["items", "value", "onSelectionChange", "multipleSelection", "types", "onChange", "onClose", "withoutButtons", "className"];
1202
+
1203
+ // import { useMediasForm } from './MediasFormContext';
1204
+
1210
1205
  var propTypes$4 = {
1211
1206
  // eslint-disable-next-line react/forbid-prop-types
1212
1207
  items: PropTypes.arrayOf(PropTypes.shape({})),
@@ -1234,14 +1229,14 @@ function MediasPicker(_ref) {
1234
1229
  initialSelectedItems = _ref.value,
1235
1230
  parentOnSelectionChange = _ref.onSelectionChange,
1236
1231
  multipleSelection = _ref.multipleSelection,
1237
- types = _ref.types,
1238
- onChange = _ref.onChange,
1239
- onClose = _ref.onClose,
1240
- withoutButtons = _ref.withoutButtons,
1241
- className = _ref.className,
1232
+ types = _ref.types;
1233
+ _ref.onChange;
1234
+ _ref.onClose;
1235
+ _ref.withoutButtons;
1236
+ var className = _ref.className,
1242
1237
  props = _objectWithoutProperties(_ref, _excluded$4);
1243
- var _useMediasForm = useMediasForm(),
1244
- currentMedia = _useMediasForm.media;
1238
+ // const { media: currentMedia } = useMediasForm();
1239
+
1245
1240
  var _useState = useState(initialSelectedItems || null),
1246
1241
  _useState2 = _slicedToArray(_useState, 2),
1247
1242
  selectedItems = _useState2[0],
@@ -1258,12 +1253,15 @@ function MediasPicker(_ref) {
1258
1253
  parentOnSelectionChange(selectedItems);
1259
1254
  }
1260
1255
  }, [selectedItems, parentOnSelectionChange]);
1261
- var onConfirmSelection = useCallback(function () {
1262
- if (onChange !== null) {
1263
- onChange(selectedItems || null);
1264
- }
1265
- }, [selectedItems, onChange]);
1266
- var empty = selectedItems === null || isArray(selectedItems) && selectedItems.length === 0;
1256
+
1257
+ // const onConfirmSelection = useCallback(() => {
1258
+ // if (onChange !== null) {
1259
+ // onChange(selectedItems || null);
1260
+ // }
1261
+ // }, [selectedItems, onChange]);
1262
+
1263
+ // const empty = selectedItems === null || (isArray(selectedItems) && selectedItems.length === 0);
1264
+
1267
1265
  return /*#__PURE__*/React.createElement("div", {
1268
1266
  className: className
1269
1267
  }, /*#__PURE__*/React.createElement(MediasBrowser, Object.assign({
@@ -1279,39 +1277,7 @@ function MediasPicker(_ref) {
1279
1277
  // ? [initialSelectedItems]
1280
1278
  // : initialSelectedItems
1281
1279
  // }
1282
- }, props)), !withoutButtons && currentMedia === null ? /*#__PURE__*/React.createElement("div", {
1283
- className: "d-flex w-100 align-items-end justify-content-end mt-3"
1284
- }, /*#__PURE__*/React.createElement("div", {
1285
- className: "btn-group"
1286
- }, onClose !== null ? /*#__PURE__*/React.createElement(Button, {
1287
- type: "button",
1288
- theme: "secondary",
1289
- onClick: onClose,
1290
- className: "d-block me-2"
1291
- }, /*#__PURE__*/React.createElement(FormattedMessage, {
1292
- id: "PyxZY2",
1293
- defaultMessage: [{
1294
- "type": 0,
1295
- "value": "Cancel"
1296
- }]
1297
- })) : null, /*#__PURE__*/React.createElement(Button, {
1298
- type: "button",
1299
- theme: "primary",
1300
- onClick: onConfirmSelection,
1301
- className: "d-block"
1302
- }, empty ? /*#__PURE__*/React.createElement(FormattedMessage, {
1303
- id: "Krgf6j",
1304
- defaultMessage: [{
1305
- "type": 0,
1306
- "value": "Clear selection"
1307
- }]
1308
- }) : /*#__PURE__*/React.createElement(FormattedMessage, {
1309
- id: "rvOVCV",
1310
- defaultMessage: [{
1311
- "type": 0,
1312
- "value": "Confirm selection"
1313
- }]
1314
- })))) : null);
1280
+ }, props)));
1315
1281
  }
1316
1282
  MediasPicker.propTypes = propTypes$4;
1317
1283
  MediasPicker.defaultProps = defaultProps$4;
@@ -1338,7 +1304,7 @@ function MediasBrowserContainer(_ref) {
1338
1304
  props = _objectWithoutProperties(_ref, _excluded$3);
1339
1305
  return /*#__PURE__*/React.createElement(MediasApiProvider, {
1340
1306
  api: api
1341
- }, /*#__PURE__*/React.createElement(MediasFormProvider, {
1307
+ }, /*#__PURE__*/React.createElement(MediaProvider, {
1342
1308
  media: media,
1343
1309
  fields: fields
1344
1310
  }, /*#__PURE__*/React.createElement(MediasBrowser, props)));
@@ -1346,33 +1312,27 @@ function MediasBrowserContainer(_ref) {
1346
1312
  MediasBrowserContainer.propTypes = propTypes$3;
1347
1313
  MediasBrowserContainer.defaultProps = defaultProps$3;
1348
1314
 
1349
- var _excluded$2 = ["api", "media", "fields", "onChange"];
1315
+ var _excluded$2 = ["api", "media", "onChange"];
1350
1316
  var propTypes$2 = {
1351
1317
  api: apiPropTypes,
1352
1318
  media: PropTypes.shape({
1353
1319
  id: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
1354
1320
  }),
1355
- fields: PropTypes.arrayOf(PropTypes.shape({
1356
- id: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
1357
- })),
1358
1321
  onChange: PropTypes.func.isRequired
1359
1322
  };
1360
1323
  var defaultProps$2 = {
1361
1324
  api: null,
1362
- media: null,
1363
- fields: null
1325
+ media: null
1364
1326
  };
1365
1327
  function MediasPickerContainer(_ref) {
1366
1328
  var api = _ref.api,
1367
1329
  media = _ref.media,
1368
- fields = _ref.fields,
1369
1330
  onChange = _ref.onChange,
1370
1331
  props = _objectWithoutProperties(_ref, _excluded$2);
1371
1332
  return /*#__PURE__*/React.createElement(MediasApiProvider, {
1372
1333
  api: api
1373
- }, /*#__PURE__*/React.createElement(MediasFormProvider, {
1374
- media: media,
1375
- fields: fields
1334
+ }, /*#__PURE__*/React.createElement(MediaProvider, {
1335
+ media: media
1376
1336
  }, /*#__PURE__*/React.createElement(MediasPicker, Object.assign({}, props, {
1377
1337
  onChange: onChange
1378
1338
  }))));
@@ -1540,4 +1500,4 @@ function MediasResourcePicker(_ref) {
1540
1500
  MediasResourcePicker.propTypes = propTypes;
1541
1501
  MediasResourcePicker.defaultProps = defaultProps;
1542
1502
 
1543
- export { MediaForm, MediasApiProvider, MediasBrowser, MediasBrowserContainer, MediasPicker, MediasPickerContainer, MediasResourceBrowser, MediasResourcePicker, apiPropTypes, defaultColumns as columns, defaultFields as fields, defaultFilters as filters, useMedia$1 as useMedia, useMediaCreate$1 as useMediaCreate, useMediaDelete$1 as useMediaDelete, useMediaTrash$1 as useMediaTrash, useMediaUpdate$1 as useMediaUpdate, useMedias$1 as useMedias, useMediasApi };
1503
+ export { MediaForm, MediasApiProvider, MediasBrowser, MediasBrowserContainer, MediasPicker, MediasPickerContainer, MediasResourceBrowser, MediasResourcePicker, apiPropTypes, defaultColumns as columns, defaultFields as fields, defaultFilters as filters, useMedia$2 as useMedia, useMediaCreate$1 as useMediaCreate, useMediaDelete$1 as useMediaDelete, useMediaTrash$1 as useMediaTrash, useMediaUpdate$1 as useMediaUpdate, useMedias$1 as useMedias, useMediasApi };
package/lib/index.js CHANGED
@@ -102,7 +102,7 @@ var useMedias = function useMedias() {
102
102
  var useMedias$1 = useMedias;
103
103
 
104
104
  var _excluded$6 = ["data"];
105
- var useMedia = function useMedia(id, opts) {
105
+ var useMedia$1 = function useMedia(id, opts) {
106
106
  var api = useMediasApi();
107
107
  var loader = React.useCallback(function () {
108
108
  return api.find(id);
@@ -114,7 +114,7 @@ var useMedia = function useMedia(id, opts) {
114
114
  story: data$1
115
115
  }, request);
116
116
  };
117
- var useMedia$1 = useMedia;
117
+ var useMedia$2 = useMedia$1;
118
118
 
119
119
  var useMediaCreate = function useMediaCreate() {
120
120
  var _useState = React.useState(false),
@@ -559,26 +559,21 @@ function MediaForm(_ref) {
559
559
  MediaForm.propTypes = propTypes$7;
560
560
  MediaForm.defaultProps = defaultProps$7;
561
561
 
562
- var MediasFormContext = /*#__PURE__*/React.createContext(null);
563
- var useMediasForm = function useMediasForm() {
564
- return React.useContext(MediasFormContext);
562
+ var MediaContext = /*#__PURE__*/React.createContext(null);
563
+ var useMedia = function useMedia() {
564
+ return React.useContext(MediaContext);
565
565
  };
566
566
  var propTypes$6 = {
567
567
  media: PropTypes.shape({
568
568
  id: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
569
569
  }),
570
- fields: PropTypes.arrayOf(PropTypes.shape({
571
- id: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
572
- })),
573
570
  children: PropTypes.node.isRequired
574
571
  };
575
572
  var defaultProps$6 = {
576
- media: null,
577
- fields: null
573
+ media: null
578
574
  };
579
- function MediasFormProvider(_ref) {
575
+ function MediaProvider(_ref) {
580
576
  var providedMedia = _ref.media,
581
- providedFields = _ref.fields,
582
577
  children = _ref.children;
583
578
  var _useState = React.useState(providedMedia),
584
579
  _useState2 = _slicedToArray(_useState, 2),
@@ -587,16 +582,15 @@ function MediasFormProvider(_ref) {
587
582
  var values = React.useMemo(function () {
588
583
  return {
589
584
  media: media,
590
- setMedia: setMedia,
591
- fields: providedFields
585
+ setMedia: setMedia
592
586
  };
593
- }, [media, setMedia, providedFields]);
594
- return /*#__PURE__*/React.createElement(MediasFormContext.Provider, {
587
+ }, [media, setMedia]);
588
+ return /*#__PURE__*/React.createElement(MediaContext.Provider, {
595
589
  value: values
596
590
  }, children);
597
591
  }
598
- MediasFormProvider.propTypes = propTypes$6;
599
- MediasFormProvider.defaultProps = defaultProps$6;
592
+ MediaProvider.propTypes = propTypes$6;
593
+ MediaProvider.defaultProps = defaultProps$6;
600
594
 
601
595
  var defaultColumns = [{
602
596
  id: 'image',
@@ -987,11 +981,9 @@ function MediasBrowser(_ref) {
987
981
  onLayoutChange(newLayout);
988
982
  }
989
983
  }, [setLayout]);
990
- var _useMediasForm = useMediasForm(),
991
- currentMedia = _useMediasForm.media,
992
- setCurrentMedia = _useMediasForm.setMedia,
993
- _useMediasForm$fields = _useMediasForm.fields,
994
- mediaFormFields = _useMediasForm$fields === void 0 ? null : _useMediasForm$fields;
984
+ var _useMedia = useMedia(),
985
+ currentMedia = _useMedia.media,
986
+ setCurrentMedia = _useMedia.setMedia;
995
987
  var onOpenMedia = React.useCallback(function (media) {
996
988
  setCurrentMedia(media);
997
989
  }, [setCurrentMedia]);
@@ -1209,6 +1201,9 @@ MediasBrowser.propTypes = propTypes$5;
1209
1201
  MediasBrowser.defaultProps = defaultProps$5;
1210
1202
 
1211
1203
  var _excluded$4 = ["items", "value", "onSelectionChange", "multipleSelection", "types", "onChange", "onClose", "withoutButtons", "className"];
1204
+
1205
+ // import { useMediasForm } from './MediasFormContext';
1206
+
1212
1207
  var propTypes$4 = {
1213
1208
  // eslint-disable-next-line react/forbid-prop-types
1214
1209
  items: PropTypes.arrayOf(PropTypes.shape({})),
@@ -1236,14 +1231,14 @@ function MediasPicker(_ref) {
1236
1231
  initialSelectedItems = _ref.value,
1237
1232
  parentOnSelectionChange = _ref.onSelectionChange,
1238
1233
  multipleSelection = _ref.multipleSelection,
1239
- types = _ref.types,
1240
- onChange = _ref.onChange,
1241
- onClose = _ref.onClose,
1242
- withoutButtons = _ref.withoutButtons,
1243
- className = _ref.className,
1234
+ types = _ref.types;
1235
+ _ref.onChange;
1236
+ _ref.onClose;
1237
+ _ref.withoutButtons;
1238
+ var className = _ref.className,
1244
1239
  props = _objectWithoutProperties(_ref, _excluded$4);
1245
- var _useMediasForm = useMediasForm(),
1246
- currentMedia = _useMediasForm.media;
1240
+ // const { media: currentMedia } = useMediasForm();
1241
+
1247
1242
  var _useState = React.useState(initialSelectedItems || null),
1248
1243
  _useState2 = _slicedToArray(_useState, 2),
1249
1244
  selectedItems = _useState2[0],
@@ -1260,12 +1255,15 @@ function MediasPicker(_ref) {
1260
1255
  parentOnSelectionChange(selectedItems);
1261
1256
  }
1262
1257
  }, [selectedItems, parentOnSelectionChange]);
1263
- var onConfirmSelection = React.useCallback(function () {
1264
- if (onChange !== null) {
1265
- onChange(selectedItems || null);
1266
- }
1267
- }, [selectedItems, onChange]);
1268
- var empty = selectedItems === null || isArray(selectedItems) && selectedItems.length === 0;
1258
+
1259
+ // const onConfirmSelection = useCallback(() => {
1260
+ // if (onChange !== null) {
1261
+ // onChange(selectedItems || null);
1262
+ // }
1263
+ // }, [selectedItems, onChange]);
1264
+
1265
+ // const empty = selectedItems === null || (isArray(selectedItems) && selectedItems.length === 0);
1266
+
1269
1267
  return /*#__PURE__*/React.createElement("div", {
1270
1268
  className: className
1271
1269
  }, /*#__PURE__*/React.createElement(MediasBrowser, Object.assign({
@@ -1281,39 +1279,7 @@ function MediasPicker(_ref) {
1281
1279
  // ? [initialSelectedItems]
1282
1280
  // : initialSelectedItems
1283
1281
  // }
1284
- }, props)), !withoutButtons && currentMedia === null ? /*#__PURE__*/React.createElement("div", {
1285
- className: "d-flex w-100 align-items-end justify-content-end mt-3"
1286
- }, /*#__PURE__*/React.createElement("div", {
1287
- className: "btn-group"
1288
- }, onClose !== null ? /*#__PURE__*/React.createElement(Button, {
1289
- type: "button",
1290
- theme: "secondary",
1291
- onClick: onClose,
1292
- className: "d-block me-2"
1293
- }, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
1294
- id: "PyxZY2",
1295
- defaultMessage: [{
1296
- "type": 0,
1297
- "value": "Cancel"
1298
- }]
1299
- })) : null, /*#__PURE__*/React.createElement(Button, {
1300
- type: "button",
1301
- theme: "primary",
1302
- onClick: onConfirmSelection,
1303
- className: "d-block"
1304
- }, empty ? /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
1305
- id: "Krgf6j",
1306
- defaultMessage: [{
1307
- "type": 0,
1308
- "value": "Clear selection"
1309
- }]
1310
- }) : /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
1311
- id: "rvOVCV",
1312
- defaultMessage: [{
1313
- "type": 0,
1314
- "value": "Confirm selection"
1315
- }]
1316
- })))) : null);
1282
+ }, props)));
1317
1283
  }
1318
1284
  MediasPicker.propTypes = propTypes$4;
1319
1285
  MediasPicker.defaultProps = defaultProps$4;
@@ -1340,7 +1306,7 @@ function MediasBrowserContainer(_ref) {
1340
1306
  props = _objectWithoutProperties(_ref, _excluded$3);
1341
1307
  return /*#__PURE__*/React.createElement(MediasApiProvider, {
1342
1308
  api: api
1343
- }, /*#__PURE__*/React.createElement(MediasFormProvider, {
1309
+ }, /*#__PURE__*/React.createElement(MediaProvider, {
1344
1310
  media: media,
1345
1311
  fields: fields
1346
1312
  }, /*#__PURE__*/React.createElement(MediasBrowser, props)));
@@ -1348,33 +1314,27 @@ function MediasBrowserContainer(_ref) {
1348
1314
  MediasBrowserContainer.propTypes = propTypes$3;
1349
1315
  MediasBrowserContainer.defaultProps = defaultProps$3;
1350
1316
 
1351
- var _excluded$2 = ["api", "media", "fields", "onChange"];
1317
+ var _excluded$2 = ["api", "media", "onChange"];
1352
1318
  var propTypes$2 = {
1353
1319
  api: apiPropTypes,
1354
1320
  media: PropTypes.shape({
1355
1321
  id: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
1356
1322
  }),
1357
- fields: PropTypes.arrayOf(PropTypes.shape({
1358
- id: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
1359
- })),
1360
1323
  onChange: PropTypes.func.isRequired
1361
1324
  };
1362
1325
  var defaultProps$2 = {
1363
1326
  api: null,
1364
- media: null,
1365
- fields: null
1327
+ media: null
1366
1328
  };
1367
1329
  function MediasPickerContainer(_ref) {
1368
1330
  var api = _ref.api,
1369
1331
  media = _ref.media,
1370
- fields = _ref.fields,
1371
1332
  onChange = _ref.onChange,
1372
1333
  props = _objectWithoutProperties(_ref, _excluded$2);
1373
1334
  return /*#__PURE__*/React.createElement(MediasApiProvider, {
1374
1335
  api: api
1375
- }, /*#__PURE__*/React.createElement(MediasFormProvider, {
1376
- media: media,
1377
- fields: fields
1336
+ }, /*#__PURE__*/React.createElement(MediaProvider, {
1337
+ media: media
1378
1338
  }, /*#__PURE__*/React.createElement(MediasPicker, Object.assign({}, props, {
1379
1339
  onChange: onChange
1380
1340
  }))));
@@ -1554,7 +1514,7 @@ exports.apiPropTypes = apiPropTypes;
1554
1514
  exports.columns = defaultColumns;
1555
1515
  exports.fields = defaultFields;
1556
1516
  exports.filters = defaultFilters;
1557
- exports.useMedia = useMedia$1;
1517
+ exports.useMedia = useMedia$2;
1558
1518
  exports.useMediaCreate = useMediaCreate$1;
1559
1519
  exports.useMediaDelete = useMediaDelete$1;
1560
1520
  exports.useMediaTrash = useMediaTrash$1;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/medias",
3
- "version": "3.0.184",
3
+ "version": "3.0.185",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "javascript"
@@ -69,5 +69,5 @@
69
69
  "publishConfig": {
70
70
  "access": "public"
71
71
  },
72
- "gitHead": "1d2948618d41595e4c6a40a72f1d9f196cf369ef"
72
+ "gitHead": "d07cd67a86c77392ecaf3b2502b58ab4fb3e723b"
73
73
  }