angular-odata 0.78.1 → 0.95.0

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 (224) hide show
  1. package/README.md +133 -62
  2. package/{esm2015/angular-odata.js → esm2020/angular-odata.mjs} +0 -0
  3. package/esm2020/lib/api.mjs +303 -0
  4. package/{esm2015/lib/cache/cache.js → esm2020/lib/cache/cache.mjs} +12 -5
  5. package/{esm2015/lib/cache/index.js → esm2020/lib/cache/index.mjs} +0 -0
  6. package/{esm2015/lib/cache/memory.js → esm2020/lib/cache/memory.mjs} +0 -0
  7. package/{esm2015/lib/cache/storage.js → esm2020/lib/cache/storage.mjs} +1 -1
  8. package/esm2020/lib/client.mjs +271 -0
  9. package/{esm2015/lib/constants.js → esm2020/lib/constants.mjs} +9 -3
  10. package/esm2020/lib/helper.mjs +268 -0
  11. package/esm2020/lib/index.mjs +19 -0
  12. package/esm2020/lib/models/collection.mjs +741 -0
  13. package/{esm2015/lib/models/index.js → esm2020/lib/models/index.mjs} +0 -0
  14. package/esm2020/lib/models/model.mjs +453 -0
  15. package/esm2020/lib/models/options.mjs +945 -0
  16. package/{esm2015/lib/module.js → esm2020/lib/module.mjs} +6 -6
  17. package/esm2020/lib/options.mjs +32 -0
  18. package/esm2020/lib/resources/index.mjs +7 -0
  19. package/esm2020/lib/resources/path/handlers.mjs +69 -0
  20. package/esm2020/lib/resources/path/index.mjs +3 -0
  21. package/esm2020/lib/resources/path/segments.mjs +124 -0
  22. package/esm2020/lib/resources/query/builder.mjs +590 -0
  23. package/esm2020/lib/resources/query/expressions.mjs +207 -0
  24. package/esm2020/lib/resources/query/handlers.mjs +186 -0
  25. package/esm2020/lib/resources/query/index.mjs +4 -0
  26. package/esm2020/lib/resources/query/options.mjs +103 -0
  27. package/esm2020/lib/resources/query/syntax.mjs +406 -0
  28. package/esm2020/lib/resources/request.mjs +167 -0
  29. package/esm2020/lib/resources/resource.mjs +326 -0
  30. package/esm2020/lib/resources/responses/annotations.mjs +119 -0
  31. package/{esm2015/lib/resources/responses/csdl/csdl-annotation.js → esm2020/lib/resources/responses/csdl/csdl-annotation.mjs} +0 -0
  32. package/{esm2015/lib/resources/responses/csdl/csdl-entity-container.js → esm2020/lib/resources/responses/csdl/csdl-entity-container.mjs} +0 -0
  33. package/{esm2015/lib/resources/responses/csdl/csdl-entity-set.js → esm2020/lib/resources/responses/csdl/csdl-entity-set.mjs} +0 -0
  34. package/{esm2015/lib/resources/responses/csdl/csdl-enum-type.js → esm2020/lib/resources/responses/csdl/csdl-enum-type.mjs} +0 -0
  35. package/{esm2015/lib/resources/responses/csdl/csdl-function-action.js → esm2020/lib/resources/responses/csdl/csdl-function-action.mjs} +0 -0
  36. package/{esm2015/lib/resources/responses/csdl/csdl-navigation-property-binding.js → esm2020/lib/resources/responses/csdl/csdl-navigation-property-binding.mjs} +0 -0
  37. package/{esm2015/lib/resources/responses/csdl/csdl-reference.js → esm2020/lib/resources/responses/csdl/csdl-reference.mjs} +0 -0
  38. package/{esm2015/lib/resources/responses/csdl/csdl-schema.js → esm2020/lib/resources/responses/csdl/csdl-schema.mjs} +0 -0
  39. package/{esm2015/lib/resources/responses/csdl/csdl-singleton.js → esm2020/lib/resources/responses/csdl/csdl-singleton.mjs} +0 -0
  40. package/{esm2015/lib/resources/responses/csdl/csdl-structural-property.js → esm2020/lib/resources/responses/csdl/csdl-structural-property.mjs} +0 -0
  41. package/{esm2015/lib/resources/responses/csdl/csdl-structured-type.js → esm2020/lib/resources/responses/csdl/csdl-structured-type.mjs} +0 -0
  42. package/{esm2015/lib/resources/responses/csdl/csdl-type-definition.js → esm2020/lib/resources/responses/csdl/csdl-type-definition.mjs} +0 -0
  43. package/{esm2015/lib/resources/responses/index.js → esm2020/lib/resources/responses/index.mjs} +0 -0
  44. package/esm2020/lib/resources/responses/metadata.mjs +547 -0
  45. package/{esm2015/lib/resources/responses/options.js → esm2020/lib/resources/responses/options.mjs} +1 -1
  46. package/esm2020/lib/resources/responses/response.mjs +170 -0
  47. package/{esm2015/lib/resources/responses/types.js → esm2020/lib/resources/responses/types.mjs} +1 -1
  48. package/esm2020/lib/resources/types/action.mjs +101 -0
  49. package/esm2020/lib/resources/types/batch.mjs +288 -0
  50. package/esm2020/lib/resources/types/count.mjs +27 -0
  51. package/esm2020/lib/resources/types/entity-set.mjs +94 -0
  52. package/esm2020/lib/resources/types/entity.mjs +106 -0
  53. package/esm2020/lib/resources/types/function.mjs +137 -0
  54. package/{esm2015/lib/resources/types/index.js → esm2020/lib/resources/types/index.mjs} +0 -0
  55. package/esm2020/lib/resources/types/media.mjs +41 -0
  56. package/esm2020/lib/resources/types/metadata.mjs +30 -0
  57. package/esm2020/lib/resources/types/navigation-property.mjs +226 -0
  58. package/esm2020/lib/resources/types/options.mjs +2 -0
  59. package/esm2020/lib/resources/types/property.mjs +183 -0
  60. package/esm2020/lib/resources/types/reference.mjs +85 -0
  61. package/esm2020/lib/resources/types/singleton.mjs +126 -0
  62. package/esm2020/lib/resources/types/value.mjs +41 -0
  63. package/esm2020/lib/schema/annotation.mjs +37 -0
  64. package/esm2020/lib/schema/callable.mjs +62 -0
  65. package/esm2020/lib/schema/element.mjs +51 -0
  66. package/esm2020/lib/schema/entity-container.mjs +9 -0
  67. package/esm2020/lib/schema/entity-set.mjs +9 -0
  68. package/esm2020/lib/schema/enum-type.mjs +71 -0
  69. package/{esm2015/lib/schema/index.js → esm2020/lib/schema/index.mjs} +2 -1
  70. package/esm2020/lib/schema/parsers/callable.mjs +113 -0
  71. package/esm2020/lib/schema/parsers/edm.mjs +95 -0
  72. package/esm2020/lib/schema/parsers/enum-type.mjs +107 -0
  73. package/esm2020/lib/schema/parsers/index.mjs +5 -0
  74. package/esm2020/lib/schema/parsers/structured-type.mjs +412 -0
  75. package/esm2020/lib/schema/schema.mjs +61 -0
  76. package/esm2020/lib/schema/structured-type.mjs +198 -0
  77. package/esm2020/lib/services/base.mjs +29 -0
  78. package/esm2020/lib/services/entity-set.mjs +143 -0
  79. package/esm2020/lib/services/entity.mjs +12 -0
  80. package/{esm2015/lib/services/factory.js → esm2020/lib/services/factory.mjs} +3 -3
  81. package/{esm2015/lib/services/index.js → esm2020/lib/services/index.mjs} +0 -0
  82. package/esm2020/lib/services/singleton.mjs +48 -0
  83. package/{esm2015/lib/settings.js → esm2020/lib/settings.mjs} +1 -1
  84. package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
  85. package/esm2020/lib/types.mjs +37 -0
  86. package/esm2020/lib/utils/arraybuffers.mjs +46 -0
  87. package/{esm2015/lib/utils/dates.js → esm2020/lib/utils/dates.mjs} +0 -0
  88. package/esm2020/lib/utils/durations.mjs +40 -0
  89. package/{esm2015/lib/utils/enums.js → esm2020/lib/utils/enums.mjs} +0 -0
  90. package/esm2020/lib/utils/http.mjs +93 -0
  91. package/esm2020/lib/utils/index.mjs +10 -0
  92. package/esm2020/lib/utils/objects.mjs +195 -0
  93. package/esm2020/lib/utils/odata.mjs +22 -0
  94. package/esm2020/lib/utils/strings.mjs +20 -0
  95. package/esm2020/lib/utils/types.mjs +134 -0
  96. package/{esm2015/lib/utils/urls.js → esm2020/lib/utils/urls.mjs} +0 -0
  97. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  98. package/fesm2015/{angular-odata.js → angular-odata.mjs} +5068 -3943
  99. package/fesm2015/angular-odata.mjs.map +1 -0
  100. package/fesm2020/angular-odata.mjs +10274 -0
  101. package/fesm2020/angular-odata.mjs.map +1 -0
  102. package/lib/api.d.ts +17 -16
  103. package/lib/cache/cache.d.ts +2 -2
  104. package/lib/client.d.ts +93 -18
  105. package/lib/constants.d.ts +6 -2
  106. package/lib/helper.d.ts +3 -3
  107. package/lib/index.d.ts +0 -1
  108. package/lib/models/collection.d.ts +36 -47
  109. package/lib/models/model.d.ts +47 -40
  110. package/lib/models/options.d.ts +53 -52
  111. package/lib/options.d.ts +50 -2
  112. package/lib/resources/index.d.ts +2 -3
  113. package/lib/resources/path/handlers.d.ts +27 -0
  114. package/lib/resources/path/index.d.ts +2 -0
  115. package/lib/resources/{path-segments.d.ts → path/segments.d.ts} +4 -16
  116. package/lib/resources/{builder.d.ts → query/builder.d.ts} +12 -7
  117. package/lib/resources/query/expressions.d.ts +63 -0
  118. package/lib/resources/query/handlers.d.ts +89 -0
  119. package/lib/resources/query/index.d.ts +3 -0
  120. package/lib/resources/query/options.d.ts +38 -0
  121. package/lib/resources/query/syntax.d.ts +175 -0
  122. package/lib/resources/request.d.ts +8 -6
  123. package/lib/resources/resource.d.ts +49 -55
  124. package/lib/resources/responses/metadata.d.ts +1 -1
  125. package/lib/resources/responses/types.d.ts +1 -1
  126. package/lib/resources/types/action.d.ts +55 -69
  127. package/lib/resources/types/batch.d.ts +13 -8
  128. package/lib/resources/types/count.d.ts +16 -19
  129. package/lib/resources/types/entity-set.d.ts +24 -62
  130. package/lib/resources/types/entity.d.ts +35 -43
  131. package/lib/resources/types/function.d.ts +63 -71
  132. package/lib/resources/types/media.d.ts +20 -22
  133. package/lib/resources/types/metadata.d.ts +5 -7
  134. package/lib/resources/types/navigation-property.d.ts +100 -85
  135. package/lib/resources/types/options.d.ts +8 -8
  136. package/lib/resources/types/property.d.ts +63 -73
  137. package/lib/resources/types/reference.d.ts +72 -16
  138. package/lib/resources/types/singleton.d.ts +75 -43
  139. package/lib/resources/types/value.d.ts +18 -9
  140. package/lib/schema/annotation.d.ts +18 -0
  141. package/lib/schema/callable.d.ts +27 -11
  142. package/lib/schema/element.d.ts +39 -0
  143. package/lib/schema/entity-container.d.ts +3 -8
  144. package/lib/schema/entity-set.d.ts +3 -9
  145. package/lib/schema/enum-type.d.ts +41 -14
  146. package/lib/schema/index.d.ts +1 -0
  147. package/lib/{parsers → schema/parsers}/callable.d.ts +2 -2
  148. package/lib/schema/parsers/edm.d.ts +4 -0
  149. package/lib/{parsers → schema/parsers}/enum-type.d.ts +13 -7
  150. package/lib/{parsers → schema/parsers}/index.d.ts +0 -0
  151. package/lib/{parsers → schema/parsers}/structured-type.d.ts +14 -9
  152. package/lib/schema/schema.d.ts +6 -8
  153. package/lib/schema/structured-type.d.ts +97 -18
  154. package/lib/services/base.d.ts +12 -12
  155. package/lib/services/entity-set.d.ts +15 -12
  156. package/lib/services/entity.d.ts +4 -1
  157. package/lib/services/singleton.d.ts +6 -3
  158. package/lib/settings.d.ts +4 -4
  159. package/lib/types.d.ts +7 -3
  160. package/lib/utils/arraybuffers.d.ts +4 -0
  161. package/lib/{parsers/edm.d.ts → utils/durations.d.ts} +3 -3
  162. package/lib/utils/http.d.ts +9 -0
  163. package/lib/utils/index.d.ts +5 -2
  164. package/lib/utils/objects.d.ts +1 -1
  165. package/lib/utils/strings.d.ts +4 -0
  166. package/lib/utils/types.d.ts +2 -0
  167. package/package.json +21 -8
  168. package/bundles/angular-odata.umd.js +0 -10756
  169. package/bundles/angular-odata.umd.js.map +0 -1
  170. package/esm2015/lib/api.js +0 -251
  171. package/esm2015/lib/client.js +0 -197
  172. package/esm2015/lib/helper.js +0 -269
  173. package/esm2015/lib/index.js +0 -21
  174. package/esm2015/lib/models/collection.js +0 -660
  175. package/esm2015/lib/models/model.js +0 -421
  176. package/esm2015/lib/models/options.js +0 -889
  177. package/esm2015/lib/options.js +0 -31
  178. package/esm2015/lib/parsers/callable.js +0 -110
  179. package/esm2015/lib/parsers/edm.js +0 -310
  180. package/esm2015/lib/parsers/enum-type.js +0 -97
  181. package/esm2015/lib/parsers/index.js +0 -5
  182. package/esm2015/lib/parsers/structured-type.js +0 -394
  183. package/esm2015/lib/resources/builder.js +0 -537
  184. package/esm2015/lib/resources/index.js +0 -8
  185. package/esm2015/lib/resources/path-segments.js +0 -156
  186. package/esm2015/lib/resources/query-options.js +0 -157
  187. package/esm2015/lib/resources/request.js +0 -141
  188. package/esm2015/lib/resources/resource.js +0 -328
  189. package/esm2015/lib/resources/responses/annotations.js +0 -121
  190. package/esm2015/lib/resources/responses/metadata.js +0 -548
  191. package/esm2015/lib/resources/responses/response.js +0 -170
  192. package/esm2015/lib/resources/types/action.js +0 -146
  193. package/esm2015/lib/resources/types/batch.js +0 -330
  194. package/esm2015/lib/resources/types/count.js +0 -50
  195. package/esm2015/lib/resources/types/entity-set.js +0 -164
  196. package/esm2015/lib/resources/types/entity.js +0 -158
  197. package/esm2015/lib/resources/types/function.js +0 -166
  198. package/esm2015/lib/resources/types/media.js +0 -46
  199. package/esm2015/lib/resources/types/metadata.js +0 -36
  200. package/esm2015/lib/resources/types/navigation-property.js +0 -214
  201. package/esm2015/lib/resources/types/options.js +0 -2
  202. package/esm2015/lib/resources/types/property.js +0 -190
  203. package/esm2015/lib/resources/types/reference.js +0 -50
  204. package/esm2015/lib/resources/types/singleton.js +0 -147
  205. package/esm2015/lib/resources/types/value.js +0 -30
  206. package/esm2015/lib/schema/annotation.js +0 -7
  207. package/esm2015/lib/schema/callable.js +0 -50
  208. package/esm2015/lib/schema/entity-container.js +0 -17
  209. package/esm2015/lib/schema/entity-set.js +0 -23
  210. package/esm2015/lib/schema/enum-type.js +0 -68
  211. package/esm2015/lib/schema/schema.js +0 -55
  212. package/esm2015/lib/schema/structured-type.js +0 -107
  213. package/esm2015/lib/services/base.js +0 -23
  214. package/esm2015/lib/services/entity-set.js +0 -143
  215. package/esm2015/lib/services/entity.js +0 -10
  216. package/esm2015/lib/services/singleton.js +0 -46
  217. package/esm2015/lib/types.js +0 -37
  218. package/esm2015/lib/utils/http.js +0 -59
  219. package/esm2015/lib/utils/index.js +0 -7
  220. package/esm2015/lib/utils/objects.js +0 -140
  221. package/esm2015/lib/utils/odata.js +0 -21
  222. package/esm2015/lib/utils/types.js +0 -103
  223. package/fesm2015/angular-odata.js.map +0 -1
  224. package/lib/resources/query-options.d.ts +0 -57
@@ -1,31 +0,0 @@
1
- import { DEFAULT_FETCH_POLICY, DEFAULT_STRIP_METADATA, DEFAULT_VERSION, } from './constants';
2
- import { ODataHelper } from './helper';
3
- export class ODataApiOptions {
4
- constructor(config) {
5
- this.etag = { ifMatch: true, ifNoneMatch: false };
6
- this.version = config.version || DEFAULT_VERSION;
7
- this.stringAsEnum = config.stringAsEnum;
8
- this.params = config.params || {};
9
- this.headers = config.headers || {};
10
- this.withCredentials = config.withCredentials;
11
- this.stripMetadata = config.stripMetadata || DEFAULT_STRIP_METADATA;
12
- this.fetchPolicy = config.fetchPolicy || DEFAULT_FETCH_POLICY;
13
- this.bodyQueryOptions = config.bodyQueryOptions || [];
14
- this.accept = config.accept;
15
- Object.assign(this.etag, config.etag || {});
16
- this.prefer = config.prefer;
17
- }
18
- get helper() {
19
- return ODataHelper[this.version];
20
- }
21
- }
22
- export class ODataParserOptions {
23
- constructor(config) {
24
- this.version = config.version || DEFAULT_VERSION;
25
- this.stringAsEnum = config.stringAsEnum;
26
- }
27
- get helper() {
28
- return ODataHelper[this.version];
29
- }
30
- }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLGVBQWUsR0FDaEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQVd2QyxNQUFNLE9BQU8sZUFBZTtJQWdDMUIsWUFBWSxNQUFrQjtRQWpCOUIsU0FBSSxHQUtBLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFheEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLGVBQWUsQ0FBQztRQUNqRCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUM5QyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLElBQUksc0JBQXNCLENBQUM7UUFDcEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLG9CQUFvQixDQUFDO1FBQzlELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sa0JBQWtCO0lBSTdCLFlBQVksTUFBZTtRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksZUFBZSxDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERFRkFVTFRfRkVUQ0hfUE9MSUNZLFxuICBERUZBVUxUX1NUUklQX01FVEFEQVRBLFxuICBERUZBVUxUX1ZFUlNJT04sXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9EYXRhSGVscGVyIH0gZnJvbSAnLi9oZWxwZXInO1xuaW1wb3J0IHtcbiAgQXBpT3B0aW9ucyxcbiAgRmV0Y2hQb2xpY3ksXG4gIE9EYXRhTWV0YWRhdGFUeXBlLFxuICBPRGF0YVZlcnNpb24sXG4gIE9wdGlvbnMsXG4gIE9wdGlvbnNIZWxwZXIsXG4gIFF1ZXJ5T3B0aW9uTmFtZXMsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgT0RhdGFBcGlPcHRpb25zIGltcGxlbWVudHMgQXBpT3B0aW9ucywgT3B0aW9uc0hlbHBlciB7XG4gIHZlcnNpb246IE9EYXRhVmVyc2lvbjtcbiAgc3RyaW5nQXNFbnVtPzogYm9vbGVhbjtcbiAgc3RyaXBNZXRhZGF0YTogT0RhdGFNZXRhZGF0YVR5cGU7XG4gIGZldGNoUG9saWN5OiBGZXRjaFBvbGljeTtcbiAgc3RyZWFtaW5nPzogYm9vbGVhbjtcbiAgLy8gSHR0cFxuICBwYXJhbXM6IHsgW3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuICBoZWFkZXJzOiB7IFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfTtcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgYm9keVF1ZXJ5T3B0aW9uczogUXVlcnlPcHRpb25OYW1lc1tdO1xuICBhY2NlcHQ/OiB7XG4gICAgbWV0YWRhdGE/OiBPRGF0YU1ldGFkYXRhVHlwZTtcbiAgICBpZWVlNzU0Q29tcGF0aWJsZT86IGJvb2xlYW47XG4gIH07XG4gIGV0YWc6IHtcbiAgICAvL2h0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL29kYXRhL29kYXRhL3Y0LjAvZXJyYXRhMDIvb3MvY29tcGxldGUvcGFydDEtcHJvdG9jb2wvb2RhdGEtdjQuMC1lcnJhdGEwMi1vcy1wYXJ0MS1wcm90b2NvbC1jb21wbGV0ZS5odG1sI19Ub2M0MDYzOTgyMjlcbiAgICBpZk1hdGNoOiBib29sZWFuO1xuICAgIC8vaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvb2RhdGEvb2RhdGEvdjQuMC9lcnJhdGEwMi9vcy9jb21wbGV0ZS9wYXJ0MS1wcm90b2NvbC9vZGF0YS12NC4wLWVycmF0YTAyLW9zLXBhcnQxLXByb3RvY29sLWNvbXBsZXRlLmh0bWwjX1RvYzQwNjM5ODIzMFxuICAgIGlmTm9uZU1hdGNoOiBib29sZWFuO1xuICB9ID0geyBpZk1hdGNoOiB0cnVlLCBpZk5vbmVNYXRjaDogZmFsc2UgfTtcbiAgcHJlZmVyPzoge1xuICAgIC8vaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvb2RhdGEvb2RhdGEvdjQuMC9lcnJhdGEwMi9vcy9jb21wbGV0ZS9wYXJ0MS1wcm90b2NvbC9vZGF0YS12NC4wLWVycmF0YTAyLW9zLXBhcnQxLXByb3RvY29sLWNvbXBsZXRlLmh0bWwjX1RvYzQwNjM5ODIzOFxuICAgIG1heFBhZ2VTaXplPzogbnVtYmVyO1xuICAgIC8vaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvb2RhdGEvb2RhdGEvdjQuMC9lcnJhdGEwMi9vcy9jb21wbGV0ZS9wYXJ0MS1wcm90b2NvbC9vZGF0YS12NC4wLWVycmF0YTAyLW9zLXBhcnQxLXByb3RvY29sLWNvbXBsZXRlLmh0bWwjX1RvYzQwNjM5ODI0MFxuICAgIHJldHVybj86ICdyZXByZXNlbnRhdGlvbicgfCAnbWluaW1hbCc7XG4gICAgLy9odHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9vZGF0YS9vZGF0YS92NC4wL2VycmF0YTAyL29zL2NvbXBsZXRlL3BhcnQxLXByb3RvY29sL29kYXRhLXY0LjAtZXJyYXRhMDItb3MtcGFydDEtcHJvdG9jb2wtY29tcGxldGUuaHRtbCNfVG9jNDA2Mzk4MjM2XG4gICAgY29udGludWVPbkVycm9yPzogYm9vbGVhbjtcbiAgICAvL2h0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL29kYXRhL29kYXRhL3Y0LjAvZXJyYXRhMDIvb3MvY29tcGxldGUvcGFydDEtcHJvdG9jb2wvb2RhdGEtdjQuMC1lcnJhdGEwMi1vcy1wYXJ0MS1wcm90b2NvbC1jb21wbGV0ZS5odG1sI19Ub2M0MDYzOTgyMzdcbiAgICBpbmNsdWRlQW5ub3RhdGlvbnM/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBBcGlPcHRpb25zKSB7XG4gICAgdGhpcy52ZXJzaW9uID0gY29uZmlnLnZlcnNpb24gfHwgREVGQVVMVF9WRVJTSU9OO1xuICAgIHRoaXMuc3RyaW5nQXNFbnVtID0gY29uZmlnLnN0cmluZ0FzRW51bTtcbiAgICB0aGlzLnBhcmFtcyA9IGNvbmZpZy5wYXJhbXMgfHwge307XG4gICAgdGhpcy5oZWFkZXJzID0gY29uZmlnLmhlYWRlcnMgfHwge307XG4gICAgdGhpcy53aXRoQ3JlZGVudGlhbHMgPSBjb25maWcud2l0aENyZWRlbnRpYWxzO1xuICAgIHRoaXMuc3RyaXBNZXRhZGF0YSA9IGNvbmZpZy5zdHJpcE1ldGFkYXRhIHx8IERFRkFVTFRfU1RSSVBfTUVUQURBVEE7XG4gICAgdGhpcy5mZXRjaFBvbGljeSA9IGNvbmZpZy5mZXRjaFBvbGljeSB8fCBERUZBVUxUX0ZFVENIX1BPTElDWTtcbiAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMgPSBjb25maWcuYm9keVF1ZXJ5T3B0aW9ucyB8fCBbXTtcbiAgICB0aGlzLmFjY2VwdCA9IGNvbmZpZy5hY2NlcHQ7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLmV0YWcsIGNvbmZpZy5ldGFnIHx8IHt9KTtcbiAgICB0aGlzLnByZWZlciA9IGNvbmZpZy5wcmVmZXI7XG4gIH1cblxuICBnZXQgaGVscGVyKCkge1xuICAgIHJldHVybiBPRGF0YUhlbHBlclt0aGlzLnZlcnNpb25dO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVBhcnNlck9wdGlvbnMgaW1wbGVtZW50cyBPcHRpb25zSGVscGVyIHtcbiAgdmVyc2lvbjogT0RhdGFWZXJzaW9uO1xuICBzdHJpbmdBc0VudW0/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogT3B0aW9ucykge1xuICAgIHRoaXMudmVyc2lvbiA9IGNvbmZpZy52ZXJzaW9uIHx8IERFRkFVTFRfVkVSU0lPTjtcbiAgICB0aGlzLnN0cmluZ0FzRW51bSA9IGNvbmZpZy5zdHJpbmdBc0VudW07XG4gIH1cblxuICBnZXQgaGVscGVyKCkge1xuICAgIHJldHVybiBPRGF0YUhlbHBlclt0aGlzLnZlcnNpb25dO1xuICB9XG59XG4iXX0=
@@ -1,110 +0,0 @@
1
- import { CALLABLE_BINDING_PARAMETER } from '../constants';
2
- import { ODataParserOptions } from '../options';
3
- import { NONE_PARSER, } from '../types';
4
- import { ODataEnumTypeParser } from './enum-type';
5
- import { ODataStructuredTypeParser } from './structured-type';
6
- export class ODataParameterParser {
7
- constructor(name, parameter) {
8
- this.name = name;
9
- this.type = parameter.type;
10
- this.parser = NONE_PARSER;
11
- Object.assign(this, parameter);
12
- }
13
- serialize(value, options) {
14
- const parserOptions = options !== undefined
15
- ? new ODataParserOptions(options)
16
- : this.optionsHelper;
17
- return Array.isArray(value)
18
- ? value.map((v) => this.parser.serialize(v, parserOptions))
19
- : this.parser.serialize(value, parserOptions);
20
- }
21
- //Encode
22
- encode(value, options) {
23
- const parserOptions = options !== undefined
24
- ? new ODataParserOptions(options)
25
- : this.optionsHelper;
26
- return Array.isArray(value)
27
- ? value.map((v) => this.parser.encode(v, parserOptions))
28
- : this.parser.encode(value, parserOptions);
29
- }
30
- configure({ parserForType, options, }) {
31
- this.optionsHelper = options;
32
- this.parser = parserForType(this.type);
33
- }
34
- isEdmType() {
35
- return this.type.startsWith('Edm.');
36
- }
37
- isEnumType() {
38
- return this.parser instanceof ODataEnumTypeParser;
39
- }
40
- enum() {
41
- if (!this.isEnumType())
42
- throw new Error('Field are not EnumType');
43
- return this.parser;
44
- }
45
- isStructuredType() {
46
- return this.parser instanceof ODataStructuredTypeParser;
47
- }
48
- structured() {
49
- if (!this.isStructuredType())
50
- throw new Error('Field are not StrucuturedType');
51
- return this.parser;
52
- }
53
- }
54
- export class ODataCallableParser {
55
- constructor(config, namespace, alias) {
56
- this.name = config.name;
57
- this.namespace = namespace;
58
- this.alias = alias;
59
- this.return = config.return;
60
- this.parser = NONE_PARSER;
61
- this.parameters = Object.entries(config.parameters || []).map(([name, p]) => new ODataParameterParser(name, p));
62
- }
63
- isTypeOf(type) {
64
- var names = [`${this.namespace}.${this.name}`];
65
- if (this.alias)
66
- names.push(`${this.alias}.${this.name}`);
67
- return names.indexOf(type) !== -1;
68
- }
69
- // Deserialize
70
- deserialize(value, options) {
71
- const parserOptions = options !== undefined
72
- ? new ODataParserOptions(options)
73
- : this.optionsHelper;
74
- return this.parser.deserialize(value, parserOptions);
75
- }
76
- // Serialize
77
- serialize(params, options) {
78
- const parserOptions = options !== undefined
79
- ? new ODataParserOptions(options)
80
- : this.optionsHelper;
81
- return Object.assign({}, this.parameters
82
- .filter((p) => p.name !== CALLABLE_BINDING_PARAMETER)
83
- .filter((p) => p.name in params && params[p.name] !== undefined)
84
- .reduce((acc, p) => Object.assign(acc, {
85
- [p.name]: p.serialize(params[p.name], parserOptions),
86
- }), {}));
87
- }
88
- //Encode
89
- encode(params, options) {
90
- const parserOptions = options !== undefined
91
- ? new ODataParserOptions(options)
92
- : this.optionsHelper;
93
- return Object.assign({}, this.parameters
94
- .filter((p) => p.name !== CALLABLE_BINDING_PARAMETER)
95
- .filter((p) => p.name in params && params[p.name] !== undefined)
96
- .reduce((acc, p) => Object.assign(acc, {
97
- [p.name]: p.encode(params[p.name], parserOptions),
98
- }), {}));
99
- }
100
- configure({ parserForType, options, }) {
101
- this.optionsHelper = options;
102
- if (this.return)
103
- this.parser = parserForType(this.return.type) || NONE_PARSER;
104
- this.parameters.forEach((p) => p.configure({ parserForType, options }));
105
- }
106
- binding() {
107
- return this.parameters.find((p) => p.name === CALLABLE_BINDING_PARAMETER);
108
- }
109
- }
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsbGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcGFyc2Vycy9jYWxsYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hELE9BQU8sRUFLTCxXQUFXLEdBR1osTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTlELE1BQU0sT0FBTyxvQkFBb0I7SUFRL0IsWUFBWSxJQUFZLEVBQUUsU0FBb0I7UUFDNUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBUSxFQUFFLE9BQWlCO1FBQ25DLE1BQU0sYUFBYSxHQUNqQixPQUFPLEtBQUssU0FBUztZQUNuQixDQUFDLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7WUFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN6QixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFD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QUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSywwQkFBMEIsQ0FBQyxDQUFDO0lBQzVFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENBTExBQkxFX0JJTkRJTkdfUEFSQU1FVEVSIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9EYXRhUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4uL29wdGlvbnMnO1xuaW1wb3J0IHtcbiAgUGFyc2VyLFxuICBQYXJhbWV0ZXIsXG4gIENhbGxhYmxlQ29uZmlnLFxuICBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucyxcbiAgTk9ORV9QQVJTRVIsXG4gIE9wdGlvbnNIZWxwZXIsXG4gIE9wdGlvbnMsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IE9EYXRhRW51bVR5cGVQYXJzZXIgfSBmcm9tICcuL2VudW0tdHlwZSc7XG5pbXBvcnQgeyBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyIH0gZnJvbSAnLi9zdHJ1Y3R1cmVkLXR5cGUnO1xuXG5leHBvcnQgY2xhc3MgT0RhdGFQYXJhbWV0ZXJQYXJzZXI8VD4ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgcHJpdmF0ZSBwYXJzZXI6IFBhcnNlcjxUPjtcbiAgY29sbGVjdGlvbj86IGJvb2xlYW47XG4gIG51bGxhYmxlPzogYm9vbGVhbjtcbiAgb3B0aW9uc0hlbHBlcj86IE9wdGlvbnNIZWxwZXI7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBwYXJhbWV0ZXI6IFBhcmFtZXRlcikge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy50eXBlID0gcGFyYW1ldGVyLnR5cGU7XG4gICAgdGhpcy5wYXJzZXIgPSBOT05FX1BBUlNFUjtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHBhcmFtZXRlcik7XG4gIH1cblxuICBzZXJpYWxpemUodmFsdWU6IFQsIG9wdGlvbnM/OiBPcHRpb25zKTogYW55IHtcbiAgICBjb25zdCBwYXJzZXJPcHRpb25zID1cbiAgICAgIG9wdGlvbnMgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IG5ldyBPRGF0YVBhcnNlck9wdGlvbnMob3B0aW9ucylcbiAgICAgICAgOiB0aGlzLm9wdGlvbnNIZWxwZXI7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCgodikgPT4gdGhpcy5wYXJzZXIuc2VyaWFsaXplKHYsIHBhcnNlck9wdGlvbnMpKVxuICAgICAgOiB0aGlzLnBhcnNlci5zZXJpYWxpemUodmFsdWUsIHBhcnNlck9wdGlvbnMpO1xuICB9XG5cbiAgLy9FbmNvZGVcbiAgZW5jb2RlKHZhbHVlOiBhbnksIG9wdGlvbnM/OiBPcHRpb25zKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJzZXJPcHRpb25zID1cbiAgICAgIG9wdGlvbnMgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IG5ldyBPRGF0YVBhcnNlck9wdGlvbnMob3B0aW9ucylcbiAgICAgICAgOiB0aGlzLm9wdGlvbnNIZWxwZXI7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCgodikgPT4gdGhpcy5wYXJzZXIuZW5jb2RlKHYsIHBhcnNlck9wdGlvbnMpKVxuICAgICAgOiB0aGlzLnBhcnNlci5lbmNvZGUodmFsdWUsIHBhcnNlck9wdGlvbnMpO1xuICB9XG5cbiAgY29uZmlndXJlKHtcbiAgICBwYXJzZXJGb3JUeXBlLFxuICAgIG9wdGlvbnMsXG4gIH06IHtcbiAgICBwYXJzZXJGb3JUeXBlOiAodHlwZTogc3RyaW5nKSA9PiBQYXJzZXI8YW55PjtcbiAgICBvcHRpb25zOiBPcHRpb25zSGVscGVyO1xuICB9KSB7XG4gICAgdGhpcy5vcHRpb25zSGVscGVyID0gb3B0aW9ucztcbiAgICB0aGlzLnBhcnNlciA9IHBhcnNlckZvclR5cGUodGhpcy50eXBlKTtcbiAgfVxuXG4gIGlzRWRtVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlLnN0YXJ0c1dpdGgoJ0VkbS4nKTtcbiAgfVxuXG4gIGlzRW51bVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyIGluc3RhbmNlb2YgT0RhdGFFbnVtVHlwZVBhcnNlcjtcbiAgfVxuXG4gIGVudW0oKSB7XG4gICAgaWYgKCF0aGlzLmlzRW51bVR5cGUoKSkgdGhyb3cgbmV3IEVycm9yKCdGaWVsZCBhcmUgbm90IEVudW1UeXBlJyk7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyIGFzIE9EYXRhRW51bVR5cGVQYXJzZXI8VD47XG4gIH1cblxuICBpc1N0cnVjdHVyZWRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlciBpbnN0YW5jZW9mIE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXI7XG4gIH1cblxuICBzdHJ1Y3R1cmVkKCkge1xuICAgIGlmICghdGhpcy5pc1N0cnVjdHVyZWRUeXBlKCkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpZWxkIGFyZSBub3QgU3RydWN1dHVyZWRUeXBlJyk7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyIGFzIE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXI8VD47XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhQ2FsbGFibGVQYXJzZXI8Uj4gaW1wbGVtZW50cyBQYXJzZXI8Uj4ge1xuICBuYW1lOiBzdHJpbmc7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICBhbGlhcz86IHN0cmluZztcbiAgcmV0dXJuPzogeyB0eXBlOiBzdHJpbmc7IGNhbGxhYmxlPzogYm9vbGVhbiB9O1xuICBwYXJzZXI6IFBhcnNlcjxhbnk+O1xuICBwYXJhbWV0ZXJzOiBPRGF0YVBhcmFtZXRlclBhcnNlcjxhbnk+W107XG4gIG9wdGlvbnNIZWxwZXI/OiBPcHRpb25zSGVscGVyO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQ2FsbGFibGVDb25maWcsIG5hbWVzcGFjZTogc3RyaW5nLCBhbGlhcz86IHN0cmluZykge1xuICAgIHRoaXMubmFtZSA9IGNvbmZpZy5uYW1lO1xuICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIHRoaXMuYWxpYXMgPSBhbGlhcztcbiAgICB0aGlzLnJldHVybiA9IGNvbmZpZy5yZXR1cm47XG4gICAgdGhpcy5wYXJzZXIgPSBOT05FX1BBUlNFUjtcbiAgICB0aGlzLnBhcmFtZXRlcnMgPSBPYmplY3QuZW50cmllcyhjb25maWcucGFyYW1ldGVycyB8fCBbXSkubWFwKFxuICAgICAgKFtuYW1lLCBwXSkgPT4gbmV3IE9EYXRhUGFyYW1ldGVyUGFyc2VyKG5hbWUsIHAgYXMgUGFyYW1ldGVyKVxuICAgICk7XG4gIH1cblxuICBpc1R5cGVPZih0eXBlOiBzdHJpbmcpIHtcbiAgICB2YXIgbmFtZXMgPSBbYCR7dGhpcy5uYW1lc3BhY2V9LiR7dGhpcy5uYW1lfWBdO1xuICAgIGlmICh0aGlzLmFsaWFzKSBuYW1lcy5wdXNoKGAke3RoaXMuYWxpYXN9LiR7dGhpcy5uYW1lfWApO1xuICAgIHJldHVybiBuYW1lcy5pbmRleE9mKHR5cGUpICE9PSAtMTtcbiAgfVxuXG4gIC8vIERlc2VyaWFsaXplXG4gIGRlc2VyaWFsaXplKHZhbHVlOiBhbnksIG9wdGlvbnM/OiBPcHRpb25zKTogUiB7XG4gICAgY29uc3QgcGFyc2VyT3B0aW9ucyA9XG4gICAgICBvcHRpb25zICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBuZXcgT0RhdGFQYXJzZXJPcHRpb25zKG9wdGlvbnMpXG4gICAgICAgIDogdGhpcy5vcHRpb25zSGVscGVyO1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5kZXNlcmlhbGl6ZSh2YWx1ZSwgcGFyc2VyT3B0aW9ucyk7XG4gIH1cblxuICAvLyBTZXJpYWxpemVcbiAgc2VyaWFsaXplKHBhcmFtczogYW55LCBvcHRpb25zPzogT3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgcGFyc2VyT3B0aW9ucyA9XG4gICAgICBvcHRpb25zICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBuZXcgT0RhdGFQYXJzZXJPcHRpb25zKG9wdGlvbnMpXG4gICAgICAgIDogdGhpcy5vcHRpb25zSGVscGVyO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICB0aGlzLnBhcmFtZXRlcnNcbiAgICAgICAgLmZpbHRlcigocCkgPT4gcC5uYW1lICE9PSBDQUxMQUJMRV9CSU5ESU5HX1BBUkFNRVRFUilcbiAgICAgICAgLmZpbHRlcigocCkgPT4gcC5uYW1lIGluIHBhcmFtcyAmJiBwYXJhbXNbcC5uYW1lXSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAucmVkdWNlKFxuICAgICAgICAgIChhY2MsIHApID0+XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGFjYywge1xuICAgICAgICAgICAgICBbcC5uYW1lXTogcC5zZXJpYWxpemUocGFyYW1zW3AubmFtZV0sIHBhcnNlck9wdGlvbnMpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAge31cbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvL0VuY29kZVxuICBlbmNvZGUocGFyYW1zOiBhbnksIG9wdGlvbnM/OiBPcHRpb25zKTogYW55IHtcbiAgICBjb25zdCBwYXJzZXJPcHRpb25zID1cbiAgICAgIG9wdGlvbnMgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IG5ldyBPRGF0YVBhcnNlck9wdGlvbnMob3B0aW9ucylcbiAgICAgICAgOiB0aGlzLm9wdGlvbnNIZWxwZXI7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIHRoaXMucGFyYW1ldGVyc1xuICAgICAgICAuZmlsdGVyKChwKSA9PiBwLm5hbWUgIT09IENBTExBQkxFX0JJTkRJTkdfUEFSQU1FVEVSKVxuICAgICAgICAuZmlsdGVyKChwKSA9PiBwLm5hbWUgaW4gcGFyYW1zICYmIHBhcmFtc1twLm5hbWVdICE9PSB1bmRlZmluZWQpXG4gICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgKGFjYywgcCkgPT5cbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYWNjLCB7XG4gICAgICAgICAgICAgIFtwLm5hbWVdOiBwLmVuY29kZShwYXJhbXNbcC5uYW1lXSwgcGFyc2VyT3B0aW9ucyksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB7fVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGNvbmZpZ3VyZSh7XG4gICAgcGFyc2VyRm9yVHlwZSxcbiAgICBvcHRpb25zLFxuICB9OiB7XG4gICAgcGFyc2VyRm9yVHlwZTogKHR5cGU6IHN0cmluZykgPT4gUGFyc2VyPGFueT47XG4gICAgb3B0aW9uczogT3B0aW9uc0hlbHBlcjtcbiAgfSkge1xuICAgIHRoaXMub3B0aW9uc0hlbHBlciA9IG9wdGlvbnM7XG4gICAgaWYgKHRoaXMucmV0dXJuKVxuICAgICAgdGhpcy5wYXJzZXIgPSBwYXJzZXJGb3JUeXBlKHRoaXMucmV0dXJuLnR5cGUpIHx8IE5PTkVfUEFSU0VSO1xuICAgIHRoaXMucGFyYW1ldGVycy5mb3JFYWNoKChwKSA9PiBwLmNvbmZpZ3VyZSh7IHBhcnNlckZvclR5cGUsIG9wdGlvbnMgfSkpO1xuICB9XG5cbiAgYmluZGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gQ0FMTEFCTEVfQklORElOR19QQVJBTUVURVIpO1xuICB9XG59XG4iXX0=
@@ -1,310 +0,0 @@
1
- import { binary, duration, raw } from '../resources/builder';
2
- //https://github.com/niklasvh/base64-arraybuffer
3
- const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
4
- // Use a lookup table to find the index.
5
- const lookup = new Uint8Array(256);
6
- for (var i = 0; i < chars.length; i++) {
7
- lookup[chars.charCodeAt(i)] = i;
8
- }
9
- export const EDM_PARSERS = {
10
- 'Edm.Guid': {
11
- deserialize(value, options) {
12
- return value;
13
- },
14
- serialize(value, options) {
15
- return value;
16
- },
17
- encode(value, options) {
18
- return Array.isArray(value) ? value.map((v) => raw(v)) : raw(value);
19
- },
20
- },
21
- 'Edm.Date': {
22
- deserialize(value, options) {
23
- //TODO: Check valid input for date
24
- const _deserialize = (v) => new Date(`${v}T00:00:00.000Z`);
25
- return Array.isArray(value)
26
- ? value.map(_deserialize)
27
- : _deserialize(value);
28
- },
29
- serialize(value, options) {
30
- const _serialize = (v) => v.toISOString().substring(0, 10);
31
- return Array.isArray(value) ? value.map(_serialize) : _serialize(value);
32
- },
33
- encode(value, options) {
34
- const _encode = (v) => v.toISOString().substring(0, 10);
35
- return Array.isArray(value)
36
- ? value.map((v) => raw(_encode(v)))
37
- : raw(_encode(value));
38
- },
39
- },
40
- 'Edm.TimeOfDay': {
41
- deserialize(value, options) {
42
- //TODO: Check valid input for time of day
43
- const _deserialize = (v) => new Date(`1970-01-01T${v}Z`);
44
- return Array.isArray(value)
45
- ? value.map(_deserialize)
46
- : _deserialize(value);
47
- },
48
- serialize(value, options) {
49
- const _serialize = (v) => v.toISOString().substring(11, 23);
50
- return Array.isArray(value) ? value.map(_serialize) : _serialize(value);
51
- },
52
- encode(value, options) {
53
- const _encode = (v) => v.toISOString().substring(11, 23);
54
- return Array.isArray(value)
55
- ? value.map((v) => raw(_encode(v)))
56
- : raw(_encode(value));
57
- },
58
- },
59
- 'Edm.DateTimeOffset': {
60
- deserialize(value, options) {
61
- const _deserialize = (v) => new Date(v);
62
- return Array.isArray(value)
63
- ? value.map(_deserialize)
64
- : _deserialize(value);
65
- },
66
- serialize(value, options) {
67
- const _serialize = (v) => v.toISOString();
68
- return Array.isArray(value) ? value.map(_serialize) : _serialize(value);
69
- },
70
- encode(value, options) {
71
- const _encode = (v) => v.toISOString();
72
- return Array.isArray(value)
73
- ? value.map((v) => raw(_encode(v)))
74
- : raw(_encode(value));
75
- },
76
- },
77
- 'Edm.Duration': {
78
- deserialize(value, options) {
79
- const _deserialize = (v) => {
80
- const matches = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/.exec(v);
81
- if (!matches || value.length < 3) {
82
- throw new TypeError(`duration invalid: "${value}". Must be a ISO 8601 duration. See https://en.wikipedia.org/wiki/ISO_8601#Durations`);
83
- }
84
- let duration = {};
85
- duration.sign = matches[1] === '-' ? -1 : 1;
86
- return [
87
- 'years',
88
- 'months',
89
- 'weeks',
90
- 'days',
91
- 'hours',
92
- 'minutes',
93
- 'seconds',
94
- ].reduce((acc, name, index) => {
95
- const v = parseFloat(matches[index + 2]);
96
- if (!Number.isNaN(v))
97
- acc[name] = v;
98
- return acc;
99
- }, duration);
100
- };
101
- return Array.isArray(value)
102
- ? value.map(_deserialize)
103
- : _deserialize(value);
104
- },
105
- serialize(value, options) {
106
- const _serialize = (v) => [
107
- v.sign === -1 ? '-' : '',
108
- 'P',
109
- v.years ? v.years + 'Y' : '',
110
- v.months ? v.months + 'M' : '',
111
- v.weeks ? v.weeks + 'W' : '',
112
- v.days ? v.days + 'D' : '',
113
- 'T',
114
- v.hours ? v.hours + 'H' : '',
115
- v.minutes ? v.minutes + 'M' : '',
116
- v.seconds ? v.seconds + 'S' : '',
117
- ].join('');
118
- return Array.isArray(value) ? value.map(_serialize) : _serialize(value);
119
- },
120
- encode(value, options) {
121
- const _encode = (v) => [
122
- v.sign === -1 ? '-' : '',
123
- 'P',
124
- v.years ? v.years + 'Y' : '',
125
- v.months ? v.months + 'M' : '',
126
- v.weeks ? v.weeks + 'W' : '',
127
- v.days ? v.days + 'D' : '',
128
- 'T',
129
- v.hours ? v.hours + 'H' : '',
130
- v.minutes ? v.minutes + 'M' : '',
131
- v.seconds ? v.seconds + 'S' : '',
132
- ].join('');
133
- return Array.isArray(value)
134
- ? value.map((v) => duration(_encode(v)))
135
- : duration(_encode(value));
136
- },
137
- },
138
- 'Edm.Decimal': {
139
- deserialize(value, options) {
140
- const _deserialize = (v) => {
141
- if (typeof v === 'string' && options.ieee754Compatible) {
142
- return parseFloat(v);
143
- }
144
- return v;
145
- };
146
- return Array.isArray(value)
147
- ? value.map(_deserialize)
148
- : _deserialize(value);
149
- },
150
- serialize(value, options) {
151
- const _serialize = (v) => {
152
- if (options.ieee754Compatible) {
153
- return parseFloat(v.toPrecision(options.field.precision)).toFixed(options.field.scale);
154
- }
155
- return v;
156
- };
157
- return Array.isArray(value) ? value.map(_serialize) : _serialize(value);
158
- },
159
- encode(value, options) {
160
- const _encode = (v) => {
161
- if (options.ieee754Compatible) {
162
- return parseFloat(v.toPrecision(options.field.precision)).toFixed(options.field.scale);
163
- }
164
- return v;
165
- };
166
- return Array.isArray(value)
167
- ? value.map((v) => raw(`${_encode(v)}`))
168
- : raw(`${_encode(value)}`);
169
- },
170
- },
171
- 'Edm.Double': {
172
- deserialize(value, options) {
173
- const _deserialize = (v) => v === 'INF' ? Infinity : v;
174
- return Array.isArray(value)
175
- ? value.map(_deserialize)
176
- : _deserialize(value);
177
- },
178
- serialize(value, options) {
179
- const _serialize = (v) => (v === Infinity ? 'INF' : v);
180
- return Array.isArray(value) ? value.map(_serialize) : _serialize(value);
181
- },
182
- encode(value, options) {
183
- const _encode = (v) => (v === Infinity ? 'INF' : v);
184
- return Array.isArray(value)
185
- ? value.map((v) => raw(`${_encode(v)}`))
186
- : raw(`${_encode(value)}`);
187
- },
188
- },
189
- 'Edm.Single': {
190
- deserialize(value, options) {
191
- const _deserialize = (v) => v === 'INF' ? Infinity : v;
192
- return Array.isArray(value)
193
- ? value.map(_deserialize)
194
- : _deserialize(value);
195
- },
196
- serialize(value, options) {
197
- const _serialize = (v) => (v === Infinity ? 'INF' : v);
198
- return Array.isArray(value) ? value.map(_serialize) : _serialize(value);
199
- },
200
- encode(value, options) {
201
- const _encode = (v) => (v === Infinity ? 'INF' : v);
202
- return Array.isArray(value)
203
- ? value.map((v) => raw(`${_encode(v)}`))
204
- : raw(`${_encode(value)}`);
205
- },
206
- },
207
- 'Edm.Binary': {
208
- deserialize(value, options) {
209
- const _deserialize = (v) => {
210
- var bufferLength = v.length * 0.75, len = v.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
211
- if (v[v.length - 1] === '=') {
212
- bufferLength--;
213
- if (v[v.length - 2] === '=') {
214
- bufferLength--;
215
- }
216
- }
217
- var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);
218
- for (i = 0; i < len; i += 4) {
219
- encoded1 = lookup[v.charCodeAt(i)];
220
- encoded2 = lookup[v.charCodeAt(i + 1)];
221
- encoded3 = lookup[v.charCodeAt(i + 2)];
222
- encoded4 = lookup[v.charCodeAt(i + 3)];
223
- bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
224
- bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
225
- bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
226
- }
227
- return arraybuffer;
228
- };
229
- return Array.isArray(value)
230
- ? value.map(_deserialize)
231
- : _deserialize(value);
232
- },
233
- serialize(value, options) {
234
- const _serialize = (v) => {
235
- var bytes = new Uint8Array(v), i, len = bytes.length, base64 = '';
236
- for (i = 0; i < len; i += 3) {
237
- base64 += chars[bytes[i] >> 2];
238
- base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
239
- base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
240
- base64 += chars[bytes[i + 2] & 63];
241
- }
242
- if (len % 3 === 2) {
243
- base64 = base64.substring(0, base64.length - 1) + '=';
244
- }
245
- else if (len % 3 === 1) {
246
- base64 = base64.substring(0, base64.length - 2) + '==';
247
- }
248
- return base64;
249
- };
250
- return Array.isArray(value) ? value.map(_serialize) : _serialize(value);
251
- },
252
- encode(value, options) {
253
- const _encode = (v) => {
254
- var bytes = new Uint8Array(v), i, len = bytes.length, base64 = '';
255
- for (i = 0; i < len; i += 3) {
256
- base64 += chars[bytes[i] >> 2];
257
- base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
258
- base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
259
- base64 += chars[bytes[i + 2] & 63];
260
- }
261
- if (len % 3 === 2) {
262
- base64 = base64.substring(0, base64.length - 1) + '=';
263
- }
264
- else if (len % 3 === 1) {
265
- base64 = base64.substring(0, base64.length - 2) + '==';
266
- }
267
- return base64;
268
- };
269
- return Array.isArray(value)
270
- ? value.map((v) => binary(_encode(v)))
271
- : binary(_encode(value));
272
- },
273
- },
274
- };
275
- /*
276
- Edm.Binary Binary data
277
- Edm.Boolean Binary-valued logic
278
- Edm.Byte Unsigned 8-bit integer
279
- Edm.Date Date without a time-zone offset
280
- Edm.DateTimeOffset Date and time with a time-zone offset, no leap seconds
281
- Edm.Decimal Numeric values with fixed precision and scale
282
- Edm.Double IEEE 754 binary64 floating-point number (15-17 decimal digits)
283
- Edm.Duration Signed duration in days, hours, minutes, and (sub)seconds
284
- Edm.Guid 16-byte (128-bit) unique identifier
285
- Edm.Int16 Signed 16-bit integer
286
- Edm.Int32 Signed 32-bit integer
287
- Edm.Int64 Signed 64-bit integer
288
- Edm.SByte Signed 8-bit integer
289
- Edm.Single IEEE 754 binary32 floating-point number (6-9 decimal digits)
290
- Edm.Stream Binary data stream
291
- Edm.String Sequence of UTF-8 characters
292
- Edm.TimeOfDay Clock time 00:00-23:59:59.999999999999
293
- Edm.Geography Abstract base type for all Geography types
294
- Edm.GeographyPoint A point in a round-earth coordinate system
295
- Edm.GeographyLineString Line string in a round-earth coordinate system
296
- Edm.GeographyPolygon Polygon in a round-earth coordinate system
297
- Edm.GeographyMultiPoint Collection of points in a round-earth coordinate system
298
- Edm.GeographyMultiLineString Collection of line strings in a round-earth coordinate system
299
- Edm.GeographyMultiPolygon Collection of polygons in a round-earth coordinate system
300
- Edm.GeographyCollection Collection of arbitrary Geography values
301
- Edm.Geometry Abstract base type for all Geometry types
302
- Edm.GeometryPoint Point in a flat-earth coordinate system
303
- Edm.GeometryLineString Line string in a flat-earth coordinate system
304
- Edm.GeometryPolygon Polygon in a flat-earth coordinate system
305
- Edm.GeometryMultiPoint Collection of points in a flat-earth coordinate system
306
- Edm.GeometryMultiLineString Collection of line strings in a flat-earth coordinate system
307
- Edm.GeometryMultiPolygon Collection of polygons in a flat-earth coordinate system
308
- Edm.GeometryCollection Collection of arbitrary Geometry values
309
- */
310
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3BhcnNlcnMvZWRtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBZ0I3RCxnREFBZ0Q7QUFDaEQsTUFBTSxLQUFLLEdBQ1Qsa0VBQWtFLENBQUM7QUFFckUsd0NBQXdDO0FBQ3hDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3JDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0NBQ2pDO0FBRUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFvQztJQUMxRCxVQUFVLEVBQTZCO1FBQ3JDLFdBQVcsQ0FDVCxLQUF3QixFQUN4QixPQUFtQztZQUVuQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxTQUFTLENBQ1AsS0FBd0IsRUFDeEIsT0FBbUM7WUFFbkMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQXdCLEVBQUUsT0FBbUM7WUFDbEUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLENBQUM7S0FDRjtJQUNELFVBQVUsRUFBeUI7UUFDakMsV0FBVyxDQUNULEtBQXdCLEVB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Ozs7Ozs7Ozs7Ozs7RUFrQ0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiaW5hcnksIGR1cmF0aW9uLCByYXcgfSBmcm9tICcuLi9yZXNvdXJjZXMvYnVpbGRlcic7XG5pbXBvcnQgeyBQYXJzZXIsIFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vL2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9uc1xuXG5leHBvcnQgdHlwZSBEdXJhdGlvbiA9IHtcbiAgc2lnbj86IDEgfCAtMTtcbiAgeWVhcnM/OiBudW1iZXI7XG4gIG1vbnRocz86IG51bWJlcjtcbiAgd2Vla3M/OiBudW1iZXI7XG4gIGRheXM/OiBudW1iZXI7XG4gIGhvdXJzPzogbnVtYmVyO1xuICBtaW51dGVzPzogbnVtYmVyO1xuICBzZWNvbmRzPzogbnVtYmVyO1xufTtcblxuLy9odHRwczovL2dpdGh1Yi5jb20vbmlrbGFzdmgvYmFzZTY0LWFycmF5YnVmZmVyXG5jb25zdCBjaGFycyA9XG4gICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJztcblxuLy8gVXNlIGEgbG9va3VwIHRhYmxlIHRvIGZpbmQgdGhlIGluZGV4LlxuY29uc3QgbG9va3VwID0gbmV3IFVpbnQ4QXJyYXkoMjU2KTtcbmZvciAodmFyIGkgPSAwOyBpIDwgY2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgbG9va3VwW2NoYXJzLmNoYXJDb2RlQXQoaSldID0gaTtcbn1cblxuZXhwb3J0IGNvbnN0IEVETV9QQVJTRVJTOiB7IFt0eXBlOiBzdHJpbmddOiBQYXJzZXI8YW55PiB9ID0ge1xuICAnRWRtLkd1aWQnOiA8UGFyc2VyPHN0cmluZyB8IHN0cmluZ1tdPj57XG4gICAgZGVzZXJpYWxpemUoXG4gICAgICB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgICBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9uc1xuICAgICk6IHN0cmluZyB8IHN0cmluZ1tdIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9LFxuICAgIHNlcmlhbGl6ZShcbiAgICAgIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogc3RyaW5nIHwgc3RyaW5nW10ge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gICAgZW5jb2RlKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSwgb3B0aW9uczogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnMpOiBhbnkge1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubWFwKCh2KSA9PiByYXcodikpIDogcmF3KHZhbHVlKTtcbiAgICB9LFxuICB9LFxuICAnRWRtLkRhdGUnOiA8UGFyc2VyPERhdGUgfCBEYXRlW10+PntcbiAgICBkZXNlcmlhbGl6ZShcbiAgICAgIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogRGF0ZSB8IERhdGVbXSB7XG4gICAgICAvL1RPRE86IENoZWNrIHZhbGlkIGlucHV0IGZvciBkYXRlXG4gICAgICBjb25zdCBfZGVzZXJpYWxpemUgPSAodjogc3RyaW5nKSA9PiBuZXcgRGF0ZShgJHt2fVQwMDowMDowMC4wMDBaYCk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5tYXAoX2Rlc2VyaWFsaXplKVxuICAgICAgICA6IF9kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfSxcbiAgICBzZXJpYWxpemUoXG4gICAgICB2YWx1ZTogRGF0ZSB8IERhdGVbXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogc3RyaW5nIHwgc3RyaW5nW10ge1xuICAgICAgY29uc3QgX3NlcmlhbGl6ZSA9ICh2OiBEYXRlKSA9PiB2LnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDEwKTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLm1hcChfc2VyaWFsaXplKSA6IF9zZXJpYWxpemUodmFsdWUpO1xuICAgIH0sXG4gICAgZW5jb2RlKHZhbHVlOiBEYXRlIHwgRGF0ZVtdLCBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucyk6IGFueSB7XG4gICAgICBjb25zdCBfZW5jb2RlID0gKHY6IERhdGUpID0+IHYudG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMCwgMTApO1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWUubWFwKCh2KSA9PiByYXcoX2VuY29kZSh2KSkpXG4gICAgICAgIDogcmF3KF9lbmNvZGUodmFsdWUpKTtcbiAgICB9LFxuICB9LFxuICAnRWRtLlRpbWVPZkRheSc6IDxQYXJzZXI8RGF0ZSB8IERhdGVbXT4+e1xuICAgIGRlc2VyaWFsaXplKFxuICAgICAgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgICAgb3B0aW9uczogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnNcbiAgICApOiBEYXRlIHwgRGF0ZVtdIHtcbiAgICAgIC8vVE9ETzogQ2hlY2sgdmFsaWQgaW5wdXQgZm9yIHRpbWUgb2YgZGF5XG4gICAgICBjb25zdCBfZGVzZXJpYWxpemUgPSAodjogc3RyaW5nKSA9PiBuZXcgRGF0ZShgMTk3MC0wMS0wMVQke3Z9WmApO1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWUubWFwKF9kZXNlcmlhbGl6ZSlcbiAgICAgICAgOiBfZGVzZXJpYWxpemUodmFsdWUpO1xuICAgIH0sXG4gICAgc2VyaWFsaXplKFxuICAgICAgdmFsdWU6IERhdGUgfCBEYXRlW10sXG4gICAgICBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9uc1xuICAgICk6IHN0cmluZyB8IHN0cmluZ1tdIHtcbiAgICAgIGNvbnN0IF9zZXJpYWxpemUgPSAodjogRGF0ZSkgPT4gdi50b0lTT1N0cmluZygpLnN1YnN0cmluZygxMSwgMjMpO1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubWFwKF9zZXJpYWxpemUpIDogX3NlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfSxcbiAgICBlbmNvZGUodmFsdWU6IERhdGUgfCBEYXRlW10sIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zKTogYW55IHtcbiAgICAgIGNvbnN0IF9lbmNvZGUgPSAodjogRGF0ZSkgPT4gdi50b0lTT1N0cmluZygpLnN1YnN0cmluZygxMSwgMjMpO1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWUubWFwKCh2KSA9PiByYXcoX2VuY29kZSh2KSkpXG4gICAgICAgIDogcmF3KF9lbmNvZGUodmFsdWUpKTtcbiAgICB9LFxuICB9LFxuICAnRWRtLkRhdGVUaW1lT2Zmc2V0JzogPFBhcnNlcjxEYXRlPj57XG4gICAgZGVzZXJpYWxpemUoXG4gICAgICB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgICBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9uc1xuICAgICk6IERhdGUgfCBEYXRlW10ge1xuICAgICAgY29uc3QgX2Rlc2VyaWFsaXplID0gKHY6IHN0cmluZykgPT4gbmV3IERhdGUodik7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5tYXAoX2Rlc2VyaWFsaXplKVxuICAgICAgICA6IF9kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfSxcbiAgICBzZXJpYWxpemUoXG4gICAgICB2YWx1ZTogRGF0ZSB8IERhdGVbXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogc3RyaW5nIHwgc3RyaW5nW10ge1xuICAgICAgY29uc3QgX3NlcmlhbGl6ZSA9ICh2OiBEYXRlKSA9PiB2LnRvSVNPU3RyaW5nKCk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5tYXAoX3NlcmlhbGl6ZSkgOiBfc2VyaWFsaXplKHZhbHVlKTtcbiAgICB9LFxuICAgIGVuY29kZSh2YWx1ZTogRGF0ZSB8IERhdGVbXSwgb3B0aW9uczogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnMpOiBhbnkge1xuICAgICAgY29uc3QgX2VuY29kZSA9ICh2OiBEYXRlKSA9PiB2LnRvSVNPU3RyaW5nKCk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IHJhdyhfZW5jb2RlKHYpKSlcbiAgICAgICAgOiByYXcoX2VuY29kZSh2YWx1ZSkpO1xuICAgIH0sXG4gIH0sXG4gICdFZG0uRHVyYXRpb24nOiA8UGFyc2VyPER1cmF0aW9uPj57XG4gICAgZGVzZXJpYWxpemUoXG4gICAgICB2YWx1ZTogc3RyaW5nLFxuICAgICAgb3B0aW9uczogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnNcbiAgICApOiBEdXJhdGlvbiB8IER1cmF0aW9uW10ge1xuICAgICAgY29uc3QgX2Rlc2VyaWFsaXplID0gKHY6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaGVzID1cbiAgICAgICAgICAvXigtfFxcKyk/UCg/OihbLStdP1swLTksLl0qKVkpPyg/OihbLStdP1swLTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVcpPyg/OihbLStdP1swLTksLl0qKUQpPyg/OlQoPzooWy0rXT9bMC05LC5dKilIKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilTKT8pPyQvLmV4ZWMoXG4gICAgICAgICAgICB2XG4gICAgICAgICAgKTtcbiAgICAgICAgaWYgKCFtYXRjaGVzIHx8IHZhbHVlLmxlbmd0aCA8IDMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgYGR1cmF0aW9uIGludmFsaWQ6IFwiJHt2YWx1ZX1cIi4gTXVzdCBiZSBhIElTTyA4NjAxIGR1cmF0aW9uLiBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzg2MDEjRHVyYXRpb25zYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGR1cmF0aW9uOiBEdXJhdGlvbiA9IHt9O1xuICAgICAgICBkdXJhdGlvbi5zaWduID0gbWF0Y2hlc1sxXSA9PT0gJy0nID8gLTEgOiAxO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICd5ZWFycycsXG4gICAgICAgICAgJ21vbnRocycsXG4gICAgICAgICAgJ3dlZWtzJyxcbiAgICAgICAgICAnZGF5cycsXG4gICAgICAgICAgJ2hvdXJzJyxcbiAgICAgICAgICAnbWludXRlcycsXG4gICAgICAgICAgJ3NlY29uZHMnLFxuICAgICAgICBdLnJlZHVjZSgoYWNjOiBhbnksIG5hbWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgdiA9IHBhcnNlRmxvYXQobWF0Y2hlc1tpbmRleCArIDJdKTtcbiAgICAgICAgICBpZiAoIU51bWJlci5pc05hTih2KSkgYWNjW25hbWVdID0gdjtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCBkdXJhdGlvbikgYXMgRHVyYXRpb247XG4gICAgICB9O1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWUubWFwKF9kZXNlcmlhbGl6ZSlcbiAgICAgICAgOiBfZGVzZXJpYWxpemUodmFsdWUpO1xuICAgIH0sXG4gICAgc2VyaWFsaXplKFxuICAgICAgdmFsdWU6IER1cmF0aW9uIHwgRHVyYXRpb25bXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogc3RyaW5nIHwgc3RyaW5nW10ge1xuICAgICAgY29uc3QgX3NlcmlhbGl6ZSA9ICh2OiBEdXJhdGlvbikgPT5cbiAgICAgICAgW1xuICAgICAgICAgIHYuc2lnbiA9PT0gLTEgPyAnLScgOiAnJyxcbiAgICAgICAgICAnUCcsXG4gICAgICAgICAgdi55ZWFycyA/IHYueWVhcnMgKyAnWScgOiAnJyxcbiAgICAgICAgICB2Lm1vbnRocyA/IHYubW9udGhzICsgJ00nIDogJycsXG4gICAgICAgICAgdi53ZWVrcyA/IHYud2Vla3MgKyAnVycgOiAnJyxcbiAgICAgICAgICB2LmRheXMgPyB2LmRheXMgKyAnRCcgOiAnJyxcbiAgICAgICAgICAnVCcsXG4gICAgICAgICAgdi5ob3VycyA/IHYuaG91cnMgKyAnSCcgOiAnJyxcbiAgICAgICAgICB2Lm1pbnV0ZXMgPyB2Lm1pbnV0ZXMgKyAnTScgOiAnJyxcbiAgICAgICAgICB2LnNlY29uZHMgPyB2LnNlY29uZHMgKyAnUycgOiAnJyxcbiAgICAgICAgXS5qb2luKCcnKTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLm1hcChfc2VyaWFsaXplKSA6IF9zZXJpYWxpemUodmFsdWUpO1xuICAgIH0sXG4gICAgZW5jb2RlKFxuICAgICAgdmFsdWU6IER1cmF0aW9uIHwgRHVyYXRpb25bXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogYW55IHtcbiAgICAgIGNvbnN0IF9lbmNvZGUgPSAodjogRHVyYXRpb24pID0+XG4gICAgICAgIFtcbiAgICAgICAgICB2LnNpZ24gPT09IC0xID8gJy0nIDogJycsXG4gICAgICAgICAgJ1AnLFxuICAgICAgICAgIHYueWVhcnMgPyB2LnllYXJzICsgJ1knIDogJycsXG4gICAgICAgICAgdi5tb250aHMgPyB2Lm1vbnRocyArICdNJyA6ICcnLFxuICAgICAgICAgIHYud2Vla3MgPyB2LndlZWtzICsgJ1cnIDogJycsXG4gICAgICAgICAgdi5kYXlzID8gdi5kYXlzICsgJ0QnIDogJycsXG4gICAgICAgICAgJ1QnLFxuICAgICAgICAgIHYuaG91cnMgPyB2LmhvdXJzICsgJ0gnIDogJycsXG4gICAgICAgICAgdi5taW51dGVzID8gdi5taW51dGVzICsgJ00nIDogJycsXG4gICAgICAgICAgdi5zZWNvbmRzID8gdi5zZWNvbmRzICsgJ1MnIDogJycsXG4gICAgICAgIF0uam9pbignJyk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IGR1cmF0aW9uKF9lbmNvZGUodikpKVxuICAgICAgICA6IGR1cmF0aW9uKF9lbmNvZGUodmFsdWUpKTtcbiAgICB9LFxuICB9LFxuICAnRWRtLkRlY2ltYWwnOiA8UGFyc2VyPG51bWJlcj4+e1xuICAgIGRlc2VyaWFsaXplKFxuICAgICAgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IChzdHJpbmcgfCBudW1iZXIpW10sXG4gICAgICBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9uc1xuICAgICk6IHN0cmluZyB8IG51bWJlciB8IChzdHJpbmcgfCBudW1iZXIpW10ge1xuICAgICAgY29uc3QgX2Rlc2VyaWFsaXplID0gKHY6IHN0cmluZyB8IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIG9wdGlvbnMuaWVlZTc1NENvbXBhdGlibGUpIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH07XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5tYXAoX2Rlc2VyaWFsaXplKVxuICAgICAgICA6IF9kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfSxcbiAgICBzZXJpYWxpemUoXG4gICAgICB2YWx1ZTogbnVtYmVyIHwgbnVtYmVyW10sXG4gICAgICBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9uc1xuICAgICk6IGFueSB7XG4gICAgICBjb25zdCBfc2VyaWFsaXplID0gKHY6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucy5pZWVlNzU0Q29tcGF0aWJsZSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHYudG9QcmVjaXNpb24ob3B0aW9ucy5maWVsZC5wcmVjaXNpb24pKS50b0ZpeGVkKFxuICAgICAgICAgICAgb3B0aW9ucy5maWVsZC5zY2FsZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubWFwKF9zZXJpYWxpemUpIDogX3NlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfSxcbiAgICBlbmNvZGUodmFsdWU6IG51bWJlciB8IG51bWJlcltdLCBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucyk6IGFueSB7XG4gICAgICBjb25zdCBfZW5jb2RlID0gKHY6IG51bWJlcikgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucy5pZWVlNzU0Q29tcGF0aWJsZSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHYudG9QcmVjaXNpb24ob3B0aW9ucy5maWVsZC5wcmVjaXNpb24pKS50b0ZpeGVkKFxuICAgICAgICAgICAgb3B0aW9ucy5maWVsZC5zY2FsZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWUubWFwKCh2KSA9PiByYXcoYCR7X2VuY29kZSh2KX1gKSlcbiAgICAgICAgOiByYXcoYCR7X2VuY29kZSh2YWx1ZSl9YCk7XG4gICAgfSxcbiAgfSxcbiAgJ0VkbS5Eb3VibGUnOiA8UGFyc2VyPG51bWJlcj4+e1xuICAgIGRlc2VyaWFsaXplKFxuICAgICAgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IChzdHJpbmcgfCBudW1iZXIpW10sXG4gICAgICBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9uc1xuICAgICk6IG51bWJlciB8IG51bWJlcltdIHtcbiAgICAgIGNvbnN0IF9kZXNlcmlhbGl6ZSA9ICh2OiBzdHJpbmcgfCBudW1iZXIpID0+XG4gICAgICAgIHYgPT09ICdJTkYnID8gSW5maW5pdHkgOiAodiBhcyBudW1iZXIpO1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWUubWFwKF9kZXNlcmlhbGl6ZSlcbiAgICAgICAgOiBfZGVzZXJpYWxpemUodmFsdWUpO1xuICAgIH0sXG4gICAgc2VyaWFsaXplKFxuICAgICAgdmFsdWU6IG51bWJlciB8IG51bWJlcltdLFxuICAgICAgb3B0aW9uczogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnNcbiAgICApOiBzdHJpbmcgfCBudW1iZXIgfCAoc3RyaW5nIHwgbnVtYmVyKVtdIHtcbiAgICAgIGNvbnN0IF9zZXJpYWxpemUgPSAodjogbnVtYmVyKSA9PiAodiA9PT0gSW5maW5pdHkgPyAnSU5GJyA6IHYpO1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubWFwKF9zZXJpYWxpemUpIDogX3NlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfSxcbiAgICBlbmNvZGUodmFsdWU6IG51bWJlciB8IG51bWJlcltdLCBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucyk6IGFueSB7XG4gICAgICBjb25zdCBfZW5jb2RlID0gKHY6IG51bWJlcikgPT4gKHYgPT09IEluZmluaXR5ID8gJ0lORicgOiB2KTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICA/IHZhbHVlLm1hcCgodikgPT4gcmF3KGAke19lbmNvZGUodil9YCkpXG4gICAgICAgIDogcmF3KGAke19lbmNvZGUodmFsdWUpfWApO1xuICAgIH0sXG4gIH0sXG4gICdFZG0uU2luZ2xlJzogPFBhcnNlcjxudW1iZXI+PntcbiAgICBkZXNlcmlhbGl6ZShcbiAgICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCAoc3RyaW5nIHwgbnVtYmVyKVtdLFxuICAgICAgb3B0aW9uczogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnNcbiAgICApOiBudW1iZXIgfCBudW1iZXJbXSB7XG4gICAgICBjb25zdCBfZGVzZXJpYWxpemUgPSAodjogc3RyaW5nIHwgbnVtYmVyKSA9PlxuICAgICAgICB2ID09PSAnSU5GJyA/IEluZmluaXR5IDogKHYgYXMgbnVtYmVyKTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICA/IHZhbHVlLm1hcChfZGVzZXJpYWxpemUpXG4gICAgICAgIDogX2Rlc2VyaWFsaXplKHZhbHVlKTtcbiAgICB9LFxuICAgIHNlcmlhbGl6ZShcbiAgICAgIHZhbHVlOiBudW1iZXIgfCBudW1iZXJbXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogc3RyaW5nIHwgbnVtYmVyIHwgKHN0cmluZyB8IG51bWJlcilbXSB7XG4gICAgICBjb25zdCBfc2VyaWFsaXplID0gKHY6IG51bWJlcikgPT4gKHYgPT09IEluZmluaXR5ID8gJ0lORicgOiB2KTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLm1hcChfc2VyaWFsaXplKSA6IF9zZXJpYWxpemUodmFsdWUpO1xuICAgIH0sXG4gICAgZW5jb2RlKHZhbHVlOiBudW1iZXIgfCBudW1iZXJbXSwgb3B0aW9uczogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnMpOiBhbnkge1xuICAgICAgY29uc3QgX2VuY29kZSA9ICh2OiBudW1iZXIpID0+ICh2ID09PSBJbmZpbml0eSA/ICdJTkYnIDogdik7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IHJhdyhgJHtfZW5jb2RlKHYpfWApKVxuICAgICAgICA6IHJhdyhgJHtfZW5jb2RlKHZhbHVlKX1gKTtcbiAgICB9LFxuICB9LFxuICAnRWRtLkJpbmFyeSc6IDxQYXJzZXI8QXJyYXlCdWZmZXI+PntcbiAgICBkZXNlcmlhbGl6ZShcbiAgICAgIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogQXJyYXlCdWZmZXIgfCBBcnJheUJ1ZmZlcltdIHtcbiAgICAgIGNvbnN0IF9kZXNlcmlhbGl6ZSA9ICh2OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdmFyIGJ1ZmZlckxlbmd0aCA9IHYubGVuZ3RoICogMC43NSxcbiAgICAgICAgICBsZW4gPSB2Lmxlbmd0aCxcbiAgICAgICAgICBpLFxuICAgICAgICAgIHAgPSAwLFxuICAgICAgICAgIGVuY29kZWQxLFxuICAgICAgICAgIGVuY29kZWQyLFxuICAgICAgICAgIGVuY29kZWQzLFxuICAgICAgICAgIGVuY29kZWQ0O1xuXG4gICAgICAgIGlmICh2W3YubGVuZ3RoIC0gMV0gPT09ICc9Jykge1xuICAgICAgICAgIGJ1ZmZlckxlbmd0aC0tO1xuICAgICAgICAgIGlmICh2W3YubGVuZ3RoIC0gMl0gPT09ICc9Jykge1xuICAgICAgICAgICAgYnVmZmVyTGVuZ3RoLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGFycmF5YnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ1ZmZlckxlbmd0aCksXG4gICAgICAgICAgYnl0ZXMgPSBuZXcgVWludDhBcnJheShhcnJheWJ1ZmZlcik7XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSA0KSB7XG4gICAgICAgICAgZW5jb2RlZDEgPSBsb29rdXBbdi5jaGFyQ29kZUF0KGkpXTtcbiAgICAgICAgICBlbmNvZGVkMiA9IGxvb2t1cFt2LmNoYXJDb2RlQXQoaSArIDEpXTtcbiAgICAgICAgICBlbmNvZGVkMyA9IGxvb2t1cFt2LmNoYXJDb2RlQXQoaSArIDIpXTtcbiAgICAgICAgICBlbmNvZGVkNCA9IGxvb2t1cFt2LmNoYXJDb2RlQXQoaSArIDMpXTtcblxuICAgICAgICAgIGJ5dGVzW3ArK10gPSAoZW5jb2RlZDEgPDwgMikgfCAoZW5jb2RlZDIgPj4gNCk7XG4gICAgICAgICAgYnl0ZXNbcCsrXSA9ICgoZW5jb2RlZDIgJiAxNSkgPDwgNCkgfCAoZW5jb2RlZDMgPj4gMik7XG4gICAgICAgICAgYnl0ZXNbcCsrXSA9ICgoZW5jb2RlZDMgJiAzKSA8PCA2KSB8IChlbmNvZGVkNCAmIDYzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhcnJheWJ1ZmZlcjtcbiAgICAgIH07XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5tYXAoX2Rlc2VyaWFsaXplKVxuICAgICAgICA6IF9kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfSxcbiAgICBzZXJpYWxpemUoXG4gICAgICB2YWx1ZTogQXJyYXlCdWZmZXIgfCBBcnJheUJ1ZmZlcltdLFxuICAgICAgb3B0aW9uczogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnNcbiAgICApOiBzdHJpbmcgfCBzdHJpbmdbXSB7XG4gICAgICBjb25zdCBfc2VyaWFsaXplID0gKHY6IEFycmF5QnVmZmVyKSA9PiB7XG4gICAgICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KHYpLFxuICAgICAgICAgIGksXG4gICAgICAgICAgbGVuID0gYnl0ZXMubGVuZ3RoLFxuICAgICAgICAgIGJhc2U2NCA9ICcnO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykge1xuICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpXSA+PiAyXTtcbiAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbKChieXRlc1tpXSAmIDMpIDw8IDQpIHwgKGJ5dGVzW2kgKyAxXSA+PiA0KV07XG4gICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07XG4gICAgICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kgKyAyXSAmIDYzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7XG4gICAgICAgICAgYmFzZTY0ID0gYmFzZTY0LnN1YnN0cmluZygwLCBiYXNlNjQubGVuZ3RoIC0gMSkgKyAnPSc7XG4gICAgICAgIH0gZWxzZSBpZiAobGVuICUgMyA9PT0gMSkge1xuICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmFzZTY0O1xuICAgICAgfTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLm1hcChfc2VyaWFsaXplKSA6IF9zZXJpYWxpemUodmFsdWUpO1xuICAgIH0sXG4gICAgZW5jb2RlKFxuICAgICAgdmFsdWU6IEFycmF5QnVmZmVyIHwgQXJyYXlCdWZmZXJbXSxcbiAgICAgIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zXG4gICAgKTogYW55IHtcbiAgICAgIGNvbnN0IF9lbmNvZGUgPSAodjogQXJyYXlCdWZmZXIpID0+IHtcbiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkodiksXG4gICAgICAgICAgaSxcbiAgICAgICAgICBsZW4gPSBieXRlcy5sZW5ndGgsXG4gICAgICAgICAgYmFzZTY0ID0gJyc7XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSAzKSB7XG4gICAgICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2ldID4+IDJdO1xuICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTtcbiAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbKChieXRlc1tpICsgMV0gJiAxNSkgPDwgMikgfCAoYnl0ZXNbaSArIDJdID4+IDYpXTtcbiAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaSArIDJdICYgNjNdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxlbiAlIDMgPT09IDIpIHtcbiAgICAgICAgICBiYXNlNjQgPSBiYXNlNjQuc3Vic3RyaW5nKDAsIGJhc2U2NC5sZW5ndGggLSAxKSArICc9JztcbiAgICAgICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7XG4gICAgICAgICAgYmFzZTY0ID0gYmFzZTY0LnN1YnN0cmluZygwLCBiYXNlNjQubGVuZ3RoIC0gMikgKyAnPT0nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiYXNlNjQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgID8gdmFsdWUubWFwKCh2KSA9PiBiaW5hcnkoX2VuY29kZSh2KSkpXG4gICAgICAgIDogYmluYXJ5KF9lbmNvZGUodmFsdWUpKTtcbiAgICB9LFxuICB9LFxufTtcblxuLypcbkVkbS5CaW5hcnkgQmluYXJ5IGRhdGFcbkVkbS5Cb29sZWFuIEJpbmFyeS12YWx1ZWQgbG9naWNcbkVkbS5CeXRlIFVuc2lnbmVkIDgtYml0IGludGVnZXJcbkVkbS5EYXRlIERhdGUgd2l0aG91dCBhIHRpbWUtem9uZSBvZmZzZXRcbkVkbS5EYXRlVGltZU9mZnNldCBEYXRlIGFuZCB0aW1lIHdpdGggYSB0aW1lLXpvbmUgb2Zmc2V0LCBubyBsZWFwIHNlY29uZHNcbkVkbS5EZWNpbWFsIE51bWVyaWMgdmFsdWVzIHdpdGggZml4ZWQgcHJlY2lzaW9uIGFuZCBzY2FsZVxuRWRtLkRvdWJsZSBJRUVFIDc1NCBiaW5hcnk2NCBmbG9hdGluZy1wb2ludCBudW1iZXIgKDE1LTE3IGRlY2ltYWwgZGlnaXRzKVxuRWRtLkR1cmF0aW9uIFNpZ25lZCBkdXJhdGlvbiBpbiBkYXlzLCBob3VycywgbWludXRlcywgYW5kIChzdWIpc2Vjb25kc1xuRWRtLkd1aWQgMTYtYnl0ZSAoMTI4LWJpdCkgdW5pcXVlIGlkZW50aWZpZXJcbkVkbS5JbnQxNiBTaWduZWQgMTYtYml0IGludGVnZXJcbkVkbS5JbnQzMiBTaWduZWQgMzItYml0IGludGVnZXJcbkVkbS5JbnQ2NCBTaWduZWQgNjQtYml0IGludGVnZXJcbkVkbS5TQnl0ZSBTaWduZWQgOC1iaXQgaW50ZWdlclxuRWRtLlNpbmdsZSBJRUVFIDc1NCBiaW5hcnkzMiBmbG9hdGluZy1wb2ludCBudW1iZXIgKDYtOSBkZWNpbWFsIGRpZ2l0cylcbkVkbS5TdHJlYW0gQmluYXJ5IGRhdGEgc3RyZWFtXG5FZG0uU3RyaW5nIFNlcXVlbmNlIG9mIFVURi04IGNoYXJhY3RlcnNcbkVkbS5UaW1lT2ZEYXkgQ2xvY2sgdGltZSAwMDowMC0yMzo1OTo1OS45OTk5OTk5OTk5OTlcbkVkbS5HZW9ncmFwaHkgQWJzdHJhY3QgYmFzZSB0eXBlIGZvciBhbGwgR2VvZ3JhcGh5IHR5cGVzXG5FZG0uR2VvZ3JhcGh5UG9pbnQgQSBwb2ludCBpbiBhIHJvdW5kLWVhcnRoIGNvb3JkaW5hdGUgc3lzdGVtXG5FZG0uR2VvZ3JhcGh5TGluZVN0cmluZyBMaW5lIHN0cmluZyBpbiBhIHJvdW5kLWVhcnRoIGNvb3JkaW5hdGUgc3lzdGVtXG5FZG0uR2VvZ3JhcGh5UG9seWdvbiBQb2x5Z29uIGluIGEgcm91bmQtZWFydGggY29vcmRpbmF0ZSBzeXN0ZW1cbkVkbS5HZW9ncmFwaHlNdWx0aVBvaW50IENvbGxlY3Rpb24gb2YgcG9pbnRzIGluIGEgcm91bmQtZWFydGggY29vcmRpbmF0ZSBzeXN0ZW1cbkVkbS5HZW9ncmFwaHlNdWx0aUxpbmVTdHJpbmcgQ29sbGVjdGlvbiBvZiBsaW5lIHN0cmluZ3MgaW4gYSByb3VuZC1lYXJ0aCBjb29yZGluYXRlIHN5c3RlbVxuRWRtLkdlb2dyYXBoeU11bHRpUG9seWdvbiBDb2xsZWN0aW9uIG9mIHBvbHlnb25zIGluIGEgcm91bmQtZWFydGggY29vcmRpbmF0ZSBzeXN0ZW1cbkVkbS5HZW9ncmFwaHlDb2xsZWN0aW9uIENvbGxlY3Rpb24gb2YgYXJiaXRyYXJ5IEdlb2dyYXBoeSB2YWx1ZXNcbkVkbS5HZW9tZXRyeSBBYnN0cmFjdCBiYXNlIHR5cGUgZm9yIGFsbCBHZW9tZXRyeSB0eXBlc1xuRWRtLkdlb21ldHJ5UG9pbnQgUG9pbnQgaW4gYSBmbGF0LWVhcnRoIGNvb3JkaW5hdGUgc3lzdGVtXG5FZG0uR2VvbWV0cnlMaW5lU3RyaW5nIExpbmUgc3RyaW5nIGluIGEgZmxhdC1lYXJ0aCBjb29yZGluYXRlIHN5c3RlbVxuRWRtLkdlb21ldHJ5UG9seWdvbiBQb2x5Z29uIGluIGEgZmxhdC1lYXJ0aCBjb29yZGluYXRlIHN5c3RlbVxuRWRtLkdlb21ldHJ5TXVsdGlQb2ludCBDb2xsZWN0aW9uIG9mIHBvaW50cyBpbiBhIGZsYXQtZWFydGggY29vcmRpbmF0ZSBzeXN0ZW1cbkVkbS5HZW9tZXRyeU11bHRpTGluZVN0cmluZyBDb2xsZWN0aW9uIG9mIGxpbmUgc3RyaW5ncyBpbiBhIGZsYXQtZWFydGggY29vcmRpbmF0ZSBzeXN0ZW1cbkVkbS5HZW9tZXRyeU11bHRpUG9seWdvbiBDb2xsZWN0aW9uIG9mIHBvbHlnb25zIGluIGEgZmxhdC1lYXJ0aCBjb29yZGluYXRlIHN5c3RlbVxuRWRtLkdlb21ldHJ5Q29sbGVjdGlvbiBDb2xsZWN0aW9uIG9mIGFyYml0cmFyeSBHZW9tZXRyeSB2YWx1ZXNcbiovXG4iXX0=