mrs-toolbox-cli 0.0.73 → 0.0.75

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 (51) hide show
  1. package/88b0986a7186d029-atomicfu-js-ir.js +2 -2
  2. package/88b0986a7186d029-atomicfu-js-ir.js.hash +1 -1
  3. package/clikt-clikt-js-ir.js +1016 -1016
  4. package/clikt-clikt-js-ir.js.hash +1 -1
  5. package/com.mrs.platform.configuration.dto.js +62 -56
  6. package/com.mrs.platform.configuration.dto.js.hash +1 -1
  7. package/com.mrs.platform.configuration.dto.js.map +1 -1
  8. package/com.mrs.platform.configuration.dto.js.map.hash +1 -1
  9. package/kotlin-kotlin-stdlib-js-ir.js +157 -156
  10. package/kotlin-kotlin-stdlib-js-ir.js.hash +1 -1
  11. package/kotlin-kotlin-stdlib-js-ir.js.map +1 -1
  12. package/kotlin-kotlin-stdlib-js-ir.js.map.hash +1 -1
  13. package/kotlin-logging-js-ir.js +58 -43
  14. package/kotlin-logging-js-ir.js.hash +1 -1
  15. package/kotlin-logging-js-ir.js.map +1 -1
  16. package/kotlin-logging-js-ir.js.map.hash +1 -1
  17. package/kotlinx-serialization-kotlinx-serialization-core-js-ir.js +27 -27
  18. package/kotlinx-serialization-kotlinx-serialization-core-js-ir.js.hash +1 -1
  19. package/kotlinx-serialization-kotlinx-serialization-json-js-ir.js +28 -28
  20. package/kotlinx-serialization-kotlinx-serialization-json-js-ir.js.hash +1 -1
  21. package/kotlinx.coroutines-kotlinx-coroutines-core-js-ir.js +18 -18
  22. package/kotlinx.coroutines-kotlinx-coroutines-core-js-ir.js.hash +1 -1
  23. package/ktor-ktor-client-content-negotiation.js +6 -6
  24. package/ktor-ktor-client-content-negotiation.js.hash +1 -1
  25. package/ktor-ktor-client-core.js +17 -17
  26. package/ktor-ktor-client-core.js.hash +1 -1
  27. package/ktor-ktor-events.js +3 -3
  28. package/ktor-ktor-events.js.hash +1 -1
  29. package/ktor-ktor-http.js +19 -19
  30. package/ktor-ktor-http.js.hash +1 -1
  31. package/ktor-ktor-io.js +8 -8
  32. package/ktor-ktor-io.js.hash +1 -1
  33. package/ktor-ktor-serialization-kotlinx-json.js +1 -1
  34. package/ktor-ktor-serialization-kotlinx-json.js.hash +1 -1
  35. package/ktor-ktor-serialization-kotlinx.js +2 -2
  36. package/ktor-ktor-serialization-kotlinx.js.hash +1 -1
  37. package/ktor-ktor-serialization.js +4 -4
  38. package/ktor-ktor-serialization.js.hash +1 -1
  39. package/ktor-ktor-utils.js +11 -11
  40. package/ktor-ktor-utils.js.hash +1 -1
  41. package/ktor-ktor-websockets.js +4 -4
  42. package/ktor-ktor-websockets.js.hash +1 -1
  43. package/mrs-toolbox-cli.d.ts +7 -3
  44. package/mrs-toolbox-cli.d.ts.hash +1 -1
  45. package/mrs-toolbox-cli.js +68 -68
  46. package/mrs-toolbox-cli.js.hash +1 -1
  47. package/package.json +1 -1
  48. package/toolbox.js +2879 -2408
  49. package/toolbox.js.hash +1 -1
  50. package/toolbox.js.map +1 -1
  51. package/toolbox.js.map.hash +1 -1
@@ -1 +1 @@
1
- 15effafc0b15947c46931af71fd50ee0
1
+ 381a1d60643a89a7c213cded89359a68
@@ -43,6 +43,12 @@ if (typeof Math.clz32 === 'undefined') {
43
43
  };
44
44
  }(Math.log, Math.LN2);
45
45
  }
46
+ if (typeof String.prototype.startsWith === 'undefined') {
47
+ Object.defineProperty(String.prototype, 'startsWith', {value: function (searchString, position) {
48
+ position = position || 0;
49
+ return this.lastIndexOf(searchString, position) === position;
50
+ }});
51
+ }
46
52
  if (typeof String.prototype.endsWith === 'undefined') {
47
53
  Object.defineProperty(String.prototype, 'endsWith', {value: function (searchString, position) {
48
54
  var subjectString = this.toString();
@@ -54,12 +60,6 @@ if (typeof String.prototype.endsWith === 'undefined') {
54
60
  return lastIndex !== -1 && lastIndex === position;
55
61
  }});
56
62
  }
57
- if (typeof String.prototype.startsWith === 'undefined') {
58
- Object.defineProperty(String.prototype, 'startsWith', {value: function (searchString, position) {
59
- position = position || 0;
60
- return this.lastIndexOf(searchString, position) === position;
61
- }});
62
- }
63
63
  if (typeof Math.imul === 'undefined') {
64
64
  Math.imul = function imul(a, b) {
65
65
  return (a & 4.29490176E9) * (b & 65535) + (a & 65535) * (b | 0) | 0;
@@ -749,6 +749,11 @@ if (typeof Math.imul === 'undefined') {
749
749
  }
750
750
  return result;
751
751
  }
752
+ function first(_this__u8e3s4) {
753
+ if (_this__u8e3s4.l())
754
+ throw NoSuchElementException_init_$Create$_0('List is empty.');
755
+ return _this__u8e3s4.k(0);
756
+ }
752
757
  function toList_0(_this__u8e3s4) {
753
758
  if (isInterface(_this__u8e3s4, Collection)) {
754
759
  var tmp0_subject = _this__u8e3s4.i();
@@ -881,11 +886,6 @@ if (typeof Math.imul === 'undefined') {
881
886
  }
882
887
  return -1;
883
888
  }
884
- function first(_this__u8e3s4) {
885
- if (_this__u8e3s4.l())
886
- throw NoSuchElementException_init_$Create$_0('List is empty.');
887
- return _this__u8e3s4.k(0);
888
- }
889
889
  function dropLast(_this__u8e3s4, n) {
890
890
  // Inline function 'kotlin.require' call
891
891
  var tmp0_require = n >= 0;
@@ -5048,6 +5048,42 @@ if (typeof Math.imul === 'undefined') {
5048
5048
  return tmp;
5049
5049
  }
5050
5050
  function substringBefore(_this__u8e3s4, delimiter, missingDelimiterValue) {
5051
+ missingDelimiterValue = missingDelimiterValue === VOID ? _this__u8e3s4 : missingDelimiterValue;
5052
+ var index = indexOf_7(_this__u8e3s4, delimiter);
5053
+ var tmp;
5054
+ if (index === -1) {
5055
+ tmp = missingDelimiterValue;
5056
+ } else {
5057
+ var tmp$ret$1;
5058
+ // Inline function 'kotlin.text.substring' call
5059
+ var tmp$ret$0;
5060
+ // Inline function 'kotlin.js.asDynamic' call
5061
+ tmp$ret$0 = _this__u8e3s4;
5062
+ tmp$ret$1 = tmp$ret$0.substring(0, index);
5063
+ tmp = tmp$ret$1;
5064
+ }
5065
+ return tmp;
5066
+ }
5067
+ function substringAfterLast(_this__u8e3s4, delimiter, missingDelimiterValue) {
5068
+ missingDelimiterValue = missingDelimiterValue === VOID ? _this__u8e3s4 : missingDelimiterValue;
5069
+ var index = lastIndexOf(_this__u8e3s4, delimiter);
5070
+ var tmp;
5071
+ if (index === -1) {
5072
+ tmp = missingDelimiterValue;
5073
+ } else {
5074
+ var tmp$ret$1;
5075
+ // Inline function 'kotlin.text.substring' call
5076
+ var tmp0_substring = index + delimiter.length | 0;
5077
+ var tmp1_substring = _this__u8e3s4.length;
5078
+ var tmp$ret$0;
5079
+ // Inline function 'kotlin.js.asDynamic' call
5080
+ tmp$ret$0 = _this__u8e3s4;
5081
+ tmp$ret$1 = tmp$ret$0.substring(tmp0_substring, tmp1_substring);
5082
+ tmp = tmp$ret$1;
5083
+ }
5084
+ return tmp;
5085
+ }
5086
+ function substringBefore_0(_this__u8e3s4, delimiter, missingDelimiterValue) {
5051
5087
  missingDelimiterValue = missingDelimiterValue === VOID ? _this__u8e3s4 : missingDelimiterValue;
5052
5088
  var index = indexOf_6(_this__u8e3s4, delimiter);
5053
5089
  var tmp;
@@ -5064,6 +5100,9 @@ if (typeof Math.imul === 'undefined') {
5064
5100
  }
5065
5101
  return tmp;
5066
5102
  }
5103
+ function lines(_this__u8e3s4) {
5104
+ return toList_2(lineSequence(_this__u8e3s4));
5105
+ }
5067
5106
  function indexOfAny(_this__u8e3s4, chars, startIndex, ignoreCase) {
5068
5107
  startIndex = startIndex === VOID ? 0 : startIndex;
5069
5108
  ignoreCase = ignoreCase === VOID ? false : ignoreCase;
@@ -5277,6 +5316,30 @@ if (typeof Math.imul === 'undefined') {
5277
5316
  requireNonNegativeLimit(limit);
5278
5317
  return new DelimitedRangesSequence(_this__u8e3s4, startIndex, limit, rangesDelimitedBy$lambda_0(delimiters, ignoreCase));
5279
5318
  }
5319
+ function lastIndexOf(_this__u8e3s4, string, startIndex, ignoreCase) {
5320
+ startIndex = startIndex === VOID ? get_lastIndex_3(_this__u8e3s4) : startIndex;
5321
+ ignoreCase = ignoreCase === VOID ? false : ignoreCase;
5322
+ var tmp;
5323
+ var tmp_0;
5324
+ if (ignoreCase) {
5325
+ tmp_0 = true;
5326
+ } else {
5327
+ tmp_0 = !(typeof _this__u8e3s4 === 'string');
5328
+ }
5329
+ if (tmp_0) {
5330
+ tmp = indexOf_8(_this__u8e3s4, string, startIndex, 0, ignoreCase, true);
5331
+ } else {
5332
+ var tmp$ret$1;
5333
+ // Inline function 'kotlin.text.nativeLastIndexOf' call
5334
+ var tmp0_nativeLastIndexOf = _this__u8e3s4;
5335
+ var tmp$ret$0;
5336
+ // Inline function 'kotlin.js.asDynamic' call
5337
+ tmp$ret$0 = tmp0_nativeLastIndexOf;
5338
+ tmp$ret$1 = tmp$ret$0.lastIndexOf(string, startIndex);
5339
+ tmp = tmp$ret$1;
5340
+ }
5341
+ return tmp;
5342
+ }
5280
5343
  function regionMatchesImpl(_this__u8e3s4, thisOffset, other, otherOffset, length, ignoreCase) {
5281
5344
  if (((otherOffset < 0 ? true : thisOffset < 0) ? true : thisOffset > (charSequenceLength(_this__u8e3s4) - length | 0)) ? true : otherOffset > (charSequenceLength(other) - length | 0)) {
5282
5345
  return false;
@@ -5447,30 +5510,6 @@ if (typeof Math.imul === 'undefined') {
5447
5510
  }
5448
5511
  return null;
5449
5512
  }
5450
- function lastIndexOf(_this__u8e3s4, string, startIndex, ignoreCase) {
5451
- startIndex = startIndex === VOID ? get_lastIndex_3(_this__u8e3s4) : startIndex;
5452
- ignoreCase = ignoreCase === VOID ? false : ignoreCase;
5453
- var tmp;
5454
- var tmp_0;
5455
- if (ignoreCase) {
5456
- tmp_0 = true;
5457
- } else {
5458
- tmp_0 = !(typeof _this__u8e3s4 === 'string');
5459
- }
5460
- if (tmp_0) {
5461
- tmp = indexOf_8(_this__u8e3s4, string, startIndex, 0, ignoreCase, true);
5462
- } else {
5463
- var tmp$ret$1;
5464
- // Inline function 'kotlin.text.nativeLastIndexOf' call
5465
- var tmp0_nativeLastIndexOf = _this__u8e3s4;
5466
- var tmp$ret$0;
5467
- // Inline function 'kotlin.js.asDynamic' call
5468
- tmp$ret$0 = tmp0_nativeLastIndexOf;
5469
- tmp$ret$1 = tmp$ret$0.lastIndexOf(string, startIndex);
5470
- tmp = tmp$ret$1;
5471
- }
5472
- return tmp;
5473
- }
5474
5513
  function startsWith_0(_this__u8e3s4, char, ignoreCase) {
5475
5514
  ignoreCase = ignoreCase === VOID ? false : ignoreCase;
5476
5515
  return charSequenceLength(_this__u8e3s4) > 0 ? equals(charSequenceGet(_this__u8e3s4, 0), char, ignoreCase) : false;
@@ -5537,9 +5576,6 @@ if (typeof Math.imul === 'undefined') {
5537
5576
  function get_indices_2(_this__u8e3s4) {
5538
5577
  return numberRangeToNumber(0, charSequenceLength(_this__u8e3s4) - 1 | 0);
5539
5578
  }
5540
- function lines(_this__u8e3s4) {
5541
- return toList_2(lineSequence(_this__u8e3s4));
5542
- }
5543
5579
  function padStart(_this__u8e3s4, length, padChar) {
5544
5580
  padChar = padChar === VOID ? _Char___init__impl__6a9atx(32) : padChar;
5545
5581
  return toString_2(padStart_0(isCharSequence(_this__u8e3s4) ? _this__u8e3s4 : THROW_CCE(), length, padChar));
@@ -5574,42 +5610,6 @@ if (typeof Math.imul === 'undefined') {
5574
5610
  tmp$ret$1 = tmp$ret$0.substring(tmp0_substring, tmp1_substring);
5575
5611
  return tmp$ret$1;
5576
5612
  }
5577
- function substringBefore_0(_this__u8e3s4, delimiter, missingDelimiterValue) {
5578
- missingDelimiterValue = missingDelimiterValue === VOID ? _this__u8e3s4 : missingDelimiterValue;
5579
- var index = indexOf_7(_this__u8e3s4, delimiter);
5580
- var tmp;
5581
- if (index === -1) {
5582
- tmp = missingDelimiterValue;
5583
- } else {
5584
- var tmp$ret$1;
5585
- // Inline function 'kotlin.text.substring' call
5586
- var tmp$ret$0;
5587
- // Inline function 'kotlin.js.asDynamic' call
5588
- tmp$ret$0 = _this__u8e3s4;
5589
- tmp$ret$1 = tmp$ret$0.substring(0, index);
5590
- tmp = tmp$ret$1;
5591
- }
5592
- return tmp;
5593
- }
5594
- function substringAfterLast(_this__u8e3s4, delimiter, missingDelimiterValue) {
5595
- missingDelimiterValue = missingDelimiterValue === VOID ? _this__u8e3s4 : missingDelimiterValue;
5596
- var index = lastIndexOf(_this__u8e3s4, delimiter);
5597
- var tmp;
5598
- if (index === -1) {
5599
- tmp = missingDelimiterValue;
5600
- } else {
5601
- var tmp$ret$1;
5602
- // Inline function 'kotlin.text.substring' call
5603
- var tmp0_substring = index + delimiter.length | 0;
5604
- var tmp1_substring = _this__u8e3s4.length;
5605
- var tmp$ret$0;
5606
- // Inline function 'kotlin.js.asDynamic' call
5607
- tmp$ret$0 = _this__u8e3s4;
5608
- tmp$ret$1 = tmp$ret$0.substring(tmp0_substring, tmp1_substring);
5609
- tmp = tmp$ret$1;
5610
- }
5611
- return tmp;
5612
- }
5613
5613
  function trimEnd_0(_this__u8e3s4) {
5614
5614
  var tmp$ret$0;
5615
5615
  $l$block: {
@@ -15700,89 +15700,90 @@ if (typeof Math.imul === 'undefined') {
15700
15700
  _.$_$.nc = get_lastIndex_3;
15701
15701
  _.$_$.oc = lastIndexOf;
15702
15702
  _.$_$.pc = last_0;
15703
- _.$_$.qc = prependIndent;
15704
- _.$_$.rc = removePrefix;
15705
- _.$_$.sc = removeSuffix;
15706
- _.$_$.tc = repeat;
15707
- _.$_$.uc = replaceIndent;
15708
- _.$_$.vc = replace;
15709
- _.$_$.wc = replace_0;
15710
- _.$_$.xc = single_2;
15711
- _.$_$.yc = slice_0;
15712
- _.$_$.zc = split_0;
15713
- _.$_$.ad = split;
15714
- _.$_$.bd = startsWith_1;
15715
- _.$_$.cd = startsWith_2;
15716
- _.$_$.dd = startsWith_0;
15717
- _.$_$.ed = substringAfterLast;
15718
- _.$_$.fd = substringBefore_0;
15703
+ _.$_$.qc = lines;
15704
+ _.$_$.rc = prependIndent;
15705
+ _.$_$.sc = removePrefix;
15706
+ _.$_$.tc = removeSuffix;
15707
+ _.$_$.uc = repeat;
15708
+ _.$_$.vc = replaceIndent;
15709
+ _.$_$.wc = replace;
15710
+ _.$_$.xc = replace_0;
15711
+ _.$_$.yc = single_2;
15712
+ _.$_$.zc = slice_0;
15713
+ _.$_$.ad = split_0;
15714
+ _.$_$.bd = split;
15715
+ _.$_$.cd = startsWith_1;
15716
+ _.$_$.dd = startsWith_2;
15717
+ _.$_$.ed = startsWith_0;
15718
+ _.$_$.fd = substringAfterLast;
15719
15719
  _.$_$.gd = substringBefore;
15720
- _.$_$.hd = take_1;
15721
- _.$_$.id = titlecase;
15722
- _.$_$.jd = toDoubleOrNull;
15723
- _.$_$.kd = toDouble;
15724
- _.$_$.ld = toIntOrNull;
15725
- _.$_$.md = toInt;
15726
- _.$_$.nd = toLongOrNull;
15727
- _.$_$.od = toLong;
15728
- _.$_$.pd = toUByte;
15729
- _.$_$.qd = toUInt;
15730
- _.$_$.rd = toULongOrNull;
15731
- _.$_$.sd = toULong;
15732
- _.$_$.td = toUShort;
15733
- _.$_$.ud = trimEnd_0;
15734
- _.$_$.vd = trimIndent;
15735
- _.$_$.wd = trimMargin;
15736
- _.$_$.xd = trimStart;
15737
- _.$_$.yd = trim;
15738
- _.$_$.zd = Duration;
15739
- _.$_$.ae = Char;
15740
- _.$_$.be = ClassCastException;
15741
- _.$_$.ce = Comparable;
15742
- _.$_$.de = DeepRecursiveFunction;
15743
- _.$_$.ee = DeepRecursiveScope;
15744
- _.$_$.fe = Enum;
15745
- _.$_$.ge = Error_0;
15746
- _.$_$.he = Exception;
15747
- _.$_$.ie = IllegalArgumentException;
15748
- _.$_$.je = IllegalStateException;
15749
- _.$_$.ke = Long;
15750
- _.$_$.le = NoSuchElementException;
15751
- _.$_$.me = NullPointerException;
15752
- _.$_$.ne = Pair;
15753
- _.$_$.oe = Result;
15754
- _.$_$.pe = RuntimeException;
15755
- _.$_$.qe = THROW_CCE;
15756
- _.$_$.re = THROW_ISE;
15757
- _.$_$.se = Triple;
15758
- _.$_$.te = UByteArray;
15759
- _.$_$.ue = UByte;
15760
- _.$_$.ve = UIntArray;
15761
- _.$_$.we = UInt;
15762
- _.$_$.xe = ULongArray;
15763
- _.$_$.ye = ULong;
15764
- _.$_$.ze = UShortArray;
15765
- _.$_$.af = UShort;
15766
- _.$_$.bf = Unit;
15767
- _.$_$.cf = UnsupportedOperationException;
15768
- _.$_$.df = addSuppressed;
15769
- _.$_$.ef = arrayOf;
15770
- _.$_$.ff = countTrailingZeroBits;
15771
- _.$_$.gf = createFailure;
15772
- _.$_$.hf = ensureNotNull;
15773
- _.$_$.if = invoke;
15774
- _.$_$.jf = isFinite;
15775
- _.$_$.kf = isFinite_0;
15776
- _.$_$.lf = isNaN_0;
15777
- _.$_$.mf = lazy_0;
15778
- _.$_$.nf = lazy;
15779
- _.$_$.of = noWhenBranchMatchedException;
15780
- _.$_$.pf = plus_6;
15781
- _.$_$.qf = stackTraceToString;
15782
- _.$_$.rf = throwUninitializedPropertyAccessException;
15783
- _.$_$.sf = toString_1;
15784
- _.$_$.tf = to;
15785
- _.$_$.uf = VOID;
15720
+ _.$_$.hd = substringBefore_0;
15721
+ _.$_$.id = take_1;
15722
+ _.$_$.jd = titlecase;
15723
+ _.$_$.kd = toDoubleOrNull;
15724
+ _.$_$.ld = toDouble;
15725
+ _.$_$.md = toIntOrNull;
15726
+ _.$_$.nd = toInt;
15727
+ _.$_$.od = toLongOrNull;
15728
+ _.$_$.pd = toLong;
15729
+ _.$_$.qd = toUByte;
15730
+ _.$_$.rd = toUInt;
15731
+ _.$_$.sd = toULongOrNull;
15732
+ _.$_$.td = toULong;
15733
+ _.$_$.ud = toUShort;
15734
+ _.$_$.vd = trimEnd_0;
15735
+ _.$_$.wd = trimIndent;
15736
+ _.$_$.xd = trimMargin;
15737
+ _.$_$.yd = trimStart;
15738
+ _.$_$.zd = trim;
15739
+ _.$_$.ae = Duration;
15740
+ _.$_$.be = Char;
15741
+ _.$_$.ce = ClassCastException;
15742
+ _.$_$.de = Comparable;
15743
+ _.$_$.ee = DeepRecursiveFunction;
15744
+ _.$_$.fe = DeepRecursiveScope;
15745
+ _.$_$.ge = Enum;
15746
+ _.$_$.he = Error_0;
15747
+ _.$_$.ie = Exception;
15748
+ _.$_$.je = IllegalArgumentException;
15749
+ _.$_$.ke = IllegalStateException;
15750
+ _.$_$.le = Long;
15751
+ _.$_$.me = NoSuchElementException;
15752
+ _.$_$.ne = NullPointerException;
15753
+ _.$_$.oe = Pair;
15754
+ _.$_$.pe = Result;
15755
+ _.$_$.qe = RuntimeException;
15756
+ _.$_$.re = THROW_CCE;
15757
+ _.$_$.se = THROW_ISE;
15758
+ _.$_$.te = Triple;
15759
+ _.$_$.ue = UByteArray;
15760
+ _.$_$.ve = UByte;
15761
+ _.$_$.we = UIntArray;
15762
+ _.$_$.xe = UInt;
15763
+ _.$_$.ye = ULongArray;
15764
+ _.$_$.ze = ULong;
15765
+ _.$_$.af = UShortArray;
15766
+ _.$_$.bf = UShort;
15767
+ _.$_$.cf = Unit;
15768
+ _.$_$.df = UnsupportedOperationException;
15769
+ _.$_$.ef = addSuppressed;
15770
+ _.$_$.ff = arrayOf;
15771
+ _.$_$.gf = countTrailingZeroBits;
15772
+ _.$_$.hf = createFailure;
15773
+ _.$_$.if = ensureNotNull;
15774
+ _.$_$.jf = invoke;
15775
+ _.$_$.kf = isFinite;
15776
+ _.$_$.lf = isFinite_0;
15777
+ _.$_$.mf = isNaN_0;
15778
+ _.$_$.nf = lazy_0;
15779
+ _.$_$.of = lazy;
15780
+ _.$_$.pf = noWhenBranchMatchedException;
15781
+ _.$_$.qf = plus_6;
15782
+ _.$_$.rf = stackTraceToString;
15783
+ _.$_$.sf = throwUninitializedPropertyAccessException;
15784
+ _.$_$.tf = toString_1;
15785
+ _.$_$.uf = to;
15786
+ _.$_$.vf = VOID;
15786
15787
  //endregion
15787
15788
  return _;
15788
15789
  }(module.exports));
@@ -1 +1 @@
1
- f47601e0764363ac3cc1b6f201162b02
1
+ 818544ecf41e5dc4b18a71a18a7dd27b