contentoh-components-library 21.5.19 → 21.5.21

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 (30) hide show
  1. package/dist/components/atoms/UserSelector/UserSelector.stories.js +1 -1
  2. package/dist/components/atoms/UserSelector/index.js +4 -2
  3. package/dist/components/molecules/RowItem/styles.js +1 -1
  4. package/dist/components/molecules/StatusAsignationInfo/FinancedCompanies.js +1 -1
  5. package/dist/components/organisms/GridProducts/GridProducts.stories.js +102 -615
  6. package/dist/components/organisms/GridProducts/index.js +2 -2
  7. package/dist/components/organisms/InputGroup/index.js +30 -30
  8. package/dist/components/organisms/Table/styles.js +1 -1
  9. package/dist/components/pages/MultipleEdition/MultipleEdition.stories.js +1 -1
  10. package/dist/components/pages/MultipleEdition/saveData.js +19 -9
  11. package/dist/components/pages/MultipleEdition/styles.js +1 -1
  12. package/dist/components/pages/MultipleEdition/utils.js +153 -61
  13. package/dist/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +75 -72
  14. package/dist/components/pages/RetailerProductEdition/index.js +63 -19
  15. package/package.json +1 -1
  16. package/src/components/atoms/UserSelector/UserSelector.stories.js +1 -1
  17. package/src/components/atoms/UserSelector/index.js +7 -1
  18. package/src/components/molecules/RowItem/styles.js +1 -0
  19. package/src/components/molecules/StatusAsignationInfo/FinancedCompanies.js +43 -501
  20. package/src/components/molecules/StatusAsignationInfo/index.js +2 -3
  21. package/src/components/organisms/GridProducts/GridProducts.stories.js +107 -682
  22. package/src/components/organisms/GridProducts/index.js +2 -2
  23. package/src/components/organisms/InputGroup/index.js +47 -62
  24. package/src/components/organisms/Table/styles.js +5 -1
  25. package/src/components/pages/MultipleEdition/MultipleEdition.stories.js +1 -1
  26. package/src/components/pages/MultipleEdition/saveData.js +6 -7
  27. package/src/components/pages/MultipleEdition/styles.js +1 -7
  28. package/src/components/pages/MultipleEdition/utils.js +24 -47
  29. package/src/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +79 -72
  30. package/src/components/pages/RetailerProductEdition/index.js +93 -29
@@ -31,97 +31,100 @@ RetailerProductEditionDefault.args = {
31
31
  "Ficha técnica": false,
32
32
  Imágenes: false
33
33
  },
34
- token: "eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiI5YTIxMzEyOC02NDgyLTRjMTYtYTRiNi02ZTY0ZjIyNWIxYmQiLCJjb2duaXRvOmdyb3VwcyI6WyJjb2xhYm9yYWRvcmVzX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfWE1aUWRxa0dqIiwiY29nbml0bzp1c2VybmFtZSI6IjlhMjEzMTI4LTY0ODItNGMxNi1hNGI2LTZlNjRmMjI1YjFiZCIsImNvZ25pdG86cm9sZXMiOlsiYXJuOmF3czppYW06Ojg5ODY3MDIzMjgwNzpyb2xlXC9jb250ZW50b2gtZGV2LXVzLWVhc3QtMS1sYW1iZGFSb2xlIl0sImF1ZCI6IjVhYzh0cGdzNmdic3ExM2ZydnJwaWVlcDQwIiwiZXZlbnRfaWQiOiIxMGZiNTE4Mi1jMGI5LTQyZGUtYTAyZC1lOTJlZWI2NWFlN2QiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTcwMTkwMjA4NywibmFtZSI6IkNvbGFib3JhZG9yIiwicGhvbmVfbnVtYmVyIjoiKzUyMTExMSIsImV4cCI6MTcwMTkwNTY4NywiaWF0IjoxNzAxOTAyMDg3LCJlbWFpbCI6ImlzbWFlbDk3bG9wZXpAZ21haWwuY29tIn0.JpoKZHuzPZG2ttaT7Oz3CAPR7xZU19txSDyjGHIwya2zV9uOHxauS0-orNRry8lfpZHQt_ISF2W-XSARUvCG1SqTXi41-o53DsWfZhqe9dQk6DGDnvFzXFsaEbaxAPjTfYc491sHCpOjf4W98quBuzDZCRtdCsr9u3A0AnX8Lh1Jquvn83nrHN2ZeefpLyKc-xGGp50Oy6EnJgSK4PcAAV631nwYV9DfVaLb3SIWDrJIIuBjFjBBCXBcnGJBieErlnF-4gumHzsro_QqF-s7aq_3EJChAhfslFvczNSyDc-LXJVkpDuZW3TaYKlHwhoFxz1aMuYRFQ8xy5Pz8FDNKQ",
34
+ token: "eyJraWQiOiJEV3owZnNieXg2MXNFcVduN3RCXC81bVhod3ZNbFZIOTgwUnZcL3RjT0lKdEk9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJmNGRiODI2My1jYjA1LTQzMTItOWU0NS1lM2RlY2E2NjllNzIiLCJjb2duaXRvOmdyb3VwcyI6WyJjb2xhYm9yYWRvcmVzX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfbFN6UVo0WjdSIiwiY29nbml0bzp1c2VybmFtZSI6ImY0ZGI4MjYzLWNiMDUtNDMxMi05ZTQ1LWUzZGVjYTY2OWU3MiIsImF1ZCI6IjUyZDlza2tkY2c4cWpwODhvb2sxdXNlNm1rIiwiZXZlbnRfaWQiOiIyMTlmNjg1OS0zOGRkLTQwYzEtYmNhMC00OWQ1YjMwMTQxMTgiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTcxODIxMzQyOCwibmFtZSI6IkNvbGFib3JhZG9yIiwicGhvbmVfbnVtYmVyIjoiKzUyMTExMSIsImV4cCI6MTcxODIxNzAyNywiaWF0IjoxNzE4MjEzNDI4LCJlbWFpbCI6ImVtb250YW5vQGNvbnRlbnRvaC5jb20ifQ.TQfkHTvvjC0VUfoQexjuvlVixeb_J3ZP8uzGFgdDur8m3v0Wad32fUM3eOsTzrsXp_c0HJHHuT_7x9h27pCyLoeTmi5j_y9Rfyu4RXj9xEejE3_Ge7LXupdvYuo3-kI577vcQjrHjYShjLZ0RFNDQVxbrBLS19qRXYj7DJXM0tenLG4v5wLNZyhdmW5OdnIYjA8VfDCxV_fO2v9pFie0DUbmgGGnpzqHBVJfhbBVOrjq2PGmx4HvTy5Ne8b4pyio3Gs5LSYA7ZMTvVMaZWKTFfgNM69tY4NNCZVAfe56EL5DzOBhCtLGXljVqTrEIkd1bPHX_CmM2nGkzhbTwYtstg",
35
35
  productSelected: {
36
- orderId: 15190,
37
- status: "RA",
38
- datasheet_status: "NS",
39
- prio: "none",
40
- version: 3,
41
- description_status: "NS",
42
- images_status: "RA",
43
- brand: null,
44
- retailerOrder: 0,
45
- missing: {
46
- datasheet: null,
47
- descriptions: null,
48
- images: null
49
- },
50
36
  services: {
51
- datasheets: 0,
52
- descriptions: 0,
37
+ datasheets: 1,
38
+ descriptions: 1,
53
39
  images: 1
54
40
  },
41
+ orderId: 7961,
42
+ status: "RP",
43
+ datasheet_status: "AA",
44
+ prio: "none",
45
+ version: 3,
46
+ description_status: "RP",
47
+ images_status: "AA",
48
+ statusByRetailer: {
49
+ "58": {
50
+ datasheet: "AA",
51
+ description: "RP",
52
+ images: "AA"
53
+ }
54
+ },
55
55
  article: {
56
- category: "Abarrotes Básicos|Abarrotes Básicos y Procesados|Abarrotes Básicos y Procesados",
57
- company_name: "GRUPO BRAHMA",
56
+ id_article: 126855,
57
+ id_category: "3066",
58
+ name: "ORGANIZADOR 3 CUBOS ITALIA 92 X 33 X 30 CM",
59
+ upc: "217141",
60
+ timestamp: "2024-05-17T18:52:34.000Z",
61
+ id_user: 1636,
62
+ status: null,
63
+ active: 1,
64
+ company_id: 315,
65
+ company_name: "MADERAS Y DISEÑOS DEL NORTE S.A. DE C.V.",
58
66
  country: "México",
59
- id_category: "4004",
60
- id_datasheet_especialist: null,
67
+ id_order: 7961,
68
+ id_datasheet_especialist: 2757,
61
69
  id_datasheet_facilitator: null,
62
- id_description_especialist: null,
70
+ id_description_especialist: 2757,
63
71
  id_description_facilitator: null,
64
- id_images_especialist: 55,
65
- id_images_facilitator: 53,
66
- id_order: 15190,
67
- id_article: 39364,
68
- id_auditor: 37,
69
- name: "test 2 img ba",
70
- timestamp: "2023-05-05T02:56:16.000Z",
71
- upc: "4353242"
72
+ id_images_especialist: 1251,
73
+ id_images_facilitator: null,
74
+ id_auditor: 514,
75
+ id_recepcionist: null,
76
+ category: "Muebles|Muebles para Oficina y Gamer|Libreros",
77
+ missingAttributes: 0,
78
+ missingDescriptions: 0,
79
+ missingImages: 0
72
80
  },
73
81
  retailers: [{
74
- id: 70,
75
- name: "Bodega Aurrera"
82
+ id: 58,
83
+ name: "The Home Depot Golden"
76
84
  }],
77
- statusByRetailer: {
78
- 70: {
79
- images: "RA/AC"
80
- }
81
- }
82
- },
83
- location: {
84
- product: {
85
- articleId: 39364,
86
- versionId: 3
87
- },
88
- state: {
89
- withChat: true,
90
- chatType: "product_status"
91
- }
85
+ country: "México",
86
+ upc: "217141"
92
87
  },
88
+ // location: {
89
+ // product: { articleId: 126855, versionId: 3 },
90
+ // state: {
91
+ // withChat: true,
92
+ // chatType: "product_status",
93
+ // },
94
+ // },
93
95
  user: {
94
- id_user: 37,
95
- name: "José",
96
- last_name: "Castañeda",
97
- email: "ismael97lopez@gmail.com",
98
- position: "Auditor",
99
- telephone: "",
100
- country: "México",
96
+ id_user: 1973,
97
+ name: "Estefany",
98
+ last_name: "Montaño",
99
+ email: "emontano@contentoh.com",
100
+ position: "Front-End Developer",
101
+ telephone: null,
102
+ country: null,
101
103
  id_company: 254,
102
- id_cognito: "9a213128-6482-4c16-a4b6-6e64f225b1bd",
103
- birth_Date: null,
104
- about_me: "",
105
- zip_code: "",
106
- address: "",
107
- job: "",
108
- id_stripe: "",
109
- id_role: 6,
104
+ id_cognito: "f4db8263-cb05-4312-9e45-e3deca669e72",
105
+ birth_Date: "1999-10-06T00:00:00.000Z",
106
+ about_me: null,
107
+ zip_code: null,
108
+ address: null,
109
+ job: null,
110
+ id_stripe: null,
111
+ id_role: 1,
110
112
  active: 1,
111
113
  is_retailer: 0,
112
114
  email_notify: 1,
113
- is_user_tech: null,
115
+ is_user_tech: "ADMIN-AS",
116
+ is_onboarding: 0,
114
117
  membership: {
115
- id: 137,
116
- start_date: "2023-10-04T15:46:14.000Z",
117
- end_date: "2024-10-04T08:46:09.000Z",
118
- planID: 8,
119
- plan: "prod_KtlhECVSFG2iro",
120
- name: "Plan Pro",
121
- user_limit: "50",
122
- products_limit: "5000",
118
+ id: 750,
119
+ start_date: "2022-01-07T21:32:54.000Z",
120
+ end_date: "2023-01-07T21:32:54.000Z",
121
+ planID: 6,
122
+ plan: "prod_KvGd6YSTJyR3AP",
123
+ name: "Plan Small",
124
+ user_limit: "10",
125
+ products_limit: "1000",
123
126
  type: "Enterprise"
124
127
  },
125
- src: "https://content-management-profile.s3.amazonaws.com/id-37/37.png?1701902088068"
128
+ src: "https://content-management-profile-prod.s3.amazonaws.com/id-1973/1973.png?1718213428633"
126
129
  }
127
130
  };
@@ -37,6 +37,8 @@ var _GalleryElement = require("../../molecules/GalleryElement");
37
37
 
38
38
  var _fileSaver = require("file-saver");
39
39
 
40
+ var _Commentary = require("../../atoms/Commentary");
41
+
40
42
  var _data2 = require("../../../global-files/data");
41
43
 
42
44
  var _GalleryHeader = require("../../molecules/GalleryHeader");
@@ -179,7 +181,7 @@ var reducerImages = function reducerImages(state, action) {
179
181
  while (1) {
180
182
  switch (_context.prev = _context.next) {
181
183
  case 0:
182
- videoSrc = 'data:video/mp4;base64,' + base64.split(',')[1]; // Añade el tipo MIME adecuado
184
+ videoSrc = "data:video/mp4;base64," + base64.split(",")[1]; // Añade el tipo MIME adecuado
183
185
 
184
186
  _context.next = 3;
185
187
  return (0, _generateThumnail.default)(videoSrc, 2);
@@ -199,7 +201,7 @@ var reducerImages = function reducerImages(state, action) {
199
201
  return _ref2.apply(this, arguments);
200
202
  };
201
203
  }()).catch(function (error) {
202
- console.error('Error:', error);
204
+ console.error("Error:", error);
203
205
  });
204
206
  }
205
207
 
@@ -243,8 +245,8 @@ var REGION = "us-east-1";
243
245
  function convertirVideoABase64(url) {
244
246
  return new Promise(function (resolve, reject) {
245
247
  var xhr = new XMLHttpRequest();
246
- xhr.open('GET', url, true);
247
- xhr.responseType = 'blob';
248
+ xhr.open("GET", url, true);
249
+ xhr.responseType = "blob";
248
250
 
249
251
  xhr.onload = function () {
250
252
  if (xhr.status === 200) {
@@ -257,12 +259,12 @@ function convertirVideoABase64(url) {
257
259
 
258
260
  reader.readAsDataURL(blob);
259
261
  } else {
260
- reject(new Error('Error al cargar el video'));
262
+ reject(new Error("Error al cargar el video"));
261
263
  }
262
264
  };
263
265
 
264
266
  xhr.onerror = function () {
265
- reject(new Error('Error de red al cargar el video'));
267
+ reject(new Error("Error de red al cargar el video"));
266
268
  };
267
269
 
268
270
  xhr.send();
@@ -271,12 +273,12 @@ function convertirVideoABase64(url) {
271
273
 
272
274
  function obtenerDuracionVideoBase64(base64Data) {
273
275
  return new Promise(function (resolve, reject) {
274
- var video = document.createElement('video');
276
+ var video = document.createElement("video");
275
277
  video.src = base64Data;
276
- video.addEventListener('loadedmetadata', function () {
278
+ video.addEventListener("loadedmetadata", function () {
277
279
  resolve(video.duration);
278
280
  });
279
- video.addEventListener('error', reject);
281
+ video.addEventListener("error", reject);
280
282
  });
281
283
  }
282
284
 
@@ -293,7 +295,7 @@ var myBucket = new _awsSdk.default.S3({
293
295
  });
294
296
 
295
297
  var RetailerProductEdition = function RetailerProductEdition(_ref3) {
296
- var _product$retailers, _location$state, _location$state2, _product$services2, _datasheets$, _datasheets$$data, _product$article17;
298
+ var _product$retailers, _location$state, _location$state2, _product$services2, _datasheets$, _datasheets$$data, _product$article17, _comment$message;
297
299
 
298
300
  var tabsSections = _ref3.tabsSections,
299
301
  _ref3$productSelected = _ref3.productSelected,
@@ -2341,15 +2343,57 @@ var RetailerProductEdition = function RetailerProductEdition(_ref3) {
2341
2343
  headerType: "input-name-header"
2342
2344
  }))]
2343
2345
  })
2344
- }), (userAssigned(activeTab) || auditorAssigned()) && product["".concat(getConcept(activeTab), "_status")] !== "NS" && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
2346
+ }), (userAssigned(activeTab) || auditorAssigned()) && product["".concat(getConcept(activeTab), "_status")] !== "NS" && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2345
2347
  className: "commentary-box",
2346
- children: [7, 8].includes(user.id_role) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GeneralButton.Button, {
2348
+ children: [!comment ? /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2349
+ className: "commentary",
2350
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_index.TagAndInput, {
2351
+ label: "Caja de Comentario",
2352
+ inputType: "textarea",
2353
+ inputCols: 80,
2354
+ inputRows: 4,
2355
+ inputId: "commentary-box",
2356
+ index: 0
2357
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
2358
+ className: "buttons-box",
2359
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_GeneralButton.Button, {
2360
+ buttonType: "general-transparent-button",
2361
+ label: "Enviar comentario",
2362
+ onClick: function onClick(e) {
2363
+ return createComment(e, document.querySelector("#commentary-box .ql-container .ql-editor > p").innerHTML, activeTab);
2364
+ }
2365
+ })
2366
+ })]
2367
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
2368
+ className: "feedback-box",
2369
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Commentary.Commentary, {
2370
+ comment: comment === null || comment === void 0 ? void 0 : (_comment$message = comment.message) === null || _comment$message === void 0 ? void 0 : _comment$message.replace(/<.*?\/?>/gm, ""),
2371
+ reviewed: crossComment
2372
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GeneralButton.Button, {
2373
+ buttonType: "circular-button accept-button",
2374
+ onClick: /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21() {
2375
+ return _regenerator.default.wrap(function _callee21$(_context21) {
2376
+ while (1) {
2377
+ switch (_context21.prev = _context21.next) {
2378
+ case 0:
2379
+ setCrossComment(true);
2380
+ commentRevised();
2381
+
2382
+ case 2:
2383
+ case "end":
2384
+ return _context21.stop();
2385
+ }
2386
+ }
2387
+ }, _callee21);
2388
+ }))
2389
+ })]
2390
+ }), [7, 8].includes(user.id_role) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GeneralButton.Button, {
2347
2391
  buttonType: evaluationFinished(user.id_role, activeTab, statusArray) && requiredNull[activeTab] === 0 ? "general-green-button" : "general-button-disabled",
2348
2392
  label: "Enviar evaluación",
2349
2393
  onClick: function onClick() {
2350
2394
  return sendToFacilitator();
2351
2395
  }
2352
- })
2396
+ })]
2353
2397
  })]
2354
2398
  })]
2355
2399
  }), showModal && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ProductImageModal.ProductImageModal, {
@@ -2398,18 +2442,18 @@ var RetailerProductEdition = function RetailerProductEdition(_ref3) {
2398
2442
  type: "pink",
2399
2443
  label: "Aceptar",
2400
2444
  size: 12,
2401
- onClick: /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21() {
2445
+ onClick: /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22() {
2402
2446
  var body, messages;
2403
- return _regenerator.default.wrap(function _callee21$(_context21) {
2447
+ return _regenerator.default.wrap(function _callee22$(_context22) {
2404
2448
  while (1) {
2405
- switch (_context21.prev = _context21.next) {
2449
+ switch (_context22.prev = _context22.next) {
2406
2450
  case 0:
2407
2451
  body = document.querySelector("#modal-message-box .ql-container .ql-editor > p").innerHTML;
2408
2452
  messages = [{
2409
2453
  type: "message",
2410
2454
  value: body === null || body === void 0 ? void 0 : body.replace(/<.*?\/?>/gm, "")
2411
2455
  }];
2412
- _context21.next = 4;
2456
+ _context22.next = 4;
2413
2457
  return createComment(messages, activeRetailer.id);
2414
2458
 
2415
2459
  case 4:
@@ -2419,10 +2463,10 @@ var RetailerProductEdition = function RetailerProductEdition(_ref3) {
2419
2463
 
2420
2464
  case 7:
2421
2465
  case "end":
2422
- return _context21.stop();
2466
+ return _context22.stop();
2423
2467
  }
2424
2468
  }
2425
- }, _callee21);
2469
+ }, _callee22);
2426
2470
  }))
2427
2471
  }, "btn-Aceptar")]
2428
2472
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Modal.Modal, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "contentoh-components-library",
3
- "version": "21.5.19",
3
+ "version": "21.5.21",
4
4
  "dependencies": {
5
5
  "@aws-amplify/auth": "^4.5.3",
6
6
  "@aws-amplify/datastore": "^3.11.0",
@@ -9,7 +9,7 @@ const Template = (args) => <UserSelector {...args} />;
9
9
  export const UserSelectorDefault = Template.bind({});
10
10
  UserSelectorDefault.args = {
11
11
  searchLabel: "Buscar auditor",
12
- index: "auditor",
12
+ index: "datasheet",
13
13
  usersArray: [
14
14
  {
15
15
  name: "José",
@@ -16,6 +16,7 @@ export const UserSelector = ({
16
16
  assignationTarget,
17
17
  target,
18
18
  concept,
19
+ index,
19
20
  }) => {
20
21
  const [text, setText] = useState([]);
21
22
  const [userFiltered, setUsersFiltered] = useState([]);
@@ -56,12 +57,17 @@ export const UserSelector = ({
56
57
  key={user.id_user + "-" + i}
57
58
  className="user-item"
58
59
  onClick={() => {
60
+ console.log("onAss",product,
61
+ user.id_user," ",
62
+ assignationTarget," ",
63
+ target,
64
+ index)
59
65
  onAssign(
60
66
  product,
61
67
  user.id_user,
62
68
  assignationTarget,
63
69
  target,
64
- concept
70
+ index
65
71
  );
66
72
  }}
67
73
  >
@@ -9,6 +9,7 @@ export const Container = styled.div`
9
9
  .row-container {
10
10
  display: flex;
11
11
  cursor: pointer;
12
+ align-items: center;
12
13
  &:hover {
13
14
  background-color: #fafafa;
14
15
  }