@fgv/ts-bcp47 0.5.1 → 0.5.2

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 (413) hide show
  1. package/{src/bcp47 → bcp47}/bcp47Subtags/converters.d.ts +0 -0
  2. package/bcp47/bcp47Subtags/converters.d.ts.map +1 -0
  3. package/{src/bcp47 → bcp47}/bcp47Subtags/converters.js +1 -1
  4. package/{src/bcp47 → bcp47}/bcp47Subtags/index.d.ts +0 -0
  5. package/bcp47/bcp47Subtags/index.d.ts.map +1 -0
  6. package/{src/iana/jar/language-subtags/converters.js → bcp47/bcp47Subtags/index.js} +8 -6
  7. package/{src/bcp47 → bcp47}/bcp47Subtags/model.d.ts +0 -0
  8. package/bcp47/bcp47Subtags/model.d.ts.map +1 -0
  9. package/{src/bcp47/overrides → bcp47/bcp47Subtags}/model.js +1 -1
  10. package/{src/bcp47 → bcp47}/bcp47Subtags/validate.d.ts +0 -0
  11. package/bcp47/bcp47Subtags/validate.d.ts.map +1 -0
  12. package/bcp47/bcp47Subtags/validate.js +74 -0
  13. package/{src/bcp47 → bcp47}/common.d.ts +0 -0
  14. package/bcp47/common.d.ts.map +1 -0
  15. package/bcp47/common.js +59 -0
  16. package/{src/bcp47 → bcp47}/helpers.d.ts +0 -0
  17. package/bcp47/helpers.d.ts.map +1 -0
  18. package/bcp47/helpers.js +103 -0
  19. package/{src/bcp47 → bcp47}/index.d.ts +0 -0
  20. package/bcp47/index.d.ts.map +1 -0
  21. package/bcp47/index.js +27 -0
  22. package/bcp47/languageRegistryData.d.ts +88 -0
  23. package/bcp47/languageRegistryData.d.ts.map +1 -0
  24. package/bcp47/languageRegistryData.js +144 -0
  25. package/{src/bcp47 → bcp47}/languageTag.d.ts +6 -0
  26. package/bcp47/languageTag.d.ts.map +1 -0
  27. package/bcp47/languageTag.js +344 -0
  28. package/{src/bcp47 → bcp47}/languageTagParser.d.ts +0 -0
  29. package/bcp47/languageTagParser.d.ts.map +1 -0
  30. package/bcp47/languageTagParser.js +310 -0
  31. package/{src/bcp47 → bcp47}/match/chooser.d.ts +1 -1
  32. package/bcp47/match/chooser.d.ts.map +1 -0
  33. package/bcp47/match/chooser.js +92 -0
  34. package/{src/bcp47 → bcp47}/match/common.d.ts +0 -0
  35. package/bcp47/match/common.d.ts.map +1 -0
  36. package/bcp47/match/common.js +42 -0
  37. package/{src/bcp47 → bcp47}/match/index.d.ts +0 -0
  38. package/bcp47/match/index.d.ts.map +1 -0
  39. package/{src/iana/jar/language-subtags/registry/converters.js → bcp47/match/index.js} +10 -23
  40. package/{src/bcp47 → bcp47}/match/similarity.d.ts +0 -0
  41. package/bcp47/match/similarity.d.ts.map +1 -0
  42. package/bcp47/match/similarity.js +230 -0
  43. package/{src/bcp47 → bcp47}/normalization/baseNormalizer.d.ts +0 -0
  44. package/bcp47/normalization/baseNormalizer.d.ts.map +1 -0
  45. package/bcp47/normalization/baseNormalizer.js +114 -0
  46. package/{src/bcp47 → bcp47}/normalization/canonicalNormalizer.d.ts +0 -0
  47. package/bcp47/normalization/canonicalNormalizer.d.ts.map +1 -0
  48. package/bcp47/normalization/canonicalNormalizer.js +110 -0
  49. package/{src/bcp47 → bcp47}/normalization/common.d.ts +0 -0
  50. package/bcp47/normalization/common.d.ts.map +1 -0
  51. package/bcp47/normalization/common.js +82 -0
  52. package/{src/bcp47 → bcp47}/normalization/index.d.ts +0 -0
  53. package/bcp47/normalization/index.d.ts.map +1 -0
  54. package/{src/bcp47 → bcp47}/normalization/index.js +1 -1
  55. package/{src/bcp47 → bcp47}/normalization/normalizeTag.d.ts +0 -0
  56. package/bcp47/normalization/normalizeTag.d.ts.map +1 -0
  57. package/bcp47/normalization/normalizeTag.js +105 -0
  58. package/{src/bcp47 → bcp47}/normalization/preferredTagNormalizer.d.ts +0 -0
  59. package/bcp47/normalization/preferredTagNormalizer.d.ts.map +1 -0
  60. package/bcp47/normalization/preferredTagNormalizer.js +178 -0
  61. package/{src/bcp47 → bcp47}/overrides/converters.d.ts +0 -0
  62. package/bcp47/overrides/converters.d.ts.map +1 -0
  63. package/bcp47/overrides/converters.js +75 -0
  64. package/{src/bcp47 → bcp47}/overrides/defaultRegistries.d.ts +0 -0
  65. package/bcp47/overrides/defaultRegistries.d.ts.map +1 -0
  66. package/bcp47/overrides/defaultRegistries.js +42 -0
  67. package/{src/bcp47 → bcp47}/overrides/index.d.ts +0 -0
  68. package/bcp47/overrides/index.d.ts.map +1 -0
  69. package/bcp47/overrides/index.js +30 -0
  70. package/{src/bcp47 → bcp47}/overrides/model.d.ts +0 -0
  71. package/bcp47/overrides/model.d.ts.map +1 -0
  72. package/bcp47/overrides/model.js +24 -0
  73. package/{src/bcp47 → bcp47}/overrides/overridesRegistry.d.ts +0 -0
  74. package/bcp47/overrides/overridesRegistry.d.ts.map +1 -0
  75. package/bcp47/overrides/overridesRegistry.js +112 -0
  76. package/{src/bcp47 → bcp47}/validation/baseValidator.d.ts +0 -0
  77. package/bcp47/validation/baseValidator.d.ts.map +1 -0
  78. package/bcp47/validation/baseValidator.js +111 -0
  79. package/{src/bcp47 → bcp47}/validation/common.d.ts +0 -0
  80. package/bcp47/validation/common.d.ts.map +1 -0
  81. package/bcp47/validation/common.js +84 -0
  82. package/{src/bcp47 → bcp47}/validation/index.d.ts +0 -0
  83. package/bcp47/validation/index.d.ts.map +1 -0
  84. package/{src/iana/jar/language-subtags → bcp47/validation}/index.js +14 -17
  85. package/{src/bcp47 → bcp47}/validation/isCanonical.d.ts +0 -0
  86. package/bcp47/validation/isCanonical.d.ts.map +1 -0
  87. package/bcp47/validation/isCanonical.js +101 -0
  88. package/{src/bcp47 → bcp47}/validation/isInPreferredForm.d.ts +0 -0
  89. package/bcp47/validation/isInPreferredForm.d.ts.map +1 -0
  90. package/bcp47/validation/isInPreferredForm.js +73 -0
  91. package/{src/bcp47 → bcp47}/validation/isStrictlyValid.d.ts +0 -0
  92. package/bcp47/validation/isStrictlyValid.d.ts.map +1 -0
  93. package/bcp47/validation/isStrictlyValid.js +98 -0
  94. package/{src/bcp47 → bcp47}/validation/isValid.d.ts +0 -0
  95. package/bcp47/validation/isValid.d.ts.map +1 -0
  96. package/bcp47/validation/isValid.js +115 -0
  97. package/{src/bcp47 → bcp47}/validation/isWellFormed.d.ts +0 -0
  98. package/bcp47/validation/isWellFormed.d.ts.map +1 -0
  99. package/bcp47/validation/isWellFormed.js +98 -0
  100. package/{src/bcp47 → bcp47}/validation/validateTag.d.ts +0 -0
  101. package/bcp47/validation/validateTag.d.ts.map +1 -0
  102. package/bcp47/validation/validateTag.js +159 -0
  103. package/{src/iana → iana}/common/converters.d.ts +0 -0
  104. package/iana/common/converters.d.ts.map +1 -0
  105. package/iana/common/converters.js +84 -0
  106. package/{src/iana → iana}/common/model.d.ts +0 -0
  107. package/iana/common/model.d.ts.map +1 -0
  108. package/{src/unsd/csv → iana/common}/model.js +1 -1
  109. package/{src/iana → iana}/common/registeredItems.d.ts +0 -0
  110. package/iana/common/registeredItems.d.ts.map +1 -0
  111. package/iana/common/registeredItems.js +124 -0
  112. package/{src/iana → iana}/common/utils.d.ts +0 -0
  113. package/iana/common/utils.d.ts.map +1 -0
  114. package/iana/common/utils.js +34 -0
  115. package/{src/iana → iana}/common/validate.d.ts +0 -0
  116. package/iana/common/validate.d.ts.map +1 -0
  117. package/iana/common/validate.js +61 -0
  118. package/{src/iana → iana}/converters.d.ts +0 -0
  119. package/iana/converters.d.ts.map +1 -0
  120. package/{src/iana/jar/model.js → iana/converters.js} +8 -8
  121. package/{src/iana → iana}/defaultRegistries.d.ts +0 -0
  122. package/iana/defaultRegistries.d.ts.map +1 -0
  123. package/iana/defaultRegistries.js +42 -0
  124. package/{src/iana → iana}/index.d.ts +0 -0
  125. package/iana/index.d.ts.map +1 -0
  126. package/{src/iana → iana}/index.js +1 -1
  127. package/{src/iana → iana}/jar/converters.d.ts +0 -0
  128. package/iana/jar/converters.d.ts.map +1 -0
  129. package/{src/iana → iana}/jar/converters.js +1 -1
  130. package/{src/iana → iana}/jar/index.d.ts +0 -0
  131. package/iana/jar/index.d.ts.map +1 -0
  132. package/{src/iana/jar/language-subtags/tags → iana/jar}/index.js +4 -8
  133. package/{src/iana → iana}/jar/jarConverters.d.ts +0 -0
  134. package/iana/jar/jarConverters.d.ts.map +1 -0
  135. package/iana/jar/jarConverters.js +85 -0
  136. package/{src/iana → iana}/jar/jarModel.d.ts +0 -0
  137. package/iana/jar/jarModel.d.ts.map +1 -0
  138. package/{src/iana/common/model.js → iana/jar/jarModel.js} +1 -1
  139. package/{src/iana → iana}/jar/language-subtags/converters.d.ts +0 -0
  140. package/iana/jar/language-subtags/converters.d.ts.map +1 -0
  141. package/{src/iana/jar/language-subtags/model.js → iana/jar/language-subtags/converters.js} +3 -3
  142. package/{src/iana → iana}/jar/language-subtags/index.d.ts +0 -0
  143. package/iana/jar/language-subtags/index.d.ts.map +1 -0
  144. package/{src/utils → iana/jar/language-subtags}/index.js +18 -4
  145. package/{src/iana → iana}/jar/language-subtags/model.d.ts +0 -0
  146. package/iana/jar/language-subtags/model.d.ts.map +1 -0
  147. package/{src/unsd/common.js → iana/jar/language-subtags/model.js} +29 -1
  148. package/{src/iana → iana}/jar/language-subtags/registry/converters.d.ts +0 -0
  149. package/iana/jar/language-subtags/registry/converters.d.ts.map +1 -0
  150. package/{src/iana/language-subtags/common.js → iana/jar/language-subtags/registry/converters.js} +35 -1
  151. package/{src/iana → iana}/jar/language-subtags/registry/index.d.ts +0 -0
  152. package/iana/jar/language-subtags/registry/index.d.ts.map +1 -0
  153. package/{src/bcp47/bcp47Subtags → iana/jar/language-subtags/registry}/index.js +28 -27
  154. package/{src/iana → iana}/jar/language-subtags/registry/model.d.ts +0 -0
  155. package/iana/jar/language-subtags/registry/model.d.ts.map +1 -0
  156. package/iana/jar/language-subtags/registry/model.js +41 -0
  157. package/{src/iana → iana}/jar/language-subtags/tags/converters.d.ts +0 -0
  158. package/iana/jar/language-subtags/tags/converters.d.ts.map +1 -0
  159. package/iana/jar/language-subtags/tags/converters.js +128 -0
  160. package/{src/iana → iana}/jar/language-subtags/tags/index.d.ts +0 -0
  161. package/iana/jar/language-subtags/tags/index.d.ts.map +1 -0
  162. package/{src/iana/converters.js → iana/jar/language-subtags/tags/index.js} +10 -8
  163. package/{src/iana → iana}/jar/language-subtags/tags/model.d.ts +0 -0
  164. package/iana/jar/language-subtags/tags/model.d.ts.map +1 -0
  165. package/{src/unsd/csv/index.js → iana/jar/language-subtags/tags/model.js} +1 -29
  166. package/{src/iana → iana}/jar/language-subtags/tags/tagValidation.d.ts +0 -0
  167. package/iana/jar/language-subtags/tags/tagValidation.d.ts.map +1 -0
  168. package/iana/jar/language-subtags/tags/tagValidation.js +70 -0
  169. package/{src/iana → iana}/jar/language-subtags/tags/validate.d.ts +0 -0
  170. package/iana/jar/language-subtags/tags/validate.d.ts.map +1 -0
  171. package/iana/jar/language-subtags/tags/validate.js +87 -0
  172. package/{src/iana → iana}/jar/model.d.ts +0 -0
  173. package/iana/jar/model.d.ts.map +1 -0
  174. package/{src/iana/jar/language-subtags/registry/index.js → iana/jar/model.js} +26 -27
  175. package/{src/iana → iana}/language-subtags/common.d.ts +0 -0
  176. package/iana/language-subtags/common.d.ts.map +1 -0
  177. package/iana/language-subtags/common.js +24 -0
  178. package/{src/iana → iana}/language-subtags/converters.d.ts +0 -0
  179. package/iana/language-subtags/converters.d.ts.map +1 -0
  180. package/iana/language-subtags/converters.js +200 -0
  181. package/{src/iana → iana}/language-subtags/index.d.ts +0 -0
  182. package/iana/language-subtags/index.d.ts.map +1 -0
  183. package/{src/iana → iana}/language-subtags/index.js +1 -1
  184. package/{src/iana → iana}/language-subtags/jarConverters.d.ts +12 -12
  185. package/iana/language-subtags/jarConverters.d.ts.map +1 -0
  186. package/iana/language-subtags/jarConverters.js +213 -0
  187. package/{src/iana → iana}/language-subtags/model.d.ts +0 -0
  188. package/iana/language-subtags/model.d.ts.map +1 -0
  189. package/iana/language-subtags/model.js +24 -0
  190. package/{src/iana → iana}/language-subtags/scope.d.ts +0 -0
  191. package/iana/language-subtags/scope.d.ts.map +1 -0
  192. package/iana/language-subtags/scope.js +179 -0
  193. package/{src/iana → iana}/language-subtags/subtagRegistry.d.ts +0 -0
  194. package/iana/language-subtags/subtagRegistry.d.ts.map +1 -0
  195. package/iana/language-subtags/subtagRegistry.js +149 -0
  196. package/{src/iana → iana}/language-subtags/validate.d.ts +0 -0
  197. package/iana/language-subtags/validate.d.ts.map +1 -0
  198. package/{src/iana → iana}/language-subtags/validate.js +1 -1
  199. package/{src/iana → iana}/language-tag-extensions/converters.d.ts +0 -0
  200. package/iana/language-tag-extensions/converters.d.ts.map +1 -0
  201. package/iana/language-tag-extensions/converters.js +87 -0
  202. package/{src/iana → iana}/language-tag-extensions/extensionsRegistry.d.ts +0 -0
  203. package/iana/language-tag-extensions/extensionsRegistry.d.ts.map +1 -0
  204. package/iana/language-tag-extensions/extensionsRegistry.js +104 -0
  205. package/{src/iana → iana}/language-tag-extensions/extensionsScope.d.ts +0 -0
  206. package/iana/language-tag-extensions/extensionsScope.d.ts.map +1 -0
  207. package/iana/language-tag-extensions/extensionsScope.js +77 -0
  208. package/{src/iana → iana}/language-tag-extensions/index.d.ts +0 -0
  209. package/iana/language-tag-extensions/index.d.ts.map +1 -0
  210. package/{src/iana → iana}/language-tag-extensions/index.js +1 -1
  211. package/{src/iana → iana}/language-tag-extensions/jarConverters.d.ts +0 -0
  212. package/iana/language-tag-extensions/jarConverters.d.ts.map +1 -0
  213. package/iana/language-tag-extensions/jarConverters.js +102 -0
  214. package/{src/iana → iana}/language-tag-extensions/model.d.ts +0 -0
  215. package/iana/language-tag-extensions/model.d.ts.map +1 -0
  216. package/{src/bcp47/overrides/defaultRegistries.js → iana/language-tag-extensions/model.js} +1 -19
  217. package/{src/iana → iana}/language-tag-extensions/validate.d.ts +0 -0
  218. package/iana/language-tag-extensions/validate.d.ts.map +1 -0
  219. package/iana/language-tag-extensions/validate.js +36 -0
  220. package/{src/iana → iana}/languageRegistries.d.ts +0 -0
  221. package/iana/languageRegistries.d.ts.map +1 -0
  222. package/iana/languageRegistries.js +56 -0
  223. package/{src/iana → iana}/model.d.ts +0 -0
  224. package/iana/model.d.ts.map +1 -0
  225. package/{src/iana → iana}/model.js +1 -1
  226. package/{src/iana → iana}/validate.d.ts +0 -0
  227. package/iana/validate.d.ts.map +1 -0
  228. package/{src/iana → iana}/validate.js +1 -1
  229. package/{src/index.d.ts → index.d.ts} +0 -0
  230. package/index.d.ts.map +1 -0
  231. package/{src/index.js → index.js} +1 -1
  232. package/package.json +1 -1
  233. package/{src/unsd → unsd}/areas.d.ts +0 -0
  234. package/unsd/areas.d.ts.map +1 -0
  235. package/unsd/areas.js +96 -0
  236. package/{src/unsd → unsd}/common.d.ts +0 -0
  237. package/unsd/common.d.ts.map +1 -0
  238. package/unsd/common.js +24 -0
  239. package/{src/unsd → unsd}/csv/converters.d.ts +0 -0
  240. package/unsd/csv/converters.d.ts.map +1 -0
  241. package/unsd/csv/converters.js +70 -0
  242. package/{src/unsd → unsd}/csv/index.d.ts +0 -0
  243. package/unsd/csv/index.d.ts.map +1 -0
  244. package/{src/iana/jar → unsd/csv}/index.js +1 -1
  245. package/{src/unsd → unsd}/csv/model.d.ts +0 -0
  246. package/unsd/csv/model.d.ts.map +1 -0
  247. package/{src/unsd/index.js → unsd/csv/model.js} +1 -21
  248. package/{src/unsd → unsd}/defaultRegistries.d.ts +0 -0
  249. package/unsd/defaultRegistries.d.ts.map +1 -0
  250. package/unsd/defaultRegistries.js +42 -0
  251. package/{src/unsd → unsd}/index.d.ts +0 -0
  252. package/unsd/index.d.ts.map +1 -0
  253. package/unsd/index.js +44 -0
  254. package/{src/unsd → unsd}/regionCodes.d.ts +0 -0
  255. package/unsd/regionCodes.d.ts.map +1 -0
  256. package/unsd/regionCodes.js +121 -0
  257. package/{src/unsd → unsd}/regions.d.ts +0 -0
  258. package/unsd/regions.d.ts.map +1 -0
  259. package/unsd/regions.js +77 -0
  260. package/{src/utils → utils}/index.d.ts +0 -0
  261. package/utils/index.d.ts.map +1 -0
  262. package/{src/utils/jsonHelpers.js → utils/index.js} +17 -6
  263. package/{src/utils → utils}/jsonHelpers.d.ts +0 -0
  264. package/utils/jsonHelpers.d.ts.map +1 -0
  265. package/{src/iana/jar/language-subtags/tags/model.js → utils/jsonHelpers.js} +7 -2
  266. package/{src/utils → utils}/validationHelpers.d.ts +0 -0
  267. package/utils/validationHelpers.d.ts.map +1 -0
  268. package/utils/validationHelpers.js +88 -0
  269. package/src/bcp47/bcp47Subtags/converters.d.ts.map +0 -1
  270. package/src/bcp47/bcp47Subtags/index.d.ts.map +0 -1
  271. package/src/bcp47/bcp47Subtags/model.d.ts.map +0 -1
  272. package/src/bcp47/bcp47Subtags/model.js +0 -24
  273. package/src/bcp47/bcp47Subtags/validate.d.ts.map +0 -1
  274. package/src/bcp47/bcp47Subtags/validate.js +0 -74
  275. package/src/bcp47/common.d.ts.map +0 -1
  276. package/src/bcp47/common.js +0 -59
  277. package/src/bcp47/helpers.d.ts.map +0 -1
  278. package/src/bcp47/helpers.js +0 -103
  279. package/src/bcp47/index.d.ts.map +0 -1
  280. package/src/bcp47/index.js +0 -27
  281. package/src/bcp47/languageTag.d.ts.map +0 -1
  282. package/src/bcp47/languageTag.js +0 -342
  283. package/src/bcp47/languageTagParser.d.ts.map +0 -1
  284. package/src/bcp47/languageTagParser.js +0 -310
  285. package/src/bcp47/match/chooser.d.ts.map +0 -1
  286. package/src/bcp47/match/chooser.js +0 -92
  287. package/src/bcp47/match/common.d.ts.map +0 -1
  288. package/src/bcp47/match/common.js +0 -42
  289. package/src/bcp47/match/index.d.ts.map +0 -1
  290. package/src/bcp47/match/index.js +0 -45
  291. package/src/bcp47/match/similarity.d.ts.map +0 -1
  292. package/src/bcp47/match/similarity.js +0 -230
  293. package/src/bcp47/normalization/baseNormalizer.d.ts.map +0 -1
  294. package/src/bcp47/normalization/baseNormalizer.js +0 -114
  295. package/src/bcp47/normalization/canonicalNormalizer.d.ts.map +0 -1
  296. package/src/bcp47/normalization/canonicalNormalizer.js +0 -110
  297. package/src/bcp47/normalization/common.d.ts.map +0 -1
  298. package/src/bcp47/normalization/common.js +0 -82
  299. package/src/bcp47/normalization/index.d.ts.map +0 -1
  300. package/src/bcp47/normalization/normalizeTag.d.ts.map +0 -1
  301. package/src/bcp47/normalization/normalizeTag.js +0 -105
  302. package/src/bcp47/normalization/preferredTagNormalizer.d.ts.map +0 -1
  303. package/src/bcp47/normalization/preferredTagNormalizer.js +0 -178
  304. package/src/bcp47/overrides/converters.d.ts.map +0 -1
  305. package/src/bcp47/overrides/converters.js +0 -75
  306. package/src/bcp47/overrides/defaultRegistries.d.ts.map +0 -1
  307. package/src/bcp47/overrides/index.d.ts.map +0 -1
  308. package/src/bcp47/overrides/index.js +0 -30
  309. package/src/bcp47/overrides/model.d.ts.map +0 -1
  310. package/src/bcp47/overrides/overridesRegistry.d.ts.map +0 -1
  311. package/src/bcp47/overrides/overridesRegistry.js +0 -112
  312. package/src/bcp47/validation/baseValidator.d.ts.map +0 -1
  313. package/src/bcp47/validation/baseValidator.js +0 -111
  314. package/src/bcp47/validation/common.d.ts.map +0 -1
  315. package/src/bcp47/validation/common.js +0 -84
  316. package/src/bcp47/validation/index.d.ts.map +0 -1
  317. package/src/bcp47/validation/index.js +0 -51
  318. package/src/bcp47/validation/isCanonical.d.ts.map +0 -1
  319. package/src/bcp47/validation/isCanonical.js +0 -101
  320. package/src/bcp47/validation/isInPreferredForm.d.ts.map +0 -1
  321. package/src/bcp47/validation/isInPreferredForm.js +0 -73
  322. package/src/bcp47/validation/isStrictlyValid.d.ts.map +0 -1
  323. package/src/bcp47/validation/isStrictlyValid.js +0 -98
  324. package/src/bcp47/validation/isValid.d.ts.map +0 -1
  325. package/src/bcp47/validation/isValid.js +0 -115
  326. package/src/bcp47/validation/isWellFormed.d.ts.map +0 -1
  327. package/src/bcp47/validation/isWellFormed.js +0 -98
  328. package/src/bcp47/validation/validateTag.d.ts.map +0 -1
  329. package/src/bcp47/validation/validateTag.js +0 -159
  330. package/src/iana/common/converters.d.ts.map +0 -1
  331. package/src/iana/common/converters.js +0 -84
  332. package/src/iana/common/model.d.ts.map +0 -1
  333. package/src/iana/common/registeredItems.d.ts.map +0 -1
  334. package/src/iana/common/registeredItems.js +0 -124
  335. package/src/iana/common/utils.d.ts.map +0 -1
  336. package/src/iana/common/utils.js +0 -34
  337. package/src/iana/common/validate.d.ts.map +0 -1
  338. package/src/iana/common/validate.js +0 -61
  339. package/src/iana/converters.d.ts.map +0 -1
  340. package/src/iana/defaultRegistries.d.ts.map +0 -1
  341. package/src/iana/defaultRegistries.js +0 -42
  342. package/src/iana/index.d.ts.map +0 -1
  343. package/src/iana/jar/converters.d.ts.map +0 -1
  344. package/src/iana/jar/index.d.ts.map +0 -1
  345. package/src/iana/jar/jarConverters.d.ts.map +0 -1
  346. package/src/iana/jar/jarConverters.js +0 -85
  347. package/src/iana/jar/jarModel.d.ts.map +0 -1
  348. package/src/iana/jar/jarModel.js +0 -24
  349. package/src/iana/jar/language-subtags/converters.d.ts.map +0 -1
  350. package/src/iana/jar/language-subtags/index.d.ts.map +0 -1
  351. package/src/iana/jar/language-subtags/model.d.ts.map +0 -1
  352. package/src/iana/jar/language-subtags/registry/converters.d.ts.map +0 -1
  353. package/src/iana/jar/language-subtags/registry/index.d.ts.map +0 -1
  354. package/src/iana/jar/language-subtags/registry/model.d.ts.map +0 -1
  355. package/src/iana/jar/language-subtags/registry/model.js +0 -41
  356. package/src/iana/jar/language-subtags/tags/converters.d.ts.map +0 -1
  357. package/src/iana/jar/language-subtags/tags/converters.js +0 -128
  358. package/src/iana/jar/language-subtags/tags/index.d.ts.map +0 -1
  359. package/src/iana/jar/language-subtags/tags/model.d.ts.map +0 -1
  360. package/src/iana/jar/language-subtags/tags/tagValidation.d.ts.map +0 -1
  361. package/src/iana/jar/language-subtags/tags/tagValidation.js +0 -70
  362. package/src/iana/jar/language-subtags/tags/validate.d.ts.map +0 -1
  363. package/src/iana/jar/language-subtags/tags/validate.js +0 -87
  364. package/src/iana/jar/model.d.ts.map +0 -1
  365. package/src/iana/language-subtags/common.d.ts.map +0 -1
  366. package/src/iana/language-subtags/converters.d.ts.map +0 -1
  367. package/src/iana/language-subtags/converters.js +0 -200
  368. package/src/iana/language-subtags/index.d.ts.map +0 -1
  369. package/src/iana/language-subtags/jarConverters.d.ts.map +0 -1
  370. package/src/iana/language-subtags/jarConverters.js +0 -213
  371. package/src/iana/language-subtags/model.d.ts.map +0 -1
  372. package/src/iana/language-subtags/model.js +0 -24
  373. package/src/iana/language-subtags/scope.d.ts.map +0 -1
  374. package/src/iana/language-subtags/scope.js +0 -179
  375. package/src/iana/language-subtags/subtagRegistry.d.ts.map +0 -1
  376. package/src/iana/language-subtags/subtagRegistry.js +0 -149
  377. package/src/iana/language-subtags/validate.d.ts.map +0 -1
  378. package/src/iana/language-tag-extensions/converters.d.ts.map +0 -1
  379. package/src/iana/language-tag-extensions/converters.js +0 -87
  380. package/src/iana/language-tag-extensions/extensionsRegistry.d.ts.map +0 -1
  381. package/src/iana/language-tag-extensions/extensionsRegistry.js +0 -104
  382. package/src/iana/language-tag-extensions/extensionsScope.d.ts.map +0 -1
  383. package/src/iana/language-tag-extensions/extensionsScope.js +0 -77
  384. package/src/iana/language-tag-extensions/index.d.ts.map +0 -1
  385. package/src/iana/language-tag-extensions/jarConverters.d.ts.map +0 -1
  386. package/src/iana/language-tag-extensions/jarConverters.js +0 -102
  387. package/src/iana/language-tag-extensions/model.d.ts.map +0 -1
  388. package/src/iana/language-tag-extensions/model.js +0 -24
  389. package/src/iana/language-tag-extensions/validate.d.ts.map +0 -1
  390. package/src/iana/language-tag-extensions/validate.js +0 -36
  391. package/src/iana/languageRegistries.d.ts.map +0 -1
  392. package/src/iana/languageRegistries.js +0 -56
  393. package/src/iana/model.d.ts.map +0 -1
  394. package/src/iana/validate.d.ts.map +0 -1
  395. package/src/index.d.ts.map +0 -1
  396. package/src/unsd/areas.d.ts.map +0 -1
  397. package/src/unsd/areas.js +0 -96
  398. package/src/unsd/common.d.ts.map +0 -1
  399. package/src/unsd/csv/converters.d.ts.map +0 -1
  400. package/src/unsd/csv/converters.js +0 -70
  401. package/src/unsd/csv/index.d.ts.map +0 -1
  402. package/src/unsd/csv/model.d.ts.map +0 -1
  403. package/src/unsd/defaultRegistries.d.ts.map +0 -1
  404. package/src/unsd/defaultRegistries.js +0 -42
  405. package/src/unsd/index.d.ts.map +0 -1
  406. package/src/unsd/regionCodes.d.ts.map +0 -1
  407. package/src/unsd/regionCodes.js +0 -121
  408. package/src/unsd/regions.d.ts.map +0 -1
  409. package/src/unsd/regions.js +0 -77
  410. package/src/utils/index.d.ts.map +0 -1
  411. package/src/utils/jsonHelpers.d.ts.map +0 -1
  412. package/src/utils/validationHelpers.d.ts.map +0 -1
  413. package/src/utils/validationHelpers.js +0 -88
@@ -0,0 +1,310 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022 Erik Fortune
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ * of this software and associated documentation files (the "Software"), to deal
7
+ * in the Software without restriction, including without limitation the rights
8
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ * copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in all
13
+ * copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ * SOFTWARE.
22
+ */
23
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ var desc = Object.getOwnPropertyDescriptor(m, k);
26
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
27
+ desc = { enumerable: true, get: function() { return m[k]; } };
28
+ }
29
+ Object.defineProperty(o, k2, desc);
30
+ }) : (function(o, m, k, k2) {
31
+ if (k2 === undefined) k2 = k;
32
+ o[k2] = m[k];
33
+ }));
34
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
35
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
36
+ }) : function(o, v) {
37
+ o["default"] = v;
38
+ });
39
+ var __importStar = (this && this.__importStar) || function (mod) {
40
+ if (mod && mod.__esModule) return mod;
41
+ var result = {};
42
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
43
+ __setModuleDefault(result, mod);
44
+ return result;
45
+ };
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.LanguageTagParser = void 0;
48
+ const Iana = __importStar(require("../iana"));
49
+ const ts_utils_1 = require("@fgv/ts-utils");
50
+ const bcp47Subtags_1 = require("./bcp47Subtags");
51
+ /**
52
+ * @public
53
+ */
54
+ class LanguageTagParser {
55
+ // istanbul ignore next
56
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
57
+ constructor() { }
58
+ /**
59
+ * Parses a string representation of a BCP-47 ({@link https://www.rfc-editor.org/rfc/rfc5646.html | RFC 5646})
60
+ * language tag, to produce a {@link Bcp47.Subtags | Subtags} object which
61
+ * breaks out each of the subtags.
62
+ * @param tag - The `string` language tag to be parsed.
63
+ * @param iana - Optional {@link Iana.LanguageRegistries | IANA language registries}
64
+ * to be used.
65
+ * @returns `Success` with the resulting {@link Bcp47.Subtags | subtags}
66
+ * or `Failure` with details if an error occurs.
67
+ * @public
68
+ */
69
+ static parse(tag, iana) {
70
+ // istanbul ignore next
71
+ iana = iana !== null && iana !== void 0 ? iana : Iana.DefaultRegistries.languageRegistries;
72
+ const status = {
73
+ tag,
74
+ iana,
75
+ subtags: tag.split('-'),
76
+ parsedSubtags: {},
77
+ };
78
+ status.next = status.subtags.shift();
79
+ return (0, ts_utils_1.allSucceed)([
80
+ this._parseGrandfatheredTag(status),
81
+ this._parsePrimaryLanguage(status),
82
+ this._parseExtlang(status),
83
+ this._parseScript(status),
84
+ this._parseRegion(status),
85
+ this._parseVariants(status),
86
+ this._parseExtensions(status),
87
+ this._parsePrivateSubtags(status),
88
+ this._parseTagEnd(status),
89
+ ], status).onSuccess(() => {
90
+ return (0, ts_utils_1.succeed)(status.parsedSubtags);
91
+ });
92
+ }
93
+ /**
94
+ * Determines if the entire tag matches a registered grandfathered tag.
95
+ * @param state - The {@link Bcp47.ParserState | current state} of the
96
+ * parse operation.
97
+ * @returns `Success` with the updated {@link Bcp47.Subtags | subtags}
98
+ * if a grandfathered tag is found, or `Success` with the supplied subtags
99
+ * if no matching grandfathered tag is found.
100
+ * @
101
+ * @internal
102
+ */
103
+ static _parseGrandfatheredTag(state) {
104
+ const grandfathered = state.iana.subtags.grandfathered.tryGet(state.tag);
105
+ if (grandfathered) {
106
+ state.parsedSubtags.grandfathered = state.tag;
107
+ // we consumed the whole thing
108
+ state.subtags.splice(0, state.subtags.length);
109
+ state.next = undefined;
110
+ }
111
+ return (0, ts_utils_1.succeed)(state.parsedSubtags);
112
+ }
113
+ /**
114
+ * Parses the primary language subtag of a supplied language tag.
115
+ * @param state - The {@link Bcp47.ParserState | current state} of the
116
+ * parse operation.
117
+ * @returns `Success` with supplied {@link Bcp47.Subtags | subtags}
118
+ * updated to include the primary language subtag, or `Failure` with details if an error
119
+ * occurs.
120
+ * @internal
121
+ */
122
+ static _parsePrimaryLanguage(state) {
123
+ // primary language subtag is required unless the entire tag is grandfathered or consists
124
+ // of only private tags
125
+ if (state.iana.subtags.languages.isWellFormed(state.next)) {
126
+ state.parsedSubtags.primaryLanguage = state.next;
127
+ state.next = state.subtags.shift();
128
+ return (0, ts_utils_1.succeed)(state.parsedSubtags);
129
+ }
130
+ else if (state.parsedSubtags.grandfathered !== undefined) {
131
+ return (0, ts_utils_1.succeed)(state.parsedSubtags);
132
+ }
133
+ else if (bcp47Subtags_1.Validate.privateUsePrefix.isWellFormed(state.next)) {
134
+ // just return with no primary language and the private tag
135
+ // parser will be invoked by the parent flow.
136
+ return (0, ts_utils_1.succeed)(state.parsedSubtags);
137
+ }
138
+ return (0, ts_utils_1.fail)(`${state.tag}: no primary language subtag`);
139
+ }
140
+ /**
141
+ * Parses the extlang subtag(s) of a supplied language tag.
142
+ * @param state - The {@link Bcp47.ParserState | current state} of the
143
+ * parse operation.
144
+ * @returns `Success` with supplied {@link Bcp47.Subtags | subtags}
145
+ * updated to include extlang subtags if present, or `Failure` with details if an error
146
+ * occurs.
147
+ * @internal
148
+ */
149
+ static _parseExtlang(state) {
150
+ // optional extlangs subtags
151
+ while (state.iana.subtags.extlangs.isWellFormed(state.next)) {
152
+ if (state.parsedSubtags.extlangs === undefined) {
153
+ state.parsedSubtags.extlangs = [state.next];
154
+ }
155
+ else if (state.parsedSubtags.extlangs.length < 3) {
156
+ state.parsedSubtags.extlangs.push(state.next);
157
+ }
158
+ else {
159
+ return (0, ts_utils_1.fail)(`${state.next}: too many extlang subtags`);
160
+ }
161
+ state.next = state.subtags.shift();
162
+ }
163
+ return (0, ts_utils_1.succeed)(state.parsedSubtags);
164
+ }
165
+ /**
166
+ * Parses the script subtag of a supplied language tag.
167
+ * @param state - The {@link Bcp47.ParserState | current state} of the
168
+ * parse operation.
169
+ * @returns `Success` with supplied {@link Bcp47.Subtags | subtags}
170
+ * updated to include the script subtag if present, or `Failure` with details if an error
171
+ * occurs.
172
+ * @internal
173
+ */
174
+ static _parseScript(state) {
175
+ // optional script subtag
176
+ if (state.iana.subtags.scripts.isWellFormed(state.next)) {
177
+ state.parsedSubtags.script = state.next;
178
+ state.next = state.subtags.shift();
179
+ }
180
+ return (0, ts_utils_1.succeed)(state.parsedSubtags);
181
+ }
182
+ /**
183
+ * Parses the region subtag of a supplied language tag.
184
+ * @param state - The {@link Bcp47.ParserState | current state} of the
185
+ * parse operation.
186
+ * @returns `Success` with supplied {@link Bcp47.Subtags | subtags}
187
+ * updated to include the region subtag if present, or `Failure` with details if an error
188
+ * occurs.
189
+ * @internal
190
+ */
191
+ static _parseRegion(state) {
192
+ // optional region subtag
193
+ if (state.iana.subtags.regions.isWellFormed(state.next)) {
194
+ state.parsedSubtags.region = state.next;
195
+ state.next = state.subtags.shift();
196
+ }
197
+ return (0, ts_utils_1.succeed)(state.parsedSubtags);
198
+ }
199
+ /**
200
+ * Parses the variant subtag(s) of a supplied language tag.
201
+ * @param state - The {@link Bcp47.ParserState | current state} of the
202
+ * parse operation.
203
+ * @returns `Success` with supplied {@link Bcp47.Subtags | subtags}
204
+ * updated to include the variant subtags if present, or `Failure` with details if an error
205
+ * occurs.
206
+ * @internal
207
+ */
208
+ static _parseVariants(state) {
209
+ // optional variant subtags
210
+ while (state.iana.subtags.variants.isWellFormed(state.next)) {
211
+ if (state.parsedSubtags.variants === undefined) {
212
+ state.parsedSubtags.variants = [state.next];
213
+ }
214
+ else {
215
+ state.parsedSubtags.variants.push(state.next);
216
+ }
217
+ state.next = state.subtags.shift();
218
+ }
219
+ return (0, ts_utils_1.succeed)(state.parsedSubtags);
220
+ }
221
+ /**
222
+ * Parses the extension subtag(s) of a supplied language tag.
223
+ * @param state - The {@link Bcp47.ParserState | current state} of the
224
+ * parse operation.
225
+ * @returns `Success` with supplied {@link Bcp47.Subtags | subtags}
226
+ * updated to include the extension subtags if present, or `Failure` with details if an error
227
+ * occurs.
228
+ * @internal
229
+ */
230
+ static _parseExtensions(state) {
231
+ // optional extension subtags
232
+ while (state.next !== undefined && bcp47Subtags_1.Validate.extensionSingleton.isWellFormed(state.next)) {
233
+ const singleton = state.next;
234
+ const values = [];
235
+ state.next = state.subtags.shift();
236
+ while (bcp47Subtags_1.Validate.extensionSubtag.isWellFormed(state.next)) {
237
+ values.push(state.next);
238
+ state.next = state.subtags.shift();
239
+ }
240
+ if (state.next !== undefined &&
241
+ !bcp47Subtags_1.Validate.extensionSingleton.isWellFormed(state.next) &&
242
+ !bcp47Subtags_1.Validate.extensionSingleton.isWellFormed(state.next)) {
243
+ return (0, ts_utils_1.fail)(`${state.next}: malformed extension subtag`);
244
+ }
245
+ else if (values.length < 1) {
246
+ return (0, ts_utils_1.fail)(`${state.tag}: extension '${singleton}' must have at least one subtag.`);
247
+ }
248
+ const value = values.join('-');
249
+ if (state.parsedSubtags.extensions === undefined) {
250
+ state.parsedSubtags.extensions = [{ singleton, value }];
251
+ }
252
+ else {
253
+ state.parsedSubtags.extensions.push({ singleton, value });
254
+ }
255
+ }
256
+ return (0, ts_utils_1.succeed)(state.parsedSubtags);
257
+ }
258
+ /**
259
+ * Parses the private use subtags of a supplied language tag.
260
+ * @param state - The {@link Bcp47.ParserState | current state} of the
261
+ * parse operation.
262
+ * @returns `Success` with supplied {@link Bcp47.Subtags | subtags}
263
+ * updated to include the private-use subtags if present, or `Failure` with details if an error
264
+ * occurs.
265
+ * @internal
266
+ */
267
+ static _parsePrivateSubtags(state) {
268
+ // optional private use subtags
269
+ while (state.next != undefined && bcp47Subtags_1.Validate.privateUsePrefix.isWellFormed(state.next)) {
270
+ const values = [];
271
+ state.next = state.subtags.shift();
272
+ while (state.next &&
273
+ !bcp47Subtags_1.Validate.privateUsePrefix.isWellFormed(state.next) &&
274
+ Iana.LanguageSubtags.Validate.extendedLanguageRange.isWellFormed(state.next)) {
275
+ values.push(state.next);
276
+ state.next = state.subtags.shift();
277
+ }
278
+ if (state.next !== undefined && !bcp47Subtags_1.Validate.privateUsePrefix.isWellFormed(state.next)) {
279
+ return (0, ts_utils_1.fail)(`${state.next}: malformed private-use subtag`);
280
+ }
281
+ else if (values.length < 1) {
282
+ return (0, ts_utils_1.fail)(`${state.tag}: private-use tag must have at least one subtag.`);
283
+ }
284
+ const value = values.join('-');
285
+ if (state.parsedSubtags.privateUse === undefined) {
286
+ state.parsedSubtags.privateUse = [value];
287
+ }
288
+ else {
289
+ state.parsedSubtags.privateUse.push(value);
290
+ }
291
+ }
292
+ return (0, ts_utils_1.succeed)(state.parsedSubtags);
293
+ }
294
+ /**
295
+ * Verifies {@link Bcp47.ParserState | parser state} at the end of a parse operation.
296
+ * @param state - The {@link Bcp47.ParserState | current state} of the
297
+ * parse operation.
298
+ * @returns `Success` if the tag was fully consumed, or `Failure` with details
299
+ * if unexpected subtags remain to be parsed.
300
+ * @internal
301
+ */
302
+ static _parseTagEnd(state) {
303
+ if (state.next !== undefined) {
304
+ return (0, ts_utils_1.fail)(`${state.next}: unexpected subtag`);
305
+ }
306
+ return (0, ts_utils_1.succeed)(state.parsedSubtags);
307
+ }
308
+ }
309
+ exports.LanguageTagParser = LanguageTagParser;
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VUYWdQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmNwNDcvbGFuZ3VhZ2VUYWdQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4Q0FBZ0M7QUFFaEMsNENBQTJFO0FBSTNFLGlEQUEwQztBQWExQzs7R0FFRztBQUNILE1BQWEsaUJBQWlCO0lBQzFCLHVCQUF1QjtJQUN2QixnRUFBZ0U7SUFDaEUsZ0JBQXVCLENBQUM7SUFFeEI7Ozs7Ozs7Ozs7T0FVRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBVyxFQUFFLElBQThCO1FBQzNELHVCQUF1QjtRQUN2QixJQUFJLEdBQUcsSUFBSSxhQUFKLElBQUksY0FBSixJQUFJLEdBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFnQjtZQUN4QixHQUFHO1lBQ0gsSUFBSTtZQUNKLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUN2QixhQUFhLEVBQUUsRUFBRTtTQUNwQixDQUFDO1FBQ0YsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXJDLE9BQU8sSUFBQSxxQkFBVSxFQUNiO1lBQ0ksSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQztZQUNuQyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQzNCLElBQUksQ0FBQyxnQkFB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Q3hDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ08sTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFrQjtRQUM1QyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQzFCLE9BQU8sSUFBQSxlQUFJLEVBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO1NBQ25EO1FBQ0QsT0FBTyxJQUFBLGtCQUFPLEVBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDSjtBQTVRRCw4Q0E0UUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0ICogYXMgSWFuYSBmcm9tICcuLi9pYW5hJztcblxuaW1wb3J0IHsgUmVzdWx0LCBTdWNjZXNzLCBhbGxTdWNjZWVkLCBmYWlsLCBzdWNjZWVkIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5cbmltcG9ydCB7IEV4dGVuc2lvblN1YnRhZyB9IGZyb20gJy4vYmNwNDdTdWJ0YWdzL21vZGVsJztcbmltcG9ydCB7IFN1YnRhZ3MgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBWYWxpZGF0ZSB9IGZyb20gJy4vYmNwNDdTdWJ0YWdzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuaW50ZXJmYWNlIFBhcnNlclN0YXRlIHtcbiAgICByZWFkb25seSBpYW5hOiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcztcbiAgICByZWFkb25seSB0YWc6IHN0cmluZztcbiAgICByZWFkb25seSBzdWJ0YWdzOiBzdHJpbmdbXTtcbiAgICByZWFkb25seSBwYXJzZWRTdWJ0YWdzOiBTdWJ0YWdzO1xuICAgIG5leHQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VUYWdQYXJzZXIge1xuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgQkNQLTQ3ICh7QGxpbmsgaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzU2NDYuaHRtbCB8IFJGQyA1NjQ2fSlcbiAgICAgKiBsYW5ndWFnZSB0YWcsIHRvIHByb2R1Y2UgYSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IFN1YnRhZ3N9IG9iamVjdCB3aGljaFxuICAgICAqIGJyZWFrcyBvdXQgZWFjaCBvZiB0aGUgc3VidGFncy5cbiAgICAgKiBAcGFyYW0gdGFnIC0gVGhlIGBzdHJpbmdgIGxhbmd1YWdlIHRhZyB0byBiZSBwYXJzZWQuXG4gICAgICogQHBhcmFtIGlhbmEgLSBPcHRpb25hbCB7QGxpbmsgSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXMgfCBJQU5BIGxhbmd1YWdlIHJlZ2lzdHJpZXN9XG4gICAgICogdG8gYmUgdXNlZC5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgcmVzdWx0aW5nIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBwYXJzZSh0YWc6IHN0cmluZywgaWFuYT86IElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgaWFuYSA9IGlhbmEgPz8gSWFuYS5EZWZhdWx0UmVnaXN0cmllcy5sYW5ndWFnZVJlZ2lzdHJpZXM7XG4gICAgICAgIGNvbnN0IHN0YXR1czogUGFyc2VyU3RhdGUgPSB7XG4gICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICBpYW5hLFxuICAgICAgICAgICAgc3VidGFnczogdGFnLnNwbGl0KCctJyksXG4gICAgICAgICAgICBwYXJzZWRTdWJ0YWdzOiB7fSxcbiAgICAgICAgfTtcbiAgICAgICAgc3RhdHVzLm5leHQgPSBzdGF0dXMuc3VidGFncy5zaGlmdCgpO1xuXG4gICAgICAgIHJldHVybiBhbGxTdWNjZWVkKFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlR3JhbmRmYXRoZXJlZFRhZyhzdGF0dXMpLFxuICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlUHJpbWFyeUxhbmd1YWdlKHN0YXR1cyksXG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VFeHRsYW5nKHN0YXR1cyksXG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VTY3JpcHQoc3RhdHVzKSxcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZVJlZ2lvbihzdGF0dXMpLFxuICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlVmFyaWFudHMoc3RhdHVzKSxcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZUV4dGVuc2lvbnMoc3RhdHVzKSxcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZVByaXZhdGVTdWJ0YWdzKHN0YXR1cyksXG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VUYWdFbmQoc3RhdHVzKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgKS5vblN1Y2Nlc3MoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdHVzLnBhcnNlZFN1YnRhZ3MpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBlbnRpcmUgdGFnIG1hdGNoZXMgYSByZWdpc3RlcmVkIGdyYW5kZmF0aGVyZWQgdGFnLlxuICAgICAqIEBwYXJhbSBzdGF0ZSAtIFRoZSB7QGxpbmsgQmNwNDcuUGFyc2VyU3RhdGUgfCBjdXJyZW50IHN0YXRlfSBvZiB0aGVcbiAgICAgKiBwYXJzZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggdGhlIHVwZGF0ZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfVxuICAgICAqIGlmIGEgZ3JhbmRmYXRoZXJlZCB0YWcgaXMgZm91bmQsIG9yIGBTdWNjZXNzYCB3aXRoIHRoZSBzdXBwbGllZCBzdWJ0YWdzXG4gICAgICogaWYgbm8gbWF0Y2hpbmcgZ3JhbmRmYXRoZXJlZCB0YWcgaXMgZm91bmQuXG4gICAgICogQFxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlR3JhbmRmYXRoZXJlZFRhZyhzdGF0ZTogUGFyc2VyU3RhdGUpOiBTdWNjZXNzPFN1YnRhZ3M+IHtcbiAgICAgICAgY29uc3QgZ3JhbmRmYXRoZXJlZCA9IHN0YXRlLmlhbmEuc3VidGFncy5ncmFuZGZhdGhlcmVkLnRyeUdldChzdGF0ZS50YWcpO1xuICAgICAgICBpZiAoZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy5ncmFuZGZhdGhlcmVkID0gc3RhdGUudGFnIGFzIElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLkdyYW5kZmF0aGVyZWRUYWc7XG4gICAgICAgICAgICAvLyB3ZSBjb25zdW1lZCB0aGUgd2hvbGUgdGhpbmdcbiAgICAgICAgICAgIHN0YXRlLnN1YnRhZ3Muc3BsaWNlKDAsIHN0YXRlLnN1YnRhZ3MubGVuZ3RoKTtcbiAgICAgICAgICAgIHN0YXRlLm5leHQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdGUucGFyc2VkU3VidGFncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSBwcmltYXJ5IGxhbmd1YWdlIHN1YnRhZyBvZiBhIHN1cHBsaWVkIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgY3VycmVudCBzdGF0ZX0gb2YgdGhlXG4gICAgICogcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIHByaW1hcnkgbGFuZ3VhZ2Ugc3VidGFnLCBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yXG4gICAgICogb2NjdXJzLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlUHJpbWFyeUxhbmd1YWdlKHN0YXRlOiBQYXJzZXJTdGF0ZSk6IFJlc3VsdDxTdWJ0YWdzPiB7XG4gICAgICAgIC8vIHByaW1hcnkgbGFuZ3VhZ2Ugc3VidGFnIGlzIHJlcXVpcmVkIHVubGVzcyB0aGUgZW50aXJlIHRhZyBpcyBncmFuZGZhdGhlcmVkIG9yIGNvbnNpc3RzXG4gICAgICAgIC8vIG9mIG9ubHkgcHJpdmF0ZSB0YWdzXG4gICAgICAgIGlmIChzdGF0ZS5pYW5hLnN1YnRhZ3MubGFuZ3VhZ2VzLmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UgPSBzdGF0ZS5uZXh0O1xuICAgICAgICAgICAgc3RhdGUubmV4dCA9IHN0YXRlLnN1YnRhZ3Muc2hpZnQoKTtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHN0YXRlLnBhcnNlZFN1YnRhZ3MpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnBhcnNlZFN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChzdGF0ZS5wYXJzZWRTdWJ0YWdzKTtcbiAgICAgICAgfSBlbHNlIGlmIChWYWxpZGF0ZS5wcml2YXRlVXNlUHJlZml4LmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgLy8ganVzdCByZXR1cm4gd2l0aCBubyBwcmltYXJ5IGxhbmd1YWdlIGFuZCB0aGUgcHJpdmF0ZSB0YWdcbiAgICAgICAgICAgIC8vIHBhcnNlciB3aWxsIGJlIGludm9rZWQgYnkgdGhlIHBhcmVudCBmbG93LlxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdGUucGFyc2VkU3VidGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUudGFnfTogbm8gcHJpbWFyeSBsYW5ndWFnZSBzdWJ0YWdgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIGV4dGxhbmcgc3VidGFnKHMpIG9mIGEgc3VwcGxpZWQgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEBwYXJhbSBzdGF0ZSAtIFRoZSB7QGxpbmsgQmNwNDcuUGFyc2VyU3RhdGUgfCBjdXJyZW50IHN0YXRlfSBvZiB0aGVcbiAgICAgKiBwYXJzZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggc3VwcGxpZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfVxuICAgICAqIHVwZGF0ZWQgdG8gaW5jbHVkZSBleHRsYW5nIHN1YnRhZ3MgaWYgcHJlc2VudCwgb3IgYEZhaWx1cmVgIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvclxuICAgICAqIG9jY3Vycy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9wYXJzZUV4dGxhbmcoc3RhdGU6IFBhcnNlclN0YXRlKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gb3B0aW9uYWwgZXh0bGFuZ3Mgc3VidGFnc1xuICAgICAgICB3aGlsZSAoc3RhdGUuaWFuYS5zdWJ0YWdzLmV4dGxhbmdzLmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgaWYgKHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0bGFuZ3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0bGFuZ3MgPSBbc3RhdGUubmV4dF07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0bGFuZ3MubGVuZ3RoIDwgMykge1xuICAgICAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0bGFuZ3MucHVzaChzdGF0ZS5uZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUubmV4dH06IHRvbyBtYW55IGV4dGxhbmcgc3VidGFnc2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdGUubmV4dCA9IHN0YXRlLnN1YnRhZ3Muc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdGF0ZS5wYXJzZWRTdWJ0YWdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIHNjcmlwdCBzdWJ0YWcgb2YgYSBzdXBwbGllZCBsYW5ndWFnZSB0YWcuXG4gICAgICogQHBhcmFtIHN0YXRlIC0gVGhlIHtAbGluayBCY3A0Ny5QYXJzZXJTdGF0ZSB8IGN1cnJlbnQgc3RhdGV9IG9mIHRoZVxuICAgICAqIHBhcnNlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCBzdXBwbGllZCB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9XG4gICAgICogdXBkYXRlZCB0byBpbmNsdWRlIHRoZSBzY3JpcHQgc3VidGFnIGlmIHByZXNlbnQsIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3JcbiAgICAgKiBvY2N1cnMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfcGFyc2VTY3JpcHQoc3RhdGU6IFBhcnNlclN0YXRlKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gb3B0aW9uYWwgc2NyaXB0IHN1YnRhZ1xuICAgICAgICBpZiAoc3RhdGUuaWFuYS5zdWJ0YWdzLnNjcmlwdHMuaXNXZWxsRm9ybWVkKHN0YXRlLm5leHQpKSB7XG4gICAgICAgICAgICBzdGF0ZS5wYXJzZWRTdWJ0YWdzLnNjcmlwdCA9IHN0YXRlLm5leHQ7XG4gICAgICAgICAgICBzdGF0ZS5uZXh0ID0gc3RhdGUuc3VidGFncy5zaGlmdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHN0YXRlLnBhcnNlZFN1YnRhZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyB0aGUgcmVnaW9uIHN1YnRhZyBvZiBhIHN1cHBsaWVkIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgY3VycmVudCBzdGF0ZX0gb2YgdGhlXG4gICAgICogcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIHJlZ2lvbiBzdWJ0YWcgaWYgcHJlc2VudCwgb3IgYEZhaWx1cmVgIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvclxuICAgICAqIG9jY3Vycy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9wYXJzZVJlZ2lvbihzdGF0ZTogUGFyc2VyU3RhdGUpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICAvLyBvcHRpb25hbCByZWdpb24gc3VidGFnXG4gICAgICAgIGlmIChzdGF0ZS5pYW5hLnN1YnRhZ3MucmVnaW9ucy5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dCkpIHtcbiAgICAgICAgICAgIHN0YXRlLnBhcnNlZFN1YnRhZ3MucmVnaW9uID0gc3RhdGUubmV4dDtcbiAgICAgICAgICAgIHN0YXRlLm5leHQgPSBzdGF0ZS5zdWJ0YWdzLnNoaWZ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdGUucGFyc2VkU3VidGFncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSB2YXJpYW50IHN1YnRhZyhzKSBvZiBhIHN1cHBsaWVkIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgY3VycmVudCBzdGF0ZX0gb2YgdGhlXG4gICAgICogcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIHZhcmlhbnQgc3VidGFncyBpZiBwcmVzZW50LCBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yXG4gICAgICogb2NjdXJzLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlVmFyaWFudHMoc3RhdGU6IFBhcnNlclN0YXRlKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgLy8gb3B0aW9uYWwgdmFyaWFudCBzdWJ0YWdzXG4gICAgICAgIHdoaWxlIChzdGF0ZS5pYW5hLnN1YnRhZ3MudmFyaWFudHMuaXNXZWxsRm9ybWVkKHN0YXRlLm5leHQpKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUucGFyc2VkU3VidGFncy52YXJpYW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy52YXJpYW50cyA9IFtzdGF0ZS5uZXh0XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy52YXJpYW50cy5wdXNoKHN0YXRlLm5leHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdGUubmV4dCA9IHN0YXRlLnN1YnRhZ3Muc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChzdGF0ZS5wYXJzZWRTdWJ0YWdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZXMgdGhlIGV4dGVuc2lvbiBzdWJ0YWcocykgb2YgYSBzdXBwbGllZCBsYW5ndWFnZSB0YWcuXG4gICAgICogQHBhcmFtIHN0YXRlIC0gVGhlIHtAbGluayBCY3A0Ny5QYXJzZXJTdGF0ZSB8IGN1cnJlbnQgc3RhdGV9IG9mIHRoZVxuICAgICAqIHBhcnNlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCBzdXBwbGllZCB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9XG4gICAgICogdXBkYXRlZCB0byBpbmNsdWRlIHRoZSBleHRlbnNpb24gc3VidGFncyBpZiBwcmVzZW50LCBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yXG4gICAgICogb2NjdXJzLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlRXh0ZW5zaW9ucyhzdGF0ZTogUGFyc2VyU3RhdGUpOiBSZXN1bHQ8U3VidGFncz4ge1xuICAgICAgICAvLyBvcHRpb25hbCBleHRlbnNpb24gc3VidGFnc1xuICAgICAgICB3aGlsZSAoc3RhdGUubmV4dCAhPT0gdW5kZWZpbmVkICYmIFZhbGlkYXRlLmV4dGVuc2lvblNpbmdsZXRvbi5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNpbmdsZXRvbiA9IHN0YXRlLm5leHQ7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXM6IEV4dGVuc2lvblN1YnRhZ1tdID0gW107XG4gICAgICAgICAgICBzdGF0ZS5uZXh0ID0gc3RhdGUuc3VidGFncy5zaGlmdCgpO1xuXG4gICAgICAgICAgICB3aGlsZSAoVmFsaWRhdGUuZXh0ZW5zaW9uU3VidGFnLmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSkge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKHN0YXRlLm5leHQpO1xuICAgICAgICAgICAgICAgIHN0YXRlLm5leHQgPSBzdGF0ZS5zdWJ0YWdzLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3RhdGUubmV4dCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgIVZhbGlkYXRlLmV4dGVuc2lvblNpbmdsZXRvbi5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dCkgJiZcbiAgICAgICAgICAgICAgICAhVmFsaWRhdGUuZXh0ZW5zaW9uU2luZ2xldG9uLmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUubmV4dH06IG1hbGZvcm1lZCBleHRlbnNpb24gc3VidGFnYCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlcy5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUudGFnfTogZXh0ZW5zaW9uICcke3NpbmdsZXRvbn0nIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgc3VidGFnLmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlcy5qb2luKCctJykgYXMgRXh0ZW5zaW9uU3VidGFnO1xuICAgICAgICAgICAgaWYgKHN0YXRlLnBhcnNlZFN1YnRhZ3MuZXh0ZW5zaW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy5leHRlbnNpb25zID0gW3sgc2luZ2xldG9uLCB2YWx1ZSB9XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RhdGUucGFyc2VkU3VidGFncy5leHRlbnNpb25zLnB1c2goeyBzaW5nbGV0b24sIHZhbHVlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHN0YXRlLnBhcnNlZFN1YnRhZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyB0aGUgcHJpdmF0ZSB1c2Ugc3VidGFncyBvZiBhIHN1cHBsaWVkIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcGFyYW0gc3RhdGUgLSBUaGUge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgY3VycmVudCBzdGF0ZX0gb2YgdGhlXG4gICAgICogcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc31cbiAgICAgKiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIHByaXZhdGUtdXNlIHN1YnRhZ3MgaWYgcHJlc2VudCwgb3IgYEZhaWx1cmVgIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvclxuICAgICAqIG9jY3Vycy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9wYXJzZVByaXZhdGVTdWJ0YWdzKHN0YXRlOiBQYXJzZXJTdGF0ZSk6IFJlc3VsdDxTdWJ0YWdzPiB7XG4gICAgICAgIC8vIG9wdGlvbmFsIHByaXZhdGUgdXNlIHN1YnRhZ3NcbiAgICAgICAgd2hpbGUgKHN0YXRlLm5leHQgIT0gdW5kZWZpbmVkICYmIFZhbGlkYXRlLnByaXZhdGVVc2VQcmVmaXguaXNXZWxsRm9ybWVkKHN0YXRlLm5leHQpKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXM6IHN0cmluZ1tdID0gW107XG4gICAgICAgICAgICBzdGF0ZS5uZXh0ID0gc3RhdGUuc3VidGFncy5zaGlmdCgpO1xuXG4gICAgICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgICAgICAgc3RhdGUubmV4dCAmJlxuICAgICAgICAgICAgICAgICFWYWxpZGF0ZS5wcml2YXRlVXNlUHJlZml4LmlzV2VsbEZvcm1lZChzdGF0ZS5uZXh0KSAmJlxuICAgICAgICAgICAgICAgIElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLlZhbGlkYXRlLmV4dGVuZGVkTGFuZ3VhZ2VSYW5nZS5pc1dlbGxGb3JtZWQoc3RhdGUubmV4dClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKHN0YXRlLm5leHQpO1xuICAgICAgICAgICAgICAgIHN0YXRlLm5leHQgPSBzdGF0ZS5zdWJ0YWdzLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdGF0ZS5uZXh0ICE9PSB1bmRlZmluZWQgJiYgIVZhbGlkYXRlLnByaXZhdGVVc2VQcmVmaXguaXNXZWxsRm9ybWVkKHN0YXRlLm5leHQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUubmV4dH06IG1hbGZvcm1lZCBwcml2YXRlLXVzZSBzdWJ0YWdgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChgJHtzdGF0ZS50YWd9OiBwcml2YXRlLXVzZSB0YWcgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBzdWJ0YWcuYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzLmpvaW4oJy0nKSBhcyBJYW5hLkxhbmd1YWdlU3VidGFncy5FeHRlbmRlZExhbmd1YWdlUmFuZ2U7XG4gICAgICAgICAgICBpZiAoc3RhdGUucGFyc2VkU3VidGFncy5wcml2YXRlVXNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5wYXJzZWRTdWJ0YWdzLnByaXZhdGVVc2UgPSBbdmFsdWVdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5wYXJzZWRTdWJ0YWdzLnByaXZhdGVVc2UucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdGUucGFyc2VkU3VidGFncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmVyaWZpZXMge0BsaW5rIEJjcDQ3LlBhcnNlclN0YXRlIHwgcGFyc2VyIHN0YXRlfSBhdCB0aGUgZW5kIG9mIGEgcGFyc2Ugb3BlcmF0aW9uLlxuICAgICAqIEBwYXJhbSBzdGF0ZSAtIFRoZSB7QGxpbmsgQmNwNDcuUGFyc2VyU3RhdGUgfCBjdXJyZW50IHN0YXRlfSBvZiB0aGVcbiAgICAgKiBwYXJzZSBvcGVyYXRpb24uXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIGlmIHRoZSB0YWcgd2FzIGZ1bGx5IGNvbnN1bWVkLCBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzXG4gICAgICogaWYgdW5leHBlY3RlZCBzdWJ0YWdzIHJlbWFpbiB0byBiZSBwYXJzZWQuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfcGFyc2VUYWdFbmQoc3RhdGU6IFBhcnNlclN0YXRlKTogUmVzdWx0PFN1YnRhZ3M+IHtcbiAgICAgICAgaWYgKHN0YXRlLm5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7c3RhdGUubmV4dH06IHVuZXhwZWN0ZWQgc3VidGFnYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoc3RhdGUucGFyc2VkU3VidGFncyk7XG4gICAgfVxufVxuIl19
@@ -24,7 +24,7 @@ export interface MatchingLanguage {
24
24
  languageTag: LanguageTag;
25
25
  }
26
26
  /**
27
- * Options for {@link Bcp47.filter | language tag list filter} functions.
27
+ * Options for {@link Bcp47.choose | language tag list filter} functions.
28
28
  * @public
29
29
  */
30
30
  export interface LanguageChooserOptions {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chooser.d.ts","sourceRoot":"","sources":["../../../src/bcp47/match/chooser.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;OAGG;IACH,GAAG,CAAC,EAAE,iBAAiB,GAAG,mBAAmB,CAAC;IAE9C;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;IAEpC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;CACrD;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,sBAG1C,CAAC;AAEH;;;;GAIG;AACH,qBAAa,eAAe;IACxB;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;gBAEpC,IAAI,CAAC,EAAE,IAAI,CAAC,kBAAkB;IAI1C,6BAA6B,CAChC,gBAAgB,EAAE,WAAW,EAAE,EAC/B,kBAAkB,EAAE,WAAW,EAAE,EACjC,OAAO,CAAC,EAAE,sBAAsB,GACjC,gBAAgB,EAAE;IAgDd,kBAAkB,CACrB,gBAAgB,EAAE,WAAW,EAAE,EAC/B,kBAAkB,EAAE,WAAW,EAAE,EACjC,OAAO,CAAC,EAAE,sBAAsB,GACjC,WAAW,EAAE;CAGnB"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022 Erik Fortune
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ * of this software and associated documentation files (the "Software"), to deal
7
+ * in the Software without restriction, including without limitation the rights
8
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ * copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in all
13
+ * copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ * SOFTWARE.
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.LanguageChooser = exports.defaultLanguageChooserOptions = void 0;
25
+ const similarity_1 = require("./similarity");
26
+ const languageTag_1 = require("../languageTag");
27
+ /**
28
+ * Default values for a{@link Bcp47.LanguageFilterOptions}.
29
+ * @public
30
+ */
31
+ exports.defaultLanguageChooserOptions = Object.freeze({
32
+ use: 'availableLanguage',
33
+ filter: 'primaryLanguage',
34
+ });
35
+ /**
36
+ * Helper to compare a list of 'desired' languages to a list of 'available' language
37
+ * and return the intersection in order of preference, taking tag semantics into account.
38
+ * @public
39
+ */
40
+ class LanguageChooser {
41
+ constructor(iana) {
42
+ this._matcher = new similarity_1.LanguageSimilarityMatcher(iana);
43
+ }
44
+ chooseLanguageTagsWithDetails(desiredLanguages, availableLanguages, options) {
45
+ var _a;
46
+ const matched = new Map();
47
+ const decrement = desiredLanguages.length < 10 ? 0.1 : 1.0 / desiredLanguages.length;
48
+ let base = 1.0;
49
+ // fill any missing fields from the default
50
+ options = { ...exports.defaultLanguageChooserOptions, ...options };
51
+ for (const want of desiredLanguages) {
52
+ base -= decrement;
53
+ for (const have of availableLanguages) {
54
+ const similarity = this._matcher.matchLanguageTags(want, have);
55
+ if (similarity > 0.0) {
56
+ const quality = base + similarity * decrement;
57
+ const languageTag = options.use === 'availableLanguage' ? have : want;
58
+ const tag = languageTag.tag;
59
+ const key = options.filter === 'primaryLanguage' ? (_a = languageTag.subtags.primaryLanguage) !== null && _a !== void 0 ? _a : tag : tag;
60
+ const match = {
61
+ quality,
62
+ tag,
63
+ languageTag,
64
+ };
65
+ const existing = matched.get(key);
66
+ if (!existing || existing.quality < quality) {
67
+ matched.set(key, match);
68
+ }
69
+ }
70
+ }
71
+ }
72
+ const values = Array.from(matched.values());
73
+ if (values.length > 1) {
74
+ // want descending order
75
+ values.sort((m1, m2) => m2.quality - m1.quality);
76
+ }
77
+ else if (values.length === 0 && options.ultimateFallback) {
78
+ const languageTag = options.ultimateFallback instanceof languageTag_1.LanguageTag
79
+ ? options.ultimateFallback
80
+ : languageTag_1.LanguageTag.create(options.ultimateFallback).orDefault();
81
+ if (languageTag) {
82
+ return [{ languageTag, tag: languageTag.tag, quality: 0 }];
83
+ }
84
+ }
85
+ return values;
86
+ }
87
+ filterLanguageTags(desiredLanguages, availableLanguages, options) {
88
+ return this.chooseLanguageTagsWithDetails(desiredLanguages, availableLanguages, options).map((t) => t.languageTag);
89
+ }
90
+ }
91
+ exports.LanguageChooser = LanguageChooser;
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvb3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iY3A0Ny9tYXRjaC9jaG9vc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUlILDZDQUF5RDtBQUN6RCxnREFBNkM7QUFxRDdDOzs7R0FHRztBQUNVLFFBQUEsNkJBQTZCLEdBQTJCLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDL0UsR0FBRyxFQUFFLG1CQUFtQjtJQUN4QixNQUFNLEVBQUUsaUJBQWlCO0NBQzVCLENBQUMsQ0FBQztBQUVIOzs7O0dBSUc7QUFDSCxNQUFhLGVBQWU7SUFNeEIsWUFBbUIsSUFBOEI7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHNDQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSw2QkFBNkIsQ0FDaEMsZ0JBQStCLEVBQy9CLGtCQUFpQyxFQUNqQyxPQUFnQzs7UUFFaEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7UUFDcEQsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1FBQ3JGLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUVmLDJDQUEyQztRQUMzQyxPQUFPLEdBQUcsRUFBRSxHQUFHLHFDQUE2QixFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFFM0QsS0FBSyxNQUFNLElBQUksSUFBSSxnQkFBZ0IsRUFBRTtZQUNqQyxJQUFJLElBQUksU0FBUyxDQUFDO1lBQ2xCLEtBQUssTUFBTSxJQUFJLElBQUksa0JBQWtCLEVBQUU7Z0JBQ25DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLFVBQVUsR0FBRyxHQUFHLEVBQUU7b0JBQ2xCLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxVQUFVLEdBQUcsU0FBUyxDQUFDO29CQUM5QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxLQUFLLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDdEUsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQztvQkFDNUIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsTUFBQSxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsbUNBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBRXBHLE1BQU0sS0FBSyxHQUFxQjt3QkFDNUIsT0FBTzt3QkFDUCxHQUFHO3dCQUNILFdBQVc7cUJBQ2QsQ0FBQztvQkFFRixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNsQyxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxFQUFFO3dCQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztxQkFDM0I7aUJBQ0o7YUFDSjtTQUNKO1FBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM1QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLHdCQUF3QjtZQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDcEQ7YUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4RCxNQUFNLFdBQVcsR0FDYixPQUFPLENBQUMsZ0JBQWdCLFlBQVkseUJBQVc7Z0JBQzNDLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCO2dCQUMxQixDQUFDLENBQUMseUJBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkUsSUFBSSxXQUFXLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQzlEO1NBQ0o7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sa0JBQWtCLENBQ3JCLGdCQUErQixFQUMvQixrQkFBaUMsRUFDakMsT0FBZ0M7UUFFaEMsT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkgsQ0FBQztDQUNKO0FBckVELDBDQXFFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBJYW5hIGZyb20gJy4uLy4uL2lhbmEnO1xuXG5pbXBvcnQgeyBMYW5ndWFnZVNpbWlsYXJpdHlNYXRjaGVyIH0gZnJvbSAnLi9zaW1pbGFyaXR5JztcbmltcG9ydCB7IExhbmd1YWdlVGFnIH0gZnJvbSAnLi4vbGFuZ3VhZ2VUYWcnO1xuaW1wb3J0IHsgU3VidGFncyB9IGZyb20gJy4uL2NvbW1vbic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBtYXRjaGluZyBmaWx0ZXJlZCBsYW5ndWFnZS5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRjaGluZ0xhbmd1YWdlIHtcbiAgICAvKipcbiAgICAgKiBOdW1lcmljIGluZGljYXRpb24gb2YgaG93IHdlbGwgdGhlIGxhbmd1YWdlIG1hdGNoZXMsXG4gICAgICogZnJvbSBwZXJmZWN0IChgMS4wYCkgdG8gbm90IGF0IGFsbCAoYDAuMGApLiAgV2hlblxuICAgICAqIG1hdGNoaW5nIGFuIG9yZGVyZWQgbGlzdCwgbGFuZ3VhZ2VzIGF0IHRoZSBmcm9udCBvZlxuICAgICAqIHRoZSBkZXNpcmVkIGxhbmd1YWdlIGxpc3QgYXJlIGFsd2F5cyBoaWdoZXIgcXVhbGl0eS5cbiAgICAgKi9cbiAgICBxdWFsaXR5OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogVGhlIGBzdHJpbmdgIHRhZyBvZiB0aGUgbWF0Y2hlZCBsYW5ndWFnZS5cbiAgICAgKi9cbiAgICB0YWc6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgbWF0Y2hlZCB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LlxuICAgICAqL1xuICAgIGxhbmd1YWdlVGFnOiBMYW5ndWFnZVRhZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgQmNwNDcuY2hvb3NlIHwgbGFuZ3VhZ2UgdGFnIGxpc3QgZmlsdGVyfSBmdW5jdGlvbnMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VDaG9vc2VyT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZSBtYXRjaGluZyBsYW5ndWFnZSBmcm9tIHRoZVxuICAgICAqIGRlc2lyZWQgbGlzdCBvciB0aGUgYXZhaWxhYmxlIGxpc3QuIERlZmF1bHQgaXMgYCdhdmFpbGFibGVMYW5ndWFnZSdgLlxuICAgICAqL1xuICAgIHVzZT86ICdkZXNpcmVkTGFuZ3VhZ2UnIHwgJ2F2YWlsYWJsZUxhbmd1YWdlJztcblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyBob3cgdG8gZmlsdGVyIHRoZSBsYW5ndWFnZSBsaXN0IC0gYCdwcmltYXJ5TGFuZ3VhZ2UnYFxuICAgICAqIGluZGljYXRlcyB0aGUgZWFjaCBwcmltYXJ5IGxhbmd1YWdlIHNob3VsZCBhcHBlYXIgb25seSBvbmNlIGluXG4gICAgICogdGhlIGxpc3QgaW4gaXRzIG1vc3Qgc2ltaWxhciBmb3JtLiAgQSBmaWx0ZXIgdmFsdWUgb2YgYCdub25lJ2BcbiAgICAgKiByZXBvcnRzIGFsbCBtYXRjaGluZyB2YXJpYW50cyBvZiBhbnkgcHJpbWFyeSBsYW5ndWFnZSBpbiBvcmRlclxuICAgICAqIG9mIHNpbWlsYXJpdHkuICBEZWZhdWx0IGlzIGAncHJpbWFyeUxhbmd1YWdlJ2BcbiAgICAgKi9cbiAgICBmaWx0ZXI/OiAncHJpbWFyeUxhbmd1YWdlJyB8ICdub25lJztcblxuICAgIC8qKlxuICAgICAqIEFuIG9wdGlvbmFsIHtAbGluayBCY3A0Ny5MYW5ndWFnZVNwZWMgfCBsYW5ndWFnZSBzcGVjaWZpY2F0aW9ufVxuICAgICAqIGluZGljYXRpbmcgYSBsYW5ndWFnZSB0byBiZSByZXR1cm5lZCBpZiB0aGUgZmlsdGVyIGNhbGwgd291bGRcbiAgICAgKiBvdGhlcndpc2UgcmV0dXJuIGFuIGVtcHR5IGxpc3QgKGkuZS4gbm8gbGFuZ3VhZ2VzIG1hdGNoKS5cbiAgICAgKi9cbiAgICB1bHRpbWF0ZUZhbGxiYWNrPzogc3RyaW5nIHwgU3VidGFncyB8IExhbmd1YWdlVGFnO1xufVxuXG4vKipcbiAqIERlZmF1bHQgdmFsdWVzIGZvciBhe0BsaW5rIEJjcDQ3Lkxhbmd1YWdlRmlsdGVyT3B0aW9uc30uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0TGFuZ3VhZ2VDaG9vc2VyT3B0aW9uczogTGFuZ3VhZ2VDaG9vc2VyT3B0aW9ucyA9IE9iamVjdC5mcmVlemUoe1xuICAgIHVzZTogJ2F2YWlsYWJsZUxhbmd1YWdlJyxcbiAgICBmaWx0ZXI6ICdwcmltYXJ5TGFuZ3VhZ2UnLFxufSk7XG5cbi8qKlxuICogSGVscGVyIHRvIGNvbXBhcmUgYSBsaXN0IG9mICdkZXNpcmVkJyBsYW5ndWFnZXMgdG8gYSBsaXN0IG9mICdhdmFpbGFibGUnIGxhbmd1YWdlXG4gKiBhbmQgcmV0dXJuIHRoZSBpbnRlcnNlY3Rpb24gaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgdGFraW5nIHRhZyBzZW1hbnRpY3MgaW50byBhY2NvdW50LlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VDaG9vc2VyIHtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX21hdGNoZXI6IExhbmd1YWdlU2ltaWxhcml0eU1hdGNoZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaWFuYT86IElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzKSB7XG4gICAgICAgIHRoaXMuX21hdGNoZXIgPSBuZXcgTGFuZ3VhZ2VTaW1pbGFyaXR5TWF0Y2hlcihpYW5hKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hvb3NlTGFuZ3VhZ2VUYWdzV2l0aERldGFpbHMoXG4gICAgICAgIGRlc2lyZWRMYW5ndWFnZXM6IExhbmd1YWdlVGFnW10sXG4gICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlczogTGFuZ3VhZ2VUYWdbXSxcbiAgICAgICAgb3B0aW9ucz86IExhbmd1YWdlQ2hvb3Nlck9wdGlvbnNcbiAgICApOiBNYXRjaGluZ0xhbmd1YWdlW10ge1xuICAgICAgICBjb25zdCBtYXRjaGVkID0gbmV3IE1hcDxzdHJpbmcsIE1hdGNoaW5nTGFuZ3VhZ2U+KCk7XG4gICAgICAgIGNvbnN0IGRlY3JlbWVudCA9IGRlc2lyZWRMYW5ndWFnZXMubGVuZ3RoIDwgMTAgPyAwLjEgOiAxLjAgLyBkZXNpcmVkTGFuZ3VhZ2VzLmxlbmd0aDtcbiAgICAgICAgbGV0IGJhc2UgPSAxLjA7XG5cbiAgICAgICAgLy8gZmlsbCBhbnkgbWlzc2luZyBmaWVsZHMgZnJvbSB0aGUgZGVmYXVsdFxuICAgICAgICBvcHRpb25zID0geyAuLi5kZWZhdWx0TGFuZ3VhZ2VDaG9vc2VyT3B0aW9ucywgLi4ub3B0aW9ucyB9O1xuXG4gICAgICAgIGZvciAoY29uc3Qgd2FudCBvZiBkZXNpcmVkTGFuZ3VhZ2VzKSB7XG4gICAgICAgICAgICBiYXNlIC09IGRlY3JlbWVudDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaGF2ZSBvZiBhdmFpbGFibGVMYW5ndWFnZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzaW1pbGFyaXR5ID0gdGhpcy5fbWF0Y2hlci5tYXRjaExhbmd1YWdlVGFncyh3YW50LCBoYXZlKTtcbiAgICAgICAgICAgICAgICBpZiAoc2ltaWxhcml0eSA+IDAuMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBxdWFsaXR5ID0gYmFzZSArIHNpbWlsYXJpdHkgKiBkZWNyZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhbmd1YWdlVGFnID0gb3B0aW9ucy51c2UgPT09ICdhdmFpbGFibGVMYW5ndWFnZScgPyBoYXZlIDogd2FudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFnID0gbGFuZ3VhZ2VUYWcudGFnO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBvcHRpb25zLmZpbHRlciA9PT0gJ3ByaW1hcnlMYW5ndWFnZScgPyBsYW5ndWFnZVRhZy5zdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSA/PyB0YWcgOiB0YWc7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2g6IE1hdGNoaW5nTGFuZ3VhZ2UgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBxdWFsaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VUYWcsXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBtYXRjaGVkLmdldChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nIHx8IGV4aXN0aW5nLnF1YWxpdHkgPCBxdWFsaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLnNldChrZXksIG1hdGNoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmZyb20obWF0Y2hlZC52YWx1ZXMoKSk7XG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgLy8gd2FudCBkZXNjZW5kaW5nIG9yZGVyXG4gICAgICAgICAgICB2YWx1ZXMuc29ydCgobTEsIG0yKSA9PiBtMi5xdWFsaXR5IC0gbTEucXVhbGl0eSk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCAmJiBvcHRpb25zLnVsdGltYXRlRmFsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGxhbmd1YWdlVGFnID1cbiAgICAgICAgICAgICAgICBvcHRpb25zLnVsdGltYXRlRmFsbGJhY2sgaW5zdGFuY2VvZiBMYW5ndWFnZVRhZ1xuICAgICAgICAgICAgICAgICAgICA/IG9wdGlvbnMudWx0aW1hdGVGYWxsYmFja1xuICAgICAgICAgICAgICAgICAgICA6IExhbmd1YWdlVGFnLmNyZWF0ZShvcHRpb25zLnVsdGltYXRlRmFsbGJhY2spLm9yRGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKGxhbmd1YWdlVGFnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt7IGxhbmd1YWdlVGFnLCB0YWc6IGxhbmd1YWdlVGFnLnRhZywgcXVhbGl0eTogMCB9XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXJMYW5ndWFnZVRhZ3MoXG4gICAgICAgIGRlc2lyZWRMYW5ndWFnZXM6IExhbmd1YWdlVGFnW10sXG4gICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlczogTGFuZ3VhZ2VUYWdbXSxcbiAgICAgICAgb3B0aW9ucz86IExhbmd1YWdlQ2hvb3Nlck9wdGlvbnNcbiAgICApOiBMYW5ndWFnZVRhZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hvb3NlTGFuZ3VhZ2VUYWdzV2l0aERldGFpbHMoZGVzaXJlZExhbmd1YWdlcywgYXZhaWxhYmxlTGFuZ3VhZ2VzLCBvcHRpb25zKS5tYXAoKHQpID0+IHQubGFuZ3VhZ2VUYWcpO1xuICAgIH1cbn1cbiJdfQ==
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/bcp47/match/common.ts"],"names":[],"mappings":"AAsBA;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;CAYzB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,aAAa,CAAC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022 Erik Fortune
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ * of this software and associated documentation files (the "Software"), to deal
7
+ * in the Software without restriction, including without limitation the rights
8
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ * copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in all
13
+ * copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ * SOFTWARE.
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.tagSimilarity = void 0;
25
+ /**
26
+ * Common levels of match quality for a single language match.
27
+ * @public
28
+ */
29
+ exports.tagSimilarity = {
30
+ exact: 1.0,
31
+ variant: 0.9,
32
+ region: 0.8,
33
+ macroRegion: 0.7,
34
+ neutralRegion: 0.6,
35
+ preferredAffinity: 0.55,
36
+ affinity: 0.5,
37
+ preferredRegion: 0.4,
38
+ sibling: 0.3,
39
+ undetermined: 0.2,
40
+ none: 0,
41
+ };
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JjcDQ3L21hdGNoL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUFFSDs7O0dBR0c7QUFDVSxRQUFBLGFBQWEsR0FBRztJQUN6QixLQUFLLEVBQUUsR0FBRztJQUNWLE9BQU8sRUFBRSxHQUFHO0lBQ1osTUFBTSxFQUFFLEdBQUc7SUFDWCxXQUFXLEVBQUUsR0FBRztJQUNoQixhQUFhLEVBQUUsR0FBRztJQUNsQixpQkFBaUIsRUFBRSxJQUFJO0lBQ3ZCLFFBQVEsRUFBRSxHQUFHO0lBQ2IsZUFBZSxFQUFFLEdBQUc7SUFDcEIsT0FBTyxFQUFFLEdBQUc7SUFDWixZQUFZLEVBQUUsR0FBRztJQUNqQixJQUFJLEVBQUUsQ0FBQztDQUNWLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuLyoqXG4gKiBDb21tb24gbGV2ZWxzIG9mIG1hdGNoIHF1YWxpdHkgZm9yIGEgc2luZ2xlIGxhbmd1YWdlIG1hdGNoLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdGFnU2ltaWxhcml0eSA9IHtcbiAgICBleGFjdDogMS4wLFxuICAgIHZhcmlhbnQ6IDAuOSxcbiAgICByZWdpb246IDAuOCxcbiAgICBtYWNyb1JlZ2lvbjogMC43LFxuICAgIG5ldXRyYWxSZWdpb246IDAuNixcbiAgICBwcmVmZXJyZWRBZmZpbml0eTogMC41NSxcbiAgICBhZmZpbml0eTogMC41LFxuICAgIHByZWZlcnJlZFJlZ2lvbjogMC40LFxuICAgIHNpYmxpbmc6IDAuMyxcbiAgICB1bmRldGVybWluZWQ6IDAuMixcbiAgICBub25lOiAwLFxufTtcblxuLyoqXG4gKiBOdW1lcmljIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBxdWFsaXR5IG9mIGEgbGFuZ3VhZ2UgbWF0Y2guXG4gKiBSYW5nZSBpcyAwIChubyBtYXRjaCkgdG8gMSAoZXhhY3QgbWF0Y2gpLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBUYWdTaW1pbGFyaXR5ID0ga2V5b2YgdHlwZW9mIHRhZ1NpbWlsYXJpdHk7XG4iXX0=
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bcp47/match/index.ts"],"names":[],"mappings":"AAuBA,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,eAAe,IAAI,cAAc,EAAE,sBAAsB,IAAI,qBAAqB,EAAE,MAAM,WAAW,CAAC"}
@@ -20,6 +20,7 @@
20
20
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  * SOFTWARE.
22
22
  */
23
+ // istanbul ignore file
23
24
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
24
25
  if (k2 === undefined) k2 = k;
25
26
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -31,28 +32,14 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
31
32
  if (k2 === undefined) k2 = k;
32
33
  o[k2] = m[k];
33
34
  }));
34
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
35
- Object.defineProperty(o, "default", { enumerable: true, value: v });
36
- }) : function(o, v) {
37
- o["default"] = v;
38
- });
39
- var __importStar = (this && this.__importStar) || function (mod) {
40
- if (mod && mod.__esModule) return mod;
41
- var result = {};
42
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
43
- __setModuleDefault(result, mod);
44
- return result;
35
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
45
37
  };
46
38
  Object.defineProperty(exports, "__esModule", { value: true });
47
- exports.registryScopeType = exports.registryEntryType = void 0;
48
- const Model = __importStar(require("./model"));
49
- const ts_utils_1 = require("@fgv/ts-utils");
50
- /**
51
- * @internal
52
- */
53
- exports.registryEntryType = ts_utils_1.Converters.enumeratedValue(Model.allRegistryEntryTypes);
54
- /**
55
- * @internal
56
- */
57
- exports.registryScopeType = ts_utils_1.Converters.enumeratedValue(Model.allRegistryEntryScopes);
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9pYW5hL2phci9sYW5ndWFnZS1zdWJ0YWdzL3JlZ2lzdHJ5L2NvbnZlcnRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwrQ0FBaUM7QUFFakMsNENBQTJDO0FBRTNDOztHQUVHO0FBQ1UsUUFBQSxpQkFBaUIsR0FBRyxxQkFBVSxDQUFDLGVBQWUsQ0FBMEIsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFFbEg7O0dBRUc7QUFDVSxRQUFBLGlCQUFpQixHQUFHLHFCQUFVLENBQUMsZUFBZSxDQUEyQixLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBNb2RlbCBmcm9tICcuL21vZGVsJztcblxuaW1wb3J0IHsgQ29udmVydGVycyB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgcmVnaXN0cnlFbnRyeVR5cGUgPSBDb252ZXJ0ZXJzLmVudW1lcmF0ZWRWYWx1ZTxNb2RlbC5SZWdpc3RyeUVudHJ5VHlwZT4oTW9kZWwuYWxsUmVnaXN0cnlFbnRyeVR5cGVzKTtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHJlZ2lzdHJ5U2NvcGVUeXBlID0gQ29udmVydGVycy5lbnVtZXJhdGVkVmFsdWU8TW9kZWwuUmVnaXN0cnlFbnRyeVNjb3BlPihNb2RlbC5hbGxSZWdpc3RyeUVudHJ5U2NvcGVzKTtcbiJdfQ==
39
+ exports.LanguageFilter = exports.LanguageSimilarityMatcher = void 0;
40
+ __exportStar(require("./common"), exports);
41
+ var similarity_1 = require("./similarity");
42
+ Object.defineProperty(exports, "LanguageSimilarityMatcher", { enumerable: true, get: function () { return similarity_1.LanguageSimilarityMatcher; } });
43
+ var chooser_1 = require("./chooser");
44
+ Object.defineProperty(exports, "LanguageFilter", { enumerable: true, get: function () { return chooser_1.LanguageChooser; } });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmNwNDcvbWF0Y2gvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILHVCQUF1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdkIsMkNBQXlCO0FBQ3pCLDJDQUF5RDtBQUFoRCx1SEFBQSx5QkFBeUIsT0FBQTtBQUNsQyxxQ0FBaUk7QUFBdEcseUdBQUEsZUFBZSxPQUFrQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuLy8gaXN0YW5idWwgaWdub3JlIGZpbGVcblxuZXhwb3J0ICogZnJvbSAnLi9jb21tb24nO1xuZXhwb3J0IHsgTGFuZ3VhZ2VTaW1pbGFyaXR5TWF0Y2hlciB9IGZyb20gJy4vc2ltaWxhcml0eSc7XG5leHBvcnQgeyBNYXRjaGluZ0xhbmd1YWdlLCBMYW5ndWFnZUNob29zZXIgYXMgTGFuZ3VhZ2VGaWx0ZXIsIExhbmd1YWdlQ2hvb3Nlck9wdGlvbnMgYXMgTGFuZ3VhZ2VGaWx0ZXJPcHRpb25zIH0gZnJvbSAnLi9jaG9vc2VyJztcbiJdfQ==
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"similarity.d.ts","sourceRoot":"","sources":["../../../src/bcp47/match/similarity.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAqB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAKpE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C;;;;GAIG;AACH,qBAAa,yBAAyB;IAC3B,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC;IAC9B,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC;IACvB,SAAS,EAAE,iBAAiB,CAAC;gBAEjB,IAAI,CAAC,EAAE,IAAI,CAAC,kBAAkB;IAO1C,iBAAiB,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,GAAG,MAAM;IAkB3D,oBAAoB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IAiBhE,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IAgBxD,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IAevD,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IA0EvD,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IAgBzD,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IAmB3D,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;CAezE"}