@ezez/utils 4.6.0 → 4.7.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 (137) hide show
  1. package/.github/workflows/docs.yml +4 -3
  2. package/CHANGELOG.md +11 -0
  3. package/README.md +21 -6
  4. package/dist/assertProps.d.ts +6 -0
  5. package/dist/assertProps.d.ts.map +1 -0
  6. package/dist/assertProps.js +11 -0
  7. package/dist/assertProps.js.map +1 -0
  8. package/dist/hasProps.d.ts +3 -0
  9. package/dist/hasProps.d.ts.map +1 -0
  10. package/dist/hasProps.js +16 -0
  11. package/dist/hasProps.js.map +1 -0
  12. package/dist/index.d.ts +2 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +2 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/match.d.ts.map +1 -1
  17. package/dist/match.js.map +1 -1
  18. package/docs/assets/navigation.js +1 -1
  19. package/docs/assets/search.js +1 -1
  20. package/docs/documents/Changelog.html +93 -83
  21. package/docs/functions/index.assertProps.html +6 -0
  22. package/docs/functions/index.cap.html +2 -2
  23. package/docs/functions/index.capitalize.html +2 -2
  24. package/docs/functions/index.coalesce.html +2 -2
  25. package/docs/functions/index.compareArrays.html +2 -2
  26. package/docs/functions/index.compareProps.html +2 -2
  27. package/docs/functions/index.deserialize.html +2 -2
  28. package/docs/functions/index.ensureArray.html +2 -2
  29. package/docs/functions/index.ensureDate.html +2 -2
  30. package/docs/functions/index.ensureError.html +2 -2
  31. package/docs/functions/index.ensurePrefix.html +2 -2
  32. package/docs/functions/index.ensureSuffix.html +2 -2
  33. package/docs/functions/index.ensureTimestamp.html +2 -2
  34. package/docs/functions/index.escapeRegExp.html +2 -2
  35. package/docs/functions/index.formatDate.html +2 -2
  36. package/docs/functions/index.get.html +2 -2
  37. package/docs/functions/index.getMultiple.html +2 -2
  38. package/docs/functions/index.hasProps.html +6 -0
  39. package/docs/functions/index.ignore.html +2 -2
  40. package/docs/functions/index.insertSeparator.html +2 -2
  41. package/docs/functions/index.isEmpty.html +2 -2
  42. package/docs/functions/index.isNumericString.html +2 -2
  43. package/docs/functions/index.isPlainObject.html +2 -2
  44. package/docs/functions/index.last.html +2 -2
  45. package/docs/functions/index.later-1.html +2 -2
  46. package/docs/functions/index.mapAsync.html +2 -2
  47. package/docs/functions/index.mapValues.html +2 -2
  48. package/docs/functions/index.match.html +6 -3
  49. package/docs/functions/index.memoize.html +2 -2
  50. package/docs/functions/index.merge.html +2 -2
  51. package/docs/functions/index.mostFrequent.html +2 -2
  52. package/docs/functions/index.noop.html +2 -2
  53. package/docs/functions/index.occurrences.html +2 -2
  54. package/docs/functions/index.omit.html +2 -2
  55. package/docs/functions/index.pick.html +2 -2
  56. package/docs/functions/index.pull.html +2 -2
  57. package/docs/functions/index.race.html +2 -2
  58. package/docs/functions/index.remove.html +2 -2
  59. package/docs/functions/index.removeCommonProperties.html +2 -2
  60. package/docs/functions/index.replace.html +2 -2
  61. package/docs/functions/index.replaceDeep.html +2 -2
  62. package/docs/functions/index.rethrow.html +2 -2
  63. package/docs/functions/index.retry.html +2 -2
  64. package/docs/functions/index.round.html +2 -2
  65. package/docs/functions/index.safe.html +2 -2
  66. package/docs/functions/index.sample.html +2 -2
  67. package/docs/functions/index.samples.html +2 -2
  68. package/docs/functions/index.scale.html +2 -2
  69. package/docs/functions/index.seq.html +2 -2
  70. package/docs/functions/index.seqEarlyBreak.html +2 -2
  71. package/docs/functions/index.serialize.html +2 -2
  72. package/docs/functions/index.serializeToBuffer.html +2 -2
  73. package/docs/functions/index.set.html +2 -2
  74. package/docs/functions/index.setImmutable.html +2 -2
  75. package/docs/functions/index.shuffle.html +2 -2
  76. package/docs/functions/index.sortBy.html +2 -2
  77. package/docs/functions/index.sortByMultiple.html +2 -2
  78. package/docs/functions/index.sortProps.html +2 -2
  79. package/docs/functions/index.stripPrefix.html +2 -2
  80. package/docs/functions/index.stripSuffix.html +2 -2
  81. package/docs/functions/index.throttle.html +2 -2
  82. package/docs/functions/index.toggle.html +2 -2
  83. package/docs/functions/index.trim.html +2 -2
  84. package/docs/functions/index.trimEnd.html +2 -2
  85. package/docs/functions/index.trimStart.html +2 -2
  86. package/docs/functions/index.truthy.html +2 -2
  87. package/docs/functions/index.unique.html +2 -2
  88. package/docs/functions/index.unserializeFromBuffer.html +2 -2
  89. package/docs/functions/index.wait.html +2 -2
  90. package/docs/functions/index.waitFor.html +2 -2
  91. package/docs/functions/index.waitSync.html +2 -2
  92. package/docs/index.html +23 -8
  93. package/docs/interfaces/index.ComparePropsOptions.html +3 -3
  94. package/docs/interfaces/index.GetMultipleSource.html +2 -2
  95. package/docs/interfaces/index.GetSource.html +2 -2
  96. package/docs/interfaces/index.IsNumericStringOptions.html +2 -2
  97. package/docs/interfaces/index.OccurencesOptions.html +2 -2
  98. package/docs/interfaces/index.SetImmutableSource.html +2 -2
  99. package/docs/interfaces/index.SetSource.html +2 -2
  100. package/docs/interfaces/index.ThrottleOptions.html +3 -3
  101. package/docs/interfaces/index.ThrottledFunctionExtras.html +3 -3
  102. package/docs/modules/index.html +1 -1
  103. package/docs/modules.html +1 -1
  104. package/docs/types/index.CustomDeserializers.html +1 -1
  105. package/docs/types/index.CustomSerializers.html +1 -1
  106. package/docs/types/index.Later.html +2 -2
  107. package/docs/types/index.MapValuesFn.html +2 -2
  108. package/docs/types/index.MatchCallback.html +1 -1
  109. package/docs/types/index.MergeTwo.html +2 -2
  110. package/docs/types/index.SeqEarlyBreaker.html +2 -2
  111. package/docs/types/index.SeqFn.html +2 -2
  112. package/docs/types/index.SeqFunctions.html +2 -2
  113. package/docs/types/index.SetImmutablePath.html +2 -2
  114. package/docs/types/index.ThrottledFunction.html +1 -1
  115. package/docs/variables/index.mapValuesUNSET.html +2 -2
  116. package/docs/variables/index.mergeUNSET.html +2 -2
  117. package/esm/assertProps.d.ts +6 -0
  118. package/esm/assertProps.d.ts.map +1 -0
  119. package/esm/assertProps.js +8 -0
  120. package/esm/assertProps.js.map +1 -0
  121. package/esm/hasProps.d.ts +3 -0
  122. package/esm/hasProps.d.ts.map +1 -0
  123. package/esm/hasProps.js +13 -0
  124. package/esm/hasProps.js.map +1 -0
  125. package/esm/index.d.ts +2 -0
  126. package/esm/index.d.ts.map +1 -1
  127. package/esm/index.js +2 -0
  128. package/esm/index.js.map +1 -1
  129. package/esm/match.d.ts.map +1 -1
  130. package/esm/match.js.map +1 -1
  131. package/package.json +1 -1
  132. package/src/assertProps.spec.ts +128 -0
  133. package/src/assertProps.ts +37 -0
  134. package/src/hasProps.spec.ts +122 -0
  135. package/src/hasProps.ts +36 -0
  136. package/src/index.ts +2 -0
  137. package/src/match.ts +1 -0
@@ -29,22 +29,23 @@ jobs:
29
29
 
30
30
  - name: Deploy versioned documentation
31
31
  uses: easingthemes/ssh-deploy@main
32
- env:
32
+ with:
33
33
  SSH_PRIVATE_KEY: ${{ secrets.DOCS_SERVER_PRIVATE_KEY }}
34
34
  REMOTE_HOST: ${{ secrets.DOCS_SERVER_HOST }}
35
35
  REMOTE_USER: ${{ secrets.DOCS_SERVER_USER }}
36
36
  REMOTE_PORT: ${{ secrets.DOCS_SERVER_PORT }}
37
37
  SOURCE: "docs/"
38
38
  TARGET: "/docs/${{ env.PROJECT_NAME }}/${{ env.APP_VERSION }}"
39
+ ARGS: "-rltgoDzvO"
39
40
 
40
41
  - name: Deploy latest documentation
41
42
  uses: easingthemes/ssh-deploy@main
42
- env:
43
+ with:
43
44
  SSH_PRIVATE_KEY: ${{ secrets.DOCS_SERVER_PRIVATE_KEY }}
44
45
  REMOTE_HOST: ${{ secrets.DOCS_SERVER_HOST }}
45
46
  REMOTE_USER: ${{ secrets.DOCS_SERVER_USER }}
46
47
  REMOTE_PORT: ${{ secrets.DOCS_SERVER_PORT }}
47
- ARGS: "-rlgoDzvc -i --delete"
48
+ ARGS: "-rlgoDzv --delete"
48
49
  SOURCE: "docs/"
49
50
  TARGET: "/docs/${{ env.PROJECT_NAME }}/latest"
50
51
 
package/CHANGELOG.md CHANGED
@@ -6,6 +6,17 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
6
6
  ## [UNRELEASED]
7
7
  - (nothing yet)
8
8
 
9
+ ## [4.7.1] - 2025-10-16
10
+ ### Fixed
11
+ - added missing exports of `hasProps` and `assertProps`
12
+
13
+ ## [4.7.0] - 2025-10-16
14
+ ### Added
15
+ - `hasProps` method
16
+ - `assertProps` method
17
+ ### Changed
18
+ - deprecated `match`
19
+
9
20
  ## [4.6.0] - 2025-10-10
10
21
  ### Added
11
22
  - `ignore` method
package/README.md CHANGED
@@ -30,14 +30,17 @@ object, with just some properties copied. Easy, right? Few lines of code? Lodash
30
30
  ## Supported methods
31
31
 
32
32
  ### String related
33
- - `addPrefix` - add prefix to a string if not already present
34
- - `addSuffix` - add suffix to a string if not already present
35
33
  - `capitalize` - capitalize a string, optionally lower casing the rest
34
+ - `ensurePrefix` - add prefix to a string if not already present
35
+ - `ensureSuffix` - add suffix to a string if not already present
36
36
  - `isNumericString` - check if given value is a numeric string, features configurable
37
37
  - `occurrences` - count occurrences of a substring in a string, optionally allow overlapping
38
38
  - `replace` - replace all occurrences of a substring using a map of replacements
39
39
  - `stripPrefix` - strip prefix from a string
40
40
  - `stripSuffix` - strip suffix from a string
41
+ - `trim` - remove given characters from both sides of a string
42
+ - `trimEnd` - remove given characters from the end of a string
43
+ - `trimStart` - remove given characters from the start of a string
41
44
 
42
45
  ### Number related
43
46
  - `cap` - cap a value between lower and upper bound
@@ -53,7 +56,12 @@ object, with just some properties copied. Easy, right? Few lines of code? Lodash
53
56
  - `mostFrequent` - find most frequent value in an array
54
57
  - `pull` - remove values from an array (by mutating)
55
58
  - `remove` - remove values from an array (by mutating) using predicate function and return removed values
59
+ - `sample` - pick a random element from an array
60
+ - `samples` - pick multiple random elements from an array without duplicates
61
+ - `shuffle` - shuffle an array, returning a new array
56
62
  - `sortBy` - sort an array by given property (create callback function for `Array.prototype.sort`)
63
+ - `sortByMultiple` - sort an array by multiple properties with individual sort directions
64
+ - `toggle` - toggle an item in an array (add if missing, remove if present)
57
65
  - `unique` - get unique values from an array
58
66
 
59
67
  ### Object related
@@ -64,9 +72,11 @@ object, with just some properties copied. Easy, right? Few lines of code? Lodash
64
72
  - `merge` - merge two objects shallowly, allowing to remove properties while doing so
65
73
  - `omit` - omit properties from an object
66
74
  - `pick` - pick some properties from an object
75
+ - `removeCommonProperties` - remove properties from targets that have the same value as in source
67
76
  - `replaceDeep` - recursively replace all occurrences of a value in an object/array
68
- - `sortProps` - sort object properties by key
77
+ - `replaceDeepByFn` - recursively replace values in an object/array using a callback function
69
78
  - `serialize` - like JSON.stringify but any data type is allowed
79
+ - `sortProps` - sort object properties by key
70
80
 
71
81
  ### Date related
72
82
  - `ensureDate` - ensure that given value is a Date instance
@@ -78,24 +88,29 @@ object, with just some properties copied. Easy, right? Few lines of code? Lodash
78
88
  - `ensureError` - ensure that given value is an error
79
89
  - `escapeRegExp` - escape a string to be used in a regular expression
80
90
  - `safe` - runs function and returns its result or default value if function throws an error
91
+ - `hasProps` - runtime check and type guard to ensure that given object has specified properties
92
+ - `assertProps` - like `hasProps` but throws if check fails
81
93
 
82
94
  ### Flow related
95
+ - `ignore` - execute a callback and ignore its result, errors, or promise rejections
83
96
  - `later` - create a promise you can resolve later, outside of Promise constructor
84
97
  - `mapAsync` - map an array asynchronously if sync version blocks your event loop for too long
85
98
  - `noop` - do nothing
99
+ - `race` - timeout your promises while keeping TypeScript types correct
86
100
  - `rethrow` - throw given value
87
- - `seq` - sequentially execute Promise-returning functions until one returns a value
88
101
  - `retry` - execute Promise-returning in a loop until it resolves
102
+ - `seq` - sequentially execute Promise-returning functions until one returns a value
89
103
  - `wait` - wait given amount of time (async)
90
- - `waitSync` - wait given amount of time (sync)
91
104
  - `waitFor` - wait for a condition to be true, checking every given amount of time
105
+ - `waitSync` - wait given amount of time (sync)
92
106
 
93
107
  ### Various
94
108
  - `get` - extract a value from a deep object using specified path, optionally with a default value
95
109
  - `getMultiple` - same as above, but test multiple paths
110
+ - `isEmpty` - check if given value is empty
111
+ - `memoize` - memoize a function, caching the result of the last call
96
112
  - `set` - set a value in a deep object using specified path
97
113
  - `setImmutable` - set a value in a deep object using specified path, but return a new object
98
- - `isEmpty` - check if given value is empty
99
114
  - `throttle` - throttle a function, very configurable
100
115
  - `truthy` - is value truthy? (useful for filtering with more correct TypeScript support than `filter(Boolean)`)
101
116
 
@@ -0,0 +1,6 @@
1
+ type AssertPropsFn = <T extends Record<string, "string" | "number" | "boolean">>(obj: unknown, schema: T) => asserts obj is {
2
+ [K in keyof T]: T[K] extends "string" ? string : T[K] extends "number" ? number : T[K] extends "boolean" ? boolean : never;
3
+ };
4
+ declare const assertProps: AssertPropsFn;
5
+ export { assertProps, };
6
+ //# sourceMappingURL=assertProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertProps.d.ts","sourceRoot":"","sources":["../src/assertProps.ts"],"names":[],"mappings":"AAEA,KAAK,aAAa,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,EAC3E,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,CAAC,KACR,OAAO,CAAC,GAAG,IAAI;KACf,CAAC,IAAI,MAAM,CAAC,GACb,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,MAAM,GACxB,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,MAAM,GAC1B,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,OAAO,GAC5B,KAAK;CACtB,CAAC;AAcF,QAAA,MAAM,WAAW,EAAE,aAOlB,CAAC;AAEF,OAAO,EACH,WAAW,GACd,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertProps = void 0;
4
+ const hasProps_1 = require("./hasProps");
5
+ const assertProps = (obj, schema) => {
6
+ if (!(0, hasProps_1.hasProps)(obj, schema)) {
7
+ throw new Error("Object does not match the required schema");
8
+ }
9
+ };
10
+ exports.assertProps = assertProps;
11
+ //# sourceMappingURL=assertProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertProps.js","sourceRoot":"","sources":["../src/assertProps.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAyBtC,MAAM,WAAW,GAAkB,CAC/B,GAAY,EACZ,MAAS,EACX,EAAE;IACA,IAAI,CAAC,IAAA,mBAAQ,EAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACjE,CAAC;AACL,CAAC,CAAC;AAGE,kCAAW"}
@@ -0,0 +1,3 @@
1
+ declare const hasProps: <T extends Record<string, "string" | "number" | "boolean">>(obj: unknown, schema: T) => obj is { [K in keyof T]: T[K] extends "string" ? string : T[K] extends "number" ? number : T[K] extends "boolean" ? boolean : never; };
2
+ export { hasProps, };
3
+ //# sourceMappingURL=hasProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasProps.d.ts","sourceRoot":"","sources":["../src/hasProps.ts"],"names":[],"mappings":"AAaA,QAAA,MAAM,QAAQ,GACV,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC,EAEzD,KAAK,OAAO,EACZ,QAAQ,CAAC,KACV,GAAG,IAAI,GACL,CAAC,IAAI,MAAM,CAAC,GACb,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,MAAM,GACxB,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,GAAG,MAAM,GAC1B,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,OAAO,GAC5B,KAAK,GAQtB,CAAC;AAEF,OAAO,EACH,QAAQ,GACX,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasProps = void 0;
4
+ const hasProps = (obj, schema) => {
5
+ if (typeof obj !== "object" || obj === null || Array.isArray(obj)) {
6
+ return false;
7
+ }
8
+ for (const [key, type] of Object.entries(schema)) {
9
+ if (typeof obj[key] !== type) {
10
+ return false;
11
+ }
12
+ }
13
+ return true;
14
+ };
15
+ exports.hasProps = hasProps;
16
+ //# sourceMappingURL=hasProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasProps.js","sourceRoot":"","sources":["../src/hasProps.ts"],"names":[],"mappings":";;;AAaA,MAAM,QAAQ,GAAG,CAGb,GAAY,EACZ,MAAS,EAOX,EAAE;IACA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;IACpF,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAE/C,IAAI,OAAQ,GAA0B,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;IAC3E,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAGE,4BAAQ"}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export * from "./serializeToBuffer/serializeToBuffer.js";
2
2
  export * from "./serializeToBuffer/unserializeFromBuffer.js";
3
3
  export * from "./ensurePrefix.js";
4
4
  export * from "./ensureSuffix.js";
5
+ export * from "./assertProps.js";
5
6
  export * from "./cap.js";
6
7
  export * from "./capitalize.js";
7
8
  export * from "./coalesce.js";
@@ -16,6 +17,7 @@ export * from "./escapeRegExp.js";
16
17
  export * from "./formatDate.js";
17
18
  export * from "./get.js";
18
19
  export * from "./getMultiple.js";
20
+ export * from "./hasProps.js";
19
21
  export * from "./ignore.js";
20
22
  export * from "./insertSeparator.js";
21
23
  export * from "./isEmpty.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -18,6 +18,7 @@ __exportStar(require("./serializeToBuffer/serializeToBuffer.js"), exports);
18
18
  __exportStar(require("./serializeToBuffer/unserializeFromBuffer.js"), exports);
19
19
  __exportStar(require("./ensurePrefix.js"), exports);
20
20
  __exportStar(require("./ensureSuffix.js"), exports);
21
+ __exportStar(require("./assertProps.js"), exports);
21
22
  __exportStar(require("./cap.js"), exports);
22
23
  __exportStar(require("./capitalize.js"), exports);
23
24
  __exportStar(require("./coalesce.js"), exports);
@@ -32,6 +33,7 @@ __exportStar(require("./escapeRegExp.js"), exports);
32
33
  __exportStar(require("./formatDate.js"), exports);
33
34
  __exportStar(require("./get.js"), exports);
34
35
  __exportStar(require("./getMultiple.js"), exports);
36
+ __exportStar(require("./hasProps.js"), exports);
35
37
  __exportStar(require("./ignore.js"), exports);
36
38
  __exportStar(require("./insertSeparator.js"), exports);
37
39
  __exportStar(require("./isEmpty.js"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,2EAAyD;AACzD,+EAA6D;AAC7D,oDAAkC;AAClC,oDAAkC;AAClC,2CAAyB;AACzB,kDAAgC;AAChC,gDAA8B;AAC9B,qDAAmC;AACnC,oDAAkC;AAClC,mDAAiC;AACjC,mDAAiC;AACjC,kDAAgC;AAChC,mDAAiC;AACjC,uDAAqC;AACrC,oDAAkC;AAClC,kDAAgC;AAChC,2CAAyB;AACzB,mDAAiC;AACjC,8CAA4B;AAC5B,uDAAqC;AACrC,+CAA6B;AAC7B,uDAAqC;AACrC,qDAAmC;AACnC,4CAA0B;AAC1B,6CAA2B;AAC3B,gDAA8B;AAC9B,iDAA+B;AAC/B,6CAA2B;AAC3B,+CAA6B;AAC7B,6CAA2B;AAC3B,oDAAkC;AAClC,4CAA0B;AAC1B,mDAAiC;AACjC,4CAA0B;AAC1B,4CAA0B;AAC1B,4CAA0B;AAC1B,4CAA0B;AAC1B,8CAA4B;AAC5B,8DAA4C;AAC5C,+CAA6B;AAC7B,mDAAiC;AACjC,+CAA6B;AAC7B,6CAA2B;AAC3B,6CAA2B;AAC3B,4CAA0B;AAC1B,8CAA4B;AAC5B,+CAA6B;AAC7B,6CAA2B;AAC3B,2CAAyB;AACzB,iDAA+B;AAC/B,2CAAyB;AACzB,oDAAkC;AAClC,+CAA6B;AAC7B,8CAA4B;AAC5B,sDAAoC;AACpC,iDAA+B;AAC/B,mDAAiC;AACjC,mDAAiC;AACjC,gDAA8B;AAC9B,8CAA4B;AAC5B,4CAA0B;AAC1B,+CAA6B;AAC7B,iDAA+B;AAC/B,8CAA4B;AAC5B,8CAA4B;AAC5B,4CAA0B;AAC1B,+CAA6B;AAC7B,gDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,2EAAyD;AACzD,+EAA6D;AAC7D,oDAAkC;AAClC,oDAAkC;AAClC,mDAAiC;AACjC,2CAAyB;AACzB,kDAAgC;AAChC,gDAA8B;AAC9B,qDAAmC;AACnC,oDAAkC;AAClC,mDAAiC;AACjC,mDAAiC;AACjC,kDAAgC;AAChC,mDAAiC;AACjC,uDAAqC;AACrC,oDAAkC;AAClC,kDAAgC;AAChC,2CAAyB;AACzB,mDAAiC;AACjC,gDAA8B;AAC9B,8CAA4B;AAC5B,uDAAqC;AACrC,+CAA6B;AAC7B,uDAAqC;AACrC,qDAAmC;AACnC,4CAA0B;AAC1B,6CAA2B;AAC3B,gDAA8B;AAC9B,iDAA+B;AAC/B,6CAA2B;AAC3B,+CAA6B;AAC7B,6CAA2B;AAC3B,oDAAkC;AAClC,4CAA0B;AAC1B,mDAAiC;AACjC,4CAA0B;AAC1B,4CAA0B;AAC1B,4CAA0B;AAC1B,4CAA0B;AAC1B,8CAA4B;AAC5B,8DAA4C;AAC5C,+CAA6B;AAC7B,mDAAiC;AACjC,+CAA6B;AAC7B,6CAA2B;AAC3B,6CAA2B;AAC3B,4CAA0B;AAC1B,8CAA4B;AAC5B,+CAA6B;AAC7B,6CAA2B;AAC3B,2CAAyB;AACzB,iDAA+B;AAC/B,2CAAyB;AACzB,oDAAkC;AAClC,+CAA6B;AAC7B,8CAA4B;AAC5B,sDAAoC;AACpC,iDAA+B;AAC/B,mDAAiC;AACjC,mDAAiC;AACjC,gDAA8B;AAC9B,8CAA4B;AAC5B,4CAA0B;AAC1B,+CAA6B;AAC7B,iDAA+B;AAC/B,8CAA4B;AAC5B,8CAA4B;AAC5B,4CAA0B;AAC1B,+CAA6B;AAC7B,gDAA8B"}
@@ -1 +1 @@
1
- {"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../src/match.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;AAO9C,QAAA,MAAM,KAAK,GAAI,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,aAAa,CAAC,CAAC,CAAC,KAAG;IAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAAC,SAAS,EAAE,CAAC,EAAE,CAAA;CAejF,CAAC;AAEF,OAAO,EACH,KAAK,GACR,CAAC;AACF,YAAY,EACR,aAAa,GAChB,CAAC"}
1
+ {"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../src/match.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;AAQ9C,QAAA,MAAM,KAAK,GAAI,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,aAAa,CAAC,CAAC,CAAC,KAAG;IAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAAC,SAAS,EAAE,CAAC,EAAE,CAAA;CAejF,CAAC;AAEF,OAAO,EACH,KAAK,GACR,CAAC;AACF,YAAY,EACR,aAAa,GAChB,CAAC"}
package/dist/match.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"match.js","sourceRoot":"","sources":["../src/match.ts"],"names":[],"mappings":";;;AAOA,MAAM,KAAK,GAAG,CAAI,IAAS,EAAE,EAAoB,EAAoC,EAAE;IACnF,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,MAAM,SAAS,GAAQ,EAAE,CAAC;IAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAChB,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO;QACX,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,OAAO;QACH,OAAO;QACP,SAAS;KACZ,CAAC;AACN,CAAC,CAAC;AAGE,sBAAK"}
1
+ {"version":3,"file":"match.js","sourceRoot":"","sources":["../src/match.ts"],"names":[],"mappings":";;;AAQA,MAAM,KAAK,GAAG,CAAI,IAAS,EAAE,EAAoB,EAAoC,EAAE;IACnF,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,MAAM,SAAS,GAAQ,EAAE,CAAC;IAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAChB,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO;QACX,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,OAAO;QACH,OAAO;QACP,SAAS;KACZ,CAAC;AACN,CAAC,CAAC;AAGE,sBAAK"}
@@ -1 +1 @@
1
- window.navigationData = "eJyNmc1y0zAUhd/FbAu0tJTSHW0ThhmgHRzYMCwUR3FELcuVZJrC9N25/ol/4vhcb32/88WWJfmq/fkv8HLrg8vgeiPSWCYmDo6CTPgNXVqZKNcy9e51U3y18Toh4l6lq+Dy4vTi4vz44vmosdBluW0N2qzyRLrX5eV+9s1REG1UsrIyDS5/trdhdCasvLMmc7eZVyZ1rU6lXtq1iBrjAXrvV96ed+7uo/Rf8sSrLJGhyW0kgXrAMuIpQl70yX2lIbcqCr1VacyPwOEA+onbKMpp0EnB2wcsEofSf9I692I5YXiHMKOeYuRFi4013idyNc/TqHii2dZbgYZgJDHlR/jx3SOR9Dp33ugb6ehli0T9lbYj9k9ZuyaG4J73+P27k7dvBu5wmjmc7v0s6HkPu8oSl/8ish8iyaWbp4ctHYB3+WhzLZJkKaL7MVsHYX3SxnLxaEZUdZWzhPJhJmzydGWluB8bqz1ognNsvMrSlHw910cmQpfgbe1CvytUI8Y+xVkHq/KwdoBxXr2bUN+/hrNFK/0jaNIv209Zn+tbT3vCYiJwsoYBokhkrWG9G/3aQMV+9PysH1W+XLLQUDNIZATddYQ0NQEl5Tf7g7XiySFTB+N1ZQvA2koKyFbtrjnu6kBAJVOX17c/rupArOqGdkzOVDCsaGatsZyphFjVnZVrteVcFcXKwnw9QVZRrGyhtHReaLBo9kCkdLQ85DcZz7bI16GAbG2sFh6/zZYBolj6cQMVcXTX3ELFDgIqFafGAktVR4KUlpMPJa1P4dHE3AOR0s105sG6q4F9BR1JEuFcuRFkVkY0/qug5+0128jfA+Gt3iVCpbfL3zICr7OHAR3dPrAUVRjutWvDNJVfngABfRU/uKc0GnfsCCypPq3QUiFQQ80cUlAZxaU28CtQA1BBn3UkoDKKG+fnVj7kdAIHlg4FZKkxYOcqqiBsilNgdQwcd3QgpNIKPExRBeFMdTv3/XBRReE8SUCYqiBsBWp6iioK00z5g+JlnRVcG61NWnQwtAsq9CoO8/AHsgQ/YQXwihspwTzrQFDlqW1/RJoSwAoLtv+yjOImp2vj8aIM4k6swVgWVRjW8Ktc1VkBmB41gBSRgLdQlFFcPoCwfMDR9qgLJS0GdWw3P6WXb5iFuaL2E30kByjUgr3QwQbOdc7L0NFQSLahO4WeCkAKY/0VWHFVnRXwTWmfY4TMobBBkIYauIw75nQgTsUdcjoQUPn67xrjnh2BJCaOoaKsI4FVGsSpyoRnaJetAUYRemHBKmoQqMn9Bszdqg4Eeaqo/xoXVHUoaLaNuTWa22MO4kD/KFDTVVSZ8Bwdy2qAUYTwWLAjpv1p5tAYDf/T9KKTWFNiuUtU8rOT92enxyNvAXr7XN/26/nXf0rpcaE="
1
+ window.navigationData = "eJyVmV1T2zgUhv9Leku3UChLuSuQdDqzLUyd3ZtOLxRHsbVYkpHkErrT/77ytxzH73FvfZ73iSzrE779t3B87xbXi9uUqYRnOlmcLHLmUv9oq+NCcuXsm674R+pk5olHobaL66vzq6vL06tfJ53FP+b73iD1tsi4fVM9HmbfniziVGRbw9Xi+lvfDC1zZviD0bm9z53QyvY6oRw3OxZ3xiP0wa+8uwxa95G7z0XmRJ7xSBcm5kA9YgnxHCEt+mS/+C43Io6cESqhe+B4AP3EfRwXvtO9graPWCSOuPskZeHYZkb3jmFCPcdIi9ap0c5lfLsqVFy+0XLvDENdMJGY8yN0/x6QSHpbWKflHbf+Y7NM/OQmELuXvJ8TY/DAe/r+z7N3b0fuaJ45mu/9i/n3Pe6qSlT+M8v/YVnB7UodtwQA7XJxesuybMPixylbgJA+bhK+ftYTqqZKWSL+tGQme7kxnD1O9dUBNMM51V9VaU6+GesTAyEkaFs/0R9K1YRxSFHW0aw8rh1hlFe2A+rvL9Fy3Ut/MD/oN/1WNuSG1vOBsBwIlKxjgIhZP6FdtdP1pl37FRpTAA1VlxeBKmb5tMIXcVS4avZDQ8MgkWa+A2KkaQgoqbb/D8awF9ArA4zWEX0cUkC27RfgaVcAARVXtmiaP60KIFJ15xdfylQypGhpjDaUqYJI1YPhO7GnXDVFyqJiN0NWU6RsLSS3jkkwaQ5ApLR+evCvPFnukS+ggGynjWQOf82eAaKEu2mDL+Joe06GihYCqpRZYu61BJCIRGkDmlLXkUCVa2jE/SRnDo3uAxAp7VLmDkzeBjhU+CtS5pf0ajXJDY/9R9wuBt7B4R/5ByBs6kPGhLrf/MtjMCYGGND55gNLWYXhwfFxnPbl12dA4HfpD/ZFxdOOlsCSequHlhqBGn+4RApf/t3vL7nUcH9pANSs8uyBBL6M4tq6leFPBVfgO4cUkCmtwZpYVkFYl1fV+q467QggpJICvExZBeFchNeLw3BZReEiy0DYV0HYMHScKqso7EfKDxSv6qTgVkupVblG+6VRoE9xnIc/kGf4DWuAVtxxDsZZAEGV83eLZ6SpAKwwYE+oyiiuC/9sOl6WQdyyHejLsgrDEu73dZ0UgOHRAEgRM9iEsozi/AmE+ROO9vdxKOkxqCPvCXNuCR2z1jf+YIt2zhEKtWAttPBoaINLPXR0FJKlvqXQUwNIoY27ATOurpMC+rg75AghceTtEKTxp7qcukAFEKWirk8BBFSu+ePLtKclkEQnCVRUdSQwQoK4rxLhJVplG4BQRI4ZMIs6BGoKl4KxW9eBoFDCn7+mBXUdCrplY2W0pNaYozjQPzN06CqrRHiF7moNQCgieFdoiXl/9DnWR+N/h70KEjuf2LSJWn5x9v7i/HTiK0DvkBvavv/6/j8836sE"
@@ -1 +1 @@
1
- window.searchData = "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";
1
+ window.searchData = "eJy1nduS2zYSht9Fvp11CIAHwHeJM95y1cZx7Ti5cblSHA01w40kyiTlw7r87kvw2E00qRbpvUlZg8YPkPi6CXZLyLdNnn0uNi/ef9v8nR4fNi+00jr09M3mGB+SzYvNy6f4+Jjss8fNzeac76u/PGTb8yE5lsVPfdvzp/Kwrwy2+7gokkpus/l+0ynKXqv6mHzpdQ7Zw3mfFD/Vf51VCP1eokjyNN6n/03eZb+cd7sk7+V25+O2TLNjJ+hYEkPcbE5xXl1KPzdyzPOx13qVZ4cL45LW143tC+Mrb5jAQzI3Afc+PgMddlWH+67D1ZeeHItznrzNk136ZfKKodHim9yI3FUzvThSY7R4JGuel2/z7FRMDgRsFo+zjU+T+lXbGt20rNd2Tr41WT5KFldQbWfGaA1WjHCwZj/nefx1eiWQ1dqx5hcdGl03kgzCIWACld9PtX4/Ynosk3wXb3tvJYyvG1l4crjKQ1oU6fHx9uM53hd/VJa79Jg8XD/6s1YoqYXOQGhmUpQavRggOk2uBbBZFztBOJ6LmNiMueqeiUQwPN5enosyO/w6zDwfVr78ehpuu2u3YtGvG+PZX3/VZpfWkuje9JyaxnHJNI4/fBrnJdM4//Bp7JdM4wIAC6Zxv2Qa9z98GumSaaQ/YhrOBqN+jlzYX9Q2Kzcyv8bldHAbTFaOcpvn2fROFNisHOddekiKMj5Mb2hGdsvHK6q9S/Lv5PH2y8xgwGjxSLssP8Tl7DoNJotHeUzKSfmqbfk2459JeZedc7BBcx7vvcma2f923pfpaT99k4DNqqvpRBhXhU0XX91TXMxvCDuDxSOkj8csn751TfNydbtnKe+SyjYuZ+LAyG75eMXt4VROR8+2fYX+m/OhiubbuzKvdp8z4yC75dS9xkIXd+u0/Yq9W7zfZ59f7bO4XDbqs1pg1wnMPS4nrnVuYlV0zY420bNibgnQ+MHTe32s3kpSwOP1s0sHiR88uTfxmxXzOsaXdsYXp4T86u0+To+/3/8n2U4/jZDVYh+u7KeHsI1XeuvoFetf1bN4CHRwN1m3rHDFU55Vb73JBe12bzoYz61R021+a5wnRbb/xBx2MF4/LGLhwqit7YJBERnlTNa0bv2HWMzdIT79XHw9bicH6AzWjPBnvD8n09uF3uK6MZR0x/jjzd3tu36gT3H1inM/ZCyw2TqP+q3TekW/wYP2Fbeu3D7N3Laqde1FVBIvq9B5H2//nrgMYLH8QpJDNpe1attX6OePc+pV63K2bO8LXPUmK5fD6rz7nNEr0TYuv0lZUb7Kk49nazl5r4DR4pGOWTb9EmobFytn2+05r8y2M+EE2Czf4v5uRWqNi7tbx3TF0zT7lOR7UP9gDvZs6Df3sHEvir7Jh3QaENu4ePlOKQgzY2XbuFz5vN9PK1eNi5XzeKaYYxuXK1dR79OMdt28Uv1ldjhkR/s2Xr3KpjNeQ5uvGP20n71xTfta/V+TZDrSAJsV45RPefZ5Zoy6fY1+Pp0ZqFuXa2fn48O0tm1drF3Eu+nFtY0rlA9zabOmeaX6tBu07cv1t/Hc5G3rcu3k47Ry8nGN7m2c77/+kifxdHhGVuv2OXdQauK9dGSzesBX3eVMjdYbrB+KfiOoW9aJN7WbO1ad9O7/XiUdj3BVjfTuh1RIJ6bAq4/ypzBXHZ2YAq82yp/CXGV0Ygq8uih/CnNV0Ykp8Gqi/CnMVUQnpsCrh85Ogfoe3UycXPT9CzTG9Pa7WFP7urtc+7pbXfuqZvj6cDiX9gV57jJ6o7XxdlB6G5dPJCBjo1W3sFdi3MuR7fKb+nTe7ebuZ9O+XD/Ly1+m96FN80r1ixVRbLZqtPn6ZG+xfIwyT08Xvt4JbNaNc+HLncBm8Tj2JaYsZ9amM1juOe9ahYduo3X7pczjmbzKRIcVm5ltfNwm+2UjPus7zz1Mpi5yYkK7/bl4Wjifru+66VArdDHjNTJcsSL7JH6AJWvWUM+GXpyLv1B2rG5Iur9+DqDbskmMH2TOWpFPMsdquctnj49zDl83L1fP08O0dtW4Svl2Jq/Rtq/SvyvjfHoP1lusGONcPk0/bpvmFb+7SD+ep1e2aV6s/jmeyQ7bxlXKr2a+j9O2r9K/m6t1dgasET7ctP968W3zqXptsB77YiOfq+emst6lyf7B/j6oGfzGfpP+0BReut8BbT60Zn8m2zLLrXFj/ZO3uXnv3fj+cy+MPny4ed91rhvqP3Qaw1/qjqL6JKiOwukoUEdZfZJUR+l0lKijqj4pqqNyOirU0a8++VRH3+noo45B9SmgOgZOxwB1DKtPIdUxdDqGqGNUfYqojpHTMUIddfVJUx2101GjjhVB7w3V0TgdDQbA8iBIdoQLjxjRU+ND80MAhAkSlgtBMiRciASmSFg2BMmRcEESmCRh+RAkS8KFSWCahGVEkDwJFyiBiRKWE0EyJVyoBKZKWFYEyZVwwRKYLGF5EfpG6ecmMLizC5fAdAnLjDBkZxcwgQmTlhnpUZ2lS5jEhEnLjBRkZ5cwOYpRdZCSZGciTGHCpGVGKrKzS5jEhEnLjCQJky5hEhMmLTOSJEy6hElMmLTMSJIw6RImMWHSMiNJwqRLmMSEScuMJKOXdAmTmDBpmZFkBJMuYRITpiwzioxhyiVMYcKUZUaRMUy5hClMmLLMKDKGKZcwNXoS1o9C+llIPAwxYcoyo0jClEuYwoQpy4wiCVMuYQoTpiwziiRMuYQpTJiyzCiSMOUSpjBhyjKjSMKUS5jChCnLjCIJUy5hChPmW2Z8kjDfJczHhPmWGZ8kzHcJ8zFhvmXGJwnzXcJ8TJhvmfFJwnyXMH+036o3XPSOi9hyYcJ8y4xPEua7hPmYMN8y44dU6PVdwnxMmG+Z8UnCfJcwHxPmW2Z8kjDfJczHhPmWGZ8kzHcJ8zFhgTd5zYFLWIAJCywzAYln4BIWYMICy0xA4hm4hAWYsMAyE5B4Bi5hASYssMwEJJ6BS1gw2tXX23oSz4DY2GPCAstMQL8UuIQFmLDAMhOQATBwCQswYYFlJiDxDFzCAkxYYJkJSDwDl7AAExZaZgISz9AlLMSEhZaZkCQsdAkLMWGhZSYkCQtdwkJMWGiZCUnCQpewEBMWWmZCkrDQJSzEhIWWmZAkLHQJC0fvjvXLI0lYSLw+YsJCy0xIv3q6hIWYsNAyE5KEhS5hISYstMyEJGGhS1iICYssMyFJWOQSFmHCIstMRBIWuYRFmLDIMhORhEUuYREmLLLMRCRhkUtYhAmLLDMRSVjkEhZhwiLLTEQSFrmERZiwyDITkYRFLmHRKENRpyhIwiIiSYEJiywzEZ3gcAmLMGGRZSYiCYtcwiJMmLbMRCRh2iVMY8K0ZUaThGmXMI0J05YZTRKmXcI0JkxbZjRJmHYJ05gwbZnRJGHaJUxjwrRlRpOEaZcwjQnTlhlNEqZdwjQmTNfZCjLhoF3C9CgPVmcryISDJlJhmDBdv0uSCQftEqYxYabOVpAJB+MSZjBhps5WkAkH4xJmMGGmzlaQCQfjEmYwYaYmjPRn4xJmMGGmJoz0Z+MSZjBhpiaM9GfjEmYwYaYmjE5cuoQZTJixzBjSn41LmMGEGcuMIf3ZuISZUba1TreS/myIhOs442qhMXTu0qNyrqOkq2e5MXT60iPSrt4o7+pZdAydwfSIzKs3Sr16lh5DJzE9IvnqjbKvngXI0HlMj8i/eqMErGcZMiRxTdu4/ygH61mMDAld0zbuP0rDenVk8yZy5kQm1hulYr06unl03twjsrHeKB3r1flYj86de0RG1hsh2Gb9aQapvL+T+K8z/x4NIZn7H0HYZP89mkIq/z8uADQVAI/GkKoBjIsATRXAozmk6gDjQkBTCfBoEKlawLgY0FQDPJpEqh4wLgg0FYGJ6g1VExgXBZqqwFQFhyBxXBhoKgMTVRyqNjAqDog63y8mKjlEfUCMCgRCNjUomkSiRtD9ra7GfkryMnl43VRl37/fjH9J/23zV1uy9UVXFf628UX13+/fhxJt9QlUaW2bHRIdGQCUPKDk8ZWGn9ADLQm0JF+r/tk7kFFARvFk6nP7Ts235galaBCKWDr3sLcElyNl08Pwbnb3ZatBzEboXs3GYJ7MCWroQUFz+/dHBg4yZpAxPJnhLNBBBVwOD5vhZEF4V+BNYcrUx83F7fGBQAv4hGAuU6PlcCPAygseyFAq676ABhQB04LH9Lb+YvcDPlYOKAK4BROnWnFCr3qzGugKWXroQD8wM6BUPWSuVIIHl4KYAEICS7E5mCpujv0CPg2E5DVKD/WBUUAIXKTkXWQjlDRndwGlECjxbnyjdGq/vztIgTldM6Wi/YLuIASmdM2MyuG8MHB9AFTJA7U56CtPHpMvWApEQMkLge3XTGHIgXHCY6rUJ4I5DIBIKnmhtD4XbFBQIP4pXvyrFA79N9GBEghZiheygFLR/hQA6IGApXgBq9IjdMDdVryo/BQXTkRWwG8Vz29TtFTgcqRqn+W829Qd5gUmA/xM8Ryt6QkxBBAyFewWpxhO/QLzAe6qeP6aFklzphdQAX6qeH6aFsdzfRpR0Z7cBdSAqyqek43UiKeoAg6neA6XFid7vFHWHoIEnijwkcIjCm3oJFhBKVqieC7cHJYEpgJ48nk8tafqAA3AgB82vQLmdLqvo8MgCfcrzJ3ZIT7FzVk84IkEAlzAA72S+dQeuAN0wN0OeH7b6+zQ20UArizgrXuvZE8LRisXgKgb8KJkeygO0AAgBrzVrzW2/bk3QAvuAHiRoD/bBqgAlgJeJGhPsAEaIJoEPP+vNUp7fAyQAR4fMjG0Mu5KgXgU8ELH1GnYwE3A0gkmS1lR7vpTbMCOCzhKyHMUhLUAN0qYpofm3ffmuBswFeBrIc/Xsv5kFiJqh8DjQt5dQufkACXgbiHP3ZrDYIAE8JCQ5yH94TRABSx8yPPZ5uwYIAH32Dwn64+fA2EfuJnPVKmPmgETARIhj5jmTBkgAZwr5DlXd7ocuBRAsM8VaU6gATMBIhEvXjQi1iY7nsBBMyCNBHwz4vlmf34MUAFuFfHcqlV5qE+JAUrADSKeG/RHCIL7DRbNZ657d5oMmAtw7ojn3O2ZMUADeFPE86b2bBigAfw64vk1TqeAuyF0Gz95DtWcJQOmAjw74kocRu9zEcxd8lanPxsGqICring+1Z4AAzSAS2meS9UnvYDUEvAfzfOfSiGxx6fcN2e6AC3gRZrnRUgL75o18CTN86RKDW8oNaBX8+i1GsN5LkAKOJPmOROZgdOAQMO9rFanzNzsG0yEM9VQaNcAZsO9rjIdjmEAUjB7zfRzIHWqj1gAuXCApmH6KpBz8x0G8GmYfkvlTTTwXMOkqjtkAcwGrJxh+n+Wl/coPBv4LugxI0CtQiWqDNwze8xokBHFHQPTzB6TS3vWgJs3NSGUYjqMlXIzpwam5T0e68PpBUAHPo88HgCdzsOu/wk2fKWH94tZ1XAUk/bQAzBR+OLh8Tyyk6UKJR6svXg8ZrvfgkMZuKTMisvwm3goBHll1pWaX49DEUgF803RiiR4kyM8SAWztmJ1iuYH4VAJLptgLlv7s29Yc4MFPGYZ6oweLUBAek0PzVv17nficDqoBsgLv+h/AQW0IEC8+wOU6CoWzKmzFJsfq8MLhN4hePfJiuxwxligeqTkxXSrM87vCZQCkQz3+HBTvQqfksrPqj7vP3z//j+sgDnk";