@whiteslove/parsing-lexicon 0.6.11 → 0.6.14

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 (34) hide show
  1. package/package.json +1 -1
  2. package/src/geography-detection.js +13 -2
  3. package/src/geography.js +1 -1
  4. package/src/hiring-skills.js +3 -1
  5. package/src/hiring-source-semantics.js +5 -0
  6. package/src/housing-poi-extensions.js +47 -0
  7. package/src/kg-bishkek-residential-extensions.js +33 -0
  8. package/src/kg-bishkek-street-extensions.js +72 -0
  9. package/src/kg-jalal-abad-location-extensions.js +36 -0
  10. package/src/kg-karakol-location-extensions.js +52 -0
  11. package/src/kg-location-extensions.js +37 -2
  12. package/src/kg-osh-location-extensions.js +62 -0
  13. package/src/kz-address-extensions.js +178 -0
  14. package/src/kz-almaty-cleaned-residential-extensions.js +75 -0
  15. package/src/kz-almaty-street-extensions.js +50 -0
  16. package/src/kz-astana-cleaned-residential-extensions.js +86 -0
  17. package/src/kz-city-residential-extensions.js +32 -0
  18. package/src/kz-kostanay-location-extensions.js +24 -0
  19. package/src/kz-microdistrict-extensions.js +44 -0
  20. package/src/kz-pavlodar-location-extensions.js +14 -0
  21. package/src/kz-primary-address-extensions.js +178 -0
  22. package/src/kz-regional-address-extensions.js +35 -0
  23. package/src/kz-regional-residential-extensions.js +80 -0
  24. package/src/kz-residential-extensions.js +137 -0
  25. package/src/kz-shymkent-cleaned-address-extensions.js +70 -0
  26. package/src/locations-runtime.js +88 -7
  27. package/src/ua-chernihiv-residential-extensions.js +28 -0
  28. package/src/ua-city-location-expansions.js +21 -5
  29. package/src/ua-kharkiv-location-translations.js +19 -0
  30. package/src/ua-kharkiv-microdistrict-extensions.js +10 -0
  31. package/src/ua-residential-extensions.js +53 -0
  32. package/src/uz-bukhara-location-extensions.js +14 -0
  33. package/src/uz-samarkand-context-extensions.js +105 -0
  34. package/src/uz-tashkent-context-extensions.js +79 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whiteslove/parsing-lexicon",
3
- "version": "0.6.11",
3
+ "version": "0.6.14",
4
4
  "description": "Shared deterministic multilingual parsing lexicon for WhitesLove housing and hiring services",
5
5
  "repository": {
6
6
  "type": "git",
@@ -33,14 +33,25 @@ const COUNTRY_MATCHERS = COUNTRIES.map((item) => {
33
33
  });
34
34
 
35
35
  const US_STATE_RE = /\b[A-Z][A-Za-z.'-]+(?:\s+[A-Z][A-Za-z.'-]+){0,3}\s*,?\s+(?:AL|AK|AZ|AR|CA|CO|CT|DE|FL|GA|HI|ID|IL|IN|IA|KS|KY|LA|ME|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VT|VA|WA|WV|WI|WY|DC)\b/;
36
- const CITY_CONTEXT_RE = /(?:shahr(?:i)?|город(?:а|е|у|ом)?|city|viloyat(?:i)?|област\p{L}{0,4})/iu;
36
+ const CITY_CONTEXT_RE = /(?:shahr(?:i)?|шаар(?:ы|ында|ына|ынан)?|город(?:а|е|у|ом)?|city|viloyat(?:i)?|област\p{L}{0,4})/iu;
37
+
38
+ function matchedAliasNeedsContext(item, matchedText) {
39
+ if (item.contextRequired === true) return true;
40
+ const guarded = item.contextRequiredAliases || [];
41
+ if (!guarded.length) return false;
42
+ const matched = normalizeForMatch(matchedText);
43
+ return guarded.some((alias) => {
44
+ const normalized = normalizeForMatch(alias);
45
+ return normalized && (matched === normalized || matched.startsWith(normalized));
46
+ });
47
+ }
37
48
 
38
49
  function cityTextMatch(text, matcher) {
39
50
  const exact = text.match(matcher.exact);
40
51
  const inflected = exact || !matcher.inflected ? null : text.match(matcher.inflected);
41
52
  const match = exact || inflected;
42
53
  if (!match) return null;
43
- if (!matcher.item.contextRequired) return match;
54
+ if (!matchedAliasNeedsContext(matcher.item, match[0])) return match;
44
55
 
45
56
  const start = match.index ?? 0;
46
57
  const end = start + match[0].length;
package/src/geography.js CHANGED
@@ -59,7 +59,7 @@ export const RO_CITIES = Object.freeze([...RO_CITIES_BASE, ...RO_CITY_EXTENSIONS
59
59
  export const KG_CITIES = Object.freeze([
60
60
  entity('Bishkek', { ky: ['Бишкек'], ru: ['Бишкек'], en: ['Bishkek'], kk: ['Бішкек'], uzLatn: ['Bishkek'] }, { country: 'KG', type: 'city' }),
61
61
  entity('Osh', { ky: ['Ош'], ru: ['Ош'], en: ['Osh'], kk: ['Ош'], uzLatn: ['Osh'] }, { country: 'KG', type: 'city' }),
62
- entity('Jalal-Abad', { ky: ['Жалал-Абад', 'Жалал Абад'], ru: ['Джалал-Абад', 'Джалал Абад'], en: ['Jalal-Abad', 'Jalalabad'] }, { country: 'KG', type: 'city' }),
62
+ entity('Manas', { ky: ['Манас', 'Манас шаары', 'Жалал-Абад', 'Жалал Абад'], ru: ['Манас', 'город Манас', 'Джалал-Абад', 'Джалал Абад'], en: ['Manas', 'Manas city', 'Jalal-Abad', 'Jalalabad'] }, { country: 'KG', type: 'city', contextRequiredAliases: ['Manas', 'Манас'] }),
63
63
  entity('Karakol', { ky: ['Каракол'], ru: ['Каракол', 'Пржевальск'], en: ['Karakol', 'Przhevalsk'], kk: ['Қаракөл'], uzLatn: ['Karakol'] }, { country: 'KG', type: 'city' }),
64
64
  entity('Tokmok', { ky: ['Токмок'], ru: ['Токмок'], en: ['Tokmok'] }, { country: 'KG', type: 'city' }),
65
65
  entity('Naryn', { ky: ['Нарын'], ru: ['Нарын'], en: ['Naryn'] }, { country: 'KG', type: 'city' }),
@@ -1,3 +1,5 @@
1
+ import { cleanHiringSourceText } from './hiring-source-semantics.js'
2
+
1
3
  // These canonical labels are ordinary words or one-letter tokens. Matching the
2
4
  // label itself would create noisy results; only their explicit aliases are safe.
3
5
  const AMBIGUOUS_CANONICALS = new Set(['C', 'Go', 'Make', 'REST', 'Spring'])
@@ -283,7 +285,7 @@ export function canonicalSkillName(value) {
283
285
  }
284
286
 
285
287
  export function extractSkillDetails(text) {
286
- const normalized = normalizeSkillText(text)
288
+ const normalized = normalizeSkillText(cleanHiringSourceText(text))
287
289
  const found = []
288
290
  const names = new Set()
289
291
  for (const { definition, patterns } of COMPILED_SKILLS) {
@@ -24,6 +24,10 @@ const FIELD_EXTRA_ALIASES = Object.freeze({
24
24
  const APPLICATION_MODAL_RE = /(?:отправить\s*резюме\s*)+(?:\[telegram\]\s*)?пол\s*мужской\s*женский\s*образование[\s\S]{0,500}?выберите\s*вакансию[\s\S]*/iu;
25
25
  const LEAKED_STYLESHEET_START_RE = /:root\s*\{\s*--[\w-]+\s*:/iu;
26
26
  const LEAKED_CSS_RULE_RE = /\s*(?:[.#][\w\\-]+|:root)(?:[^{}\n]{0,300})\{\s*(?:(?:--)?[\w-]+\s*:\s*[^;{}]+;?\s*)+\}\s*/giu;
27
+ // A leaked upload-input fragment (e.g. `_Resume.html'" value="Добавить резюме" />`)
28
+ // scraped from a job-board form. Its stray ".html" would otherwise be
29
+ // misread as the HTML skill/language.
30
+ const LEAKED_HTML_INPUT_RE = /[^\n<>]{0,120}?\bvalue\s*=\s*"[^"\n]*"\s*\/>\s*/giu;
27
31
  // Button/chrome labels copied along with a resume from Ukrainian job boards
28
32
  // (novarobota.ua, robota.ua, work.ua and similar). Matched as whole lines so
29
33
  // genuine resume prose is never touched.
@@ -35,6 +39,7 @@ export function cleanHiringSourceText(value) {
35
39
  const stylesheetStart = text.search(LEAKED_STYLESHEET_START_RE);
36
40
  return (stylesheetStart >= 0 ? text.slice(0, stylesheetStart) : text)
37
41
  .replace(APPLICATION_MODAL_RE, '')
42
+ .replace(LEAKED_HTML_INPUT_RE, '')
38
43
  .replace(LEAKED_CSS_RULE_RE, ' ')
39
44
  .split('\n')
40
45
  .filter((line) => !JOB_BOARD_UI_NOISE_RE.test(line.trim()))
@@ -144,12 +144,59 @@ export const HOUSING_POI_EXTENSIONS = Object.freeze([
144
144
  uk: ['Євробазар', 'ТЦ Євробазар'],
145
145
  en: ['Eurobazar'],
146
146
  }, { category: 'shopping_mall', country: 'UA', city: 'Sumy', display: { uk: 'ТЦ «Євробазар»', en: 'Eurobazar' } }),
147
+ group('Sumy Bus Station', {
148
+ uk: ['Автовокзал Суми', 'Сумський автовокзал', 'автовокзал на Степана Бандери'],
149
+ ru: ['автовокзал Сумы'],
150
+ en: ['Sumy Bus Station'],
151
+ }, { category: 'bus_station', country: 'UA', city: 'Sumy', display: { uk: 'Автовокзал Суми', en: 'Sumy Bus Station' } }),
147
152
  group('Sumy Railway Station', {
148
153
  uk: ['Суми (станція)', 'залізничний вокзал Суми', 'вокзал станції Суми'],
149
154
  en: ['Sumy railway station'],
150
155
  }, { category: 'transport', country: 'UA', city: 'Sumy', display: { uk: 'Залізничний вокзал Суми', en: 'Sumy Railway Station' } }),
156
+ group("Сумський м'ясокомбінат", {
157
+ uk: ["Сумський м'ясокомбінат", 'ВАТ «Сумський м\'ясокомбінат»'],
158
+ }, { category: 'landmark', country: 'UA', city: 'Sumy', display: { uk: "Сумський м'ясокомбінат" } }),
159
+ group('Sumy Airport', {
160
+ uk: ['Аеропорт Суми', 'аеропорт «Суми»', 'Сумський аеропорт'],
161
+ en: ['Sumy Airport'],
162
+ }, { category: 'airport', country: 'UA', city: 'Sumy', display: { uk: 'Аеропорт «Суми»', en: 'Sumy Airport' } }),
151
163
  group('Sumy State University', {
152
164
  uk: ['Сумський державний університет', 'СумДУ'],
153
165
  en: ['SumDU'],
154
166
  }, { category: 'university', country: 'UA', city: 'Sumy', display: { uk: 'Сумський державний університет', en: 'Sumy State University' } }),
167
+ group('Cherkasy Railway Station', {
168
+ uk: ['залізничний вокзал Черкаси', 'вокзал Черкаси', 'станція Черкаси'],
169
+ ru: ['железнодорожный вокзал Черкассы'],
170
+ en: ['Cherkasy railway station'],
171
+ }, { category: 'transport', country: 'UA', city: 'Cherkasy', display: { uk: 'Залізничний вокзал Черкаси', en: 'Cherkasy Railway Station' } }),
172
+ group('Cherkasy Bus Station No. 1', {
173
+ uk: ['Автовокзал «Черкаси»', 'Автовокзал №1', 'Новий автовокзал', 'Автовокзал «Новий»', 'автостанція №1'],
174
+ ru: ['автовокзал Черкассы'],
175
+ en: ['Cherkasy Bus Station No. 1'],
176
+ }, { category: 'bus_station', country: 'UA', city: 'Cherkasy', display: { uk: 'Автовокзал «Черкаси»', en: 'Cherkasy Bus Station No. 1' } }),
177
+ group('Cherkasy Bus Station No. 2', {
178
+ uk: ['Автостанція «Черкаси-2»', 'Черкаси АС-2', 'Автовокзал-2', 'Автовокзал №2', 'автостанція №2'],
179
+ en: ['Cherkasy Bus Station No. 2'],
180
+ }, { category: 'bus_station', country: 'UA', city: 'Cherkasy', display: { uk: 'Автостанція «Черкаси-2»', en: 'Cherkasy Bus Station No. 2' } }),
181
+ group('Cherkasy Bus Station No. 3', {
182
+ uk: ['Автостанція «Черкаси-3»', 'Черкаси АС-3', 'Черкаси АС3'],
183
+ en: ['Cherkasy Bus Station No. 3'],
184
+ }, { category: 'bus_station', country: 'UA', city: 'Cherkasy', display: { uk: 'Автостанція «Черкаси-3»', en: 'Cherkasy Bus Station No. 3' } }),
185
+ group('Cherkasy Autoexpress Bus Station', {
186
+ uk: ['Автовокзал «Автоекспрес»', 'АС «АВТОЕКСПРЕС-ЧЕРКАСИ»', 'Автовокзал «Автоекспрес» Черкаси'],
187
+ en: ['Cherkasy Autoexpress Bus Station'],
188
+ }, { category: 'bus_station', country: 'UA', city: 'Cherkasy', display: { uk: 'Автовокзал «Автоекспрес»', en: 'Cherkasy Autoexpress Bus Station' } }),
189
+ group('Dnipro Plaza', {
190
+ uk: ['ТРЦ «Дніпро-Плаза»', 'ТРЦ Дніпро Плаза', 'Дніпро Плаза'],
191
+ en: ['Dnipro Plaza'],
192
+ }, { category: 'shopping_mall', country: 'UA', city: 'Cherkasy', display: { uk: 'ТРЦ «Дніпро-Плаза»', en: 'Dnipro Plaza' } }),
193
+ group('LUBAVA', {
194
+ uk: ['ТРЦ «LUBAVA»', 'ТРЦ LUBAVA', 'ТРЦ «Любава»', 'ТРЦ Любава'],
195
+ ru: ['ТРЦ «LUBAVA»', 'ТРЦ Любава'],
196
+ en: ['LUBAVA', 'Lubava'],
197
+ }, { category: 'shopping_mall', country: 'UA', city: 'Cherkasy', display: { uk: 'ТРЦ «LUBAVA»', en: 'LUBAVA' } }),
198
+ group('Cherkasy Central Market', {
199
+ uk: ['Центральний ринок', 'Центральний ринок Черкаси', 'Черкаський центральний ринок'],
200
+ en: ['Cherkasy Central Market'],
201
+ }, { category: 'market', country: 'UA', city: 'Cherkasy', display: { uk: 'Центральний ринок', en: 'Cherkasy Central Market' } }),
155
202
  ]);
@@ -0,0 +1,33 @@
1
+ import { locationEntries } from './location-merge.js';
2
+
3
+ export const KG_BISHKEK_RESIDENTIAL_EXTENSIONS = Object.freeze({
4
+ Bishkek: Object.freeze({
5
+ residentialComplexes: locationEntries([
6
+ ['Senator', 'SENATOR', 'Сенатор', 'ЖК Senator', 'ЖК Сенатор', 'жилой дом Сенатор', 'Senator турак жай комплекси'],
7
+ ['Muras Nuru', 'MURAS NURU', 'Мурас Нуру', 'Мурас-Нуру', 'ЖК Мурас Нуру', 'Бульвар Мурас Нуру', 'ЖК Бульвар Мурас Нуру', 'Muras Nuru турак жай комплекси'],
8
+ ['Mansara', 'MANSARA', 'Мансара', 'ЖК Mansara', 'ЖК Мансара', 'МФК Mansara', 'многофункциональный жилой комплекс Mansara', 'Mansara турак жай комплекси'],
9
+ ['Regency', 'REGENCY', 'Редженси', 'ЖК Regency', 'ЖД Regency', 'жилой дом Regency', 'ЖК Редженси', 'Regency турак жай комплекси'],
10
+ ['Илим Плюс', 'Илим плюс', 'Илим +', 'Ilim Plus', 'Ilim+', 'ЖК Илим Плюс', 'ЖД Илим Плюс', 'Илим Плюс турак жай комплекси'],
11
+ ['Академия', 'Akademiya', 'Academia', 'ЖК Академия', 'жилой комплекс Академия', 'Академия турак жай комплекси'],
12
+ ['Елисейские поля', 'Елисейские Поля', 'Eliseiskie Polya', 'Elysian Fields', 'ЖК Елисейские поля', 'Елисейские поля Авангард', 'Елисейские поля Avangard', 'Елисейские поля турак жай комплекси'],
13
+ ['TIANSHAN-1', 'Tianshan-1', 'TIAN SHAN-1', 'Tian Shan 1', 'Тяньшань-1', 'Тянь-Шань-1', 'ЖК TIANSHAN-1', 'ЖК Тянь-Шань-1', 'TIANSHAN-1 турак жай комплекси'],
14
+ ['Anka Tower', 'ANKA Tower', 'ANKA TOWER', 'Анка Тауэр', 'Анка Тауэр турак жай комплекси', 'ЖК Anka Tower', 'ЖК Анка Тауэр', 'Anka Tower турак жай комплекси'],
15
+ ['УРПАК', 'Урпак', 'URPAK', 'Urpak', 'ЖК УРПАК', 'ЖК Урпак', 'жилой комплекс УРПАК', 'УРПАК турак жай комплекси', 'Urpak турак жай комплекси', 'Кут Урпак'],
16
+ ['Французский квартал', 'ЖК Французский квартал', 'Французский Квартал', 'French Quarter', 'French quarter'],
17
+ ['Аккула', 'ЖК Аккула', 'ЖК «Аккула»', 'Akkula'],
18
+ ['Алтын Булак', 'ЖК Алтын Булак', 'ЖК «Алтын Булак»', 'Altyn Bulak'],
19
+ ['Ботанический сад', 'ЖК Ботанический сад', 'ЖК «Ботанический сад»', 'Botanicheskiy Sad'],
20
+ ['Флагман', 'ЖК Флагман', 'Жилой комплекс Флагман', 'Жилой комплекс "Флагман"', 'Flagman'],
21
+ ['Хан-Теңири', 'Хан Теңири', 'Хан Тенгри', 'ЖК Хан-Теңири', 'ЖК "Хан-Теңири"', 'Khan Tengiri'],
22
+ ['Кудайберген', 'ЖК Кудайберген', 'ЖК «Кудайберген»', 'Kudaybergen'],
23
+ ['Панорама', 'ЖК Панорама', 'Жилой комплекс Панорама', 'Жилой Комплекс "Панорама"', 'Panorama'],
24
+ ['Панорама 2', 'Панорама-2', 'ЖК Панорама 2', 'ЖК Панорама-2', 'Жилой комплекс "Панорама 2"', 'Panorama 2'],
25
+ ['Сейтек', 'ЖК Сейтек', 'Жилой комплекс Сейтек', 'Seytek', 'Seitek'],
26
+ ['Сымбат Classic', 'Сымбат Классик', 'ЖК Сымбат Classic', 'Жилой комплекс "Сымбат Classic"', 'Symbat Classic'],
27
+ ['Тянь-Шань бермети', 'Тянь-Шань Бермети', 'ЖК Тянь-Шань бермети', 'ЖК «Тянь-Шань бермети»', 'Tyan-Shan Bermeti'],
28
+ ['Южный', 'ЖК Южный', 'Жилой комплекс Южный', 'Жилой комплекс "Южный"', 'Yuzhny'],
29
+ ['Легенда', 'ЖК Легенда', 'ЖК «Легенда»', 'Жилой комплекс Легенда', 'Legenda'],
30
+ ['Meridian', 'MERIDIAN', 'Меридиан', 'ЖК Meridian', 'ЖК «Meridian»', 'Жилой комплекс Meridian'],
31
+ ]),
32
+ }),
33
+ });
@@ -0,0 +1,72 @@
1
+ import { locationEntries } from './location-merge.js';
2
+
3
+ export const KG_BISHKEK_STREET_EXTENSIONS = Object.freeze({
4
+ Bishkek: Object.freeze({
5
+ streets: locationEntries([
6
+ ['Chyngyz Aytmatov Avenue', 'Chingiz Aitmatov Avenue', 'Chingiz Aytmatov Avenue', 'проспект Чингиза Айтматова', 'проспект Чынгыза Айтматова', 'Чыңгыз Айтматов проспекти', 'Чингиз Айтматов проспекти', 'проспект Мира', 'Mira Avenue'],
7
+ ['Aaly Tokombayev Avenue', 'Aaly Tokombaev Avenue', 'Aaly Tokombayev Street', 'Aaly Tokombaev Street', 'проспект Аалы Токомбаева', 'улица Аалы Токомбаева', 'ул. Аалы Токомбаева', 'Аалы Токомбаев проспекти', 'Аалы Токомбаев көчөсү'],
8
+ ['Manas Avenue', 'Manas avenue', 'проспект Манаса', 'пр-т Манаса', 'Манас проспекти'],
9
+ ['Chui Avenue', 'Chuy Avenue', 'Chui avenue', 'Чуйский проспект', 'проспект Чуй', 'проспект Чүй', 'Чүй проспекти'],
10
+ ['Baitik Baatyr Street', 'Baitik baatyr Street', 'Baytik Baatyr Street', 'улица Байтик-Баатыра', 'улица Байтик Баатыра', 'ул. Байтик-Баатыра', 'Байтик Баатыр көчөсү'],
11
+ ['Nasirdin Isanov Street', 'Isanov Street', 'улица Исанова', 'улица Насирдина Исанова', 'ул. Исанова', 'Насирдин Исанов көчөсү'],
12
+ ['Ibraimov Street', 'Ibragimov Street', 'улица Ибраимова', 'ул. Ибраимова', 'Ибраимов көчөсү'],
13
+ ['Toktogul Street', 'Toktogul Satylganov Street', 'улица Токтогула', 'улица Токтогула Сатылганова', 'ул. Токтогула', 'Токтогул көчөсү', 'Токтогул Сатылганов көчөсү'],
14
+ ['Joomart Bokonbayev Street', 'Joomart Bokonbaev Street', 'Bokonbayev Street', 'Bokonbaev Street', 'улица Боконбаева', 'улица Жоомарта Боконбаева', 'ул. Боконбаева', 'Жоомарт Бөкөнбаев көчөсү'],
15
+ ['Jusup Abdrakhmanov Street', 'Yusup Abdrakhmanov Street', 'Abdrakhmanov Street', 'улица Юсупа Абдрахманова', 'улица Жусупа Абдрахманова', 'ул. Абдрахманова', 'Жусуп Абдрахманов көчөсү'],
16
+ ['Shopokov Street', 'улица Шопокова', 'ул. Шопокова', 'Шопоков көчөсү'],
17
+ ['Jibek Jolu Avenue', 'Zhibek Zholu Avenue', 'Jibek-Jolu Avenue', 'проспект Жибек-Жолу', 'проспект Жибек Жолу', 'Жибек Жолу проспекти'],
18
+ ['Usenbaev Street', 'Usenbayev Street', 'улица Усенбаева', 'ул. Усенбаева', 'Усенбаев көчөсү'],
19
+ ['Yunusaliev Street', 'Yunusaliyev Street', 'улица Юнусалиева', 'ул. Юнусалиева', 'Юнусалиев көчөсү'],
20
+ ['Erkindik Boulevard', 'Erkindik Blvd', 'бульвар Эркиндик', 'бул. Эркиндик', 'Эркиндик бульвары'],
21
+ ['Moskovskaya Street', 'Moscow Street', 'Московская улица', 'улица Московская', 'ул. Московская'],
22
+ ['Bakaev Street', 'Bakayev Street', 'улица Бакаева', 'ул. Бакаева', 'Бакаев көчөсү'],
23
+ ['Jantoshev Street', 'Dzhantoshev Street', 'улица Джантошева', 'ул. Джантошева', 'Жантөшев көчөсү'],
24
+ ['Sukhe Bator Street', 'Sukhbaatar Street', 'улица Сухэ-Батора', 'ул. Сухэ-Батора'],
25
+ ['Pavlov Street', 'улица Павлова', 'ул. Павлова', 'Павлов көчөсү'],
26
+ ['Zhukeev-Pudovkin Street', 'Zhukeyev-Pudovkin Street', 'улица Жукеева-Пудовкина', 'ул. Жукеева-Пудовкина'],
27
+ ['Gorky Street', 'Maxim Gorky Street', 'улица Горького', 'ул. Горького', 'Горький көчөсү'],
28
+ ['Orozbekov Street', 'улица Орозбекова', 'ул. Орозбекова', 'Орозбеков көчөсү'],
29
+ ['Kievskaya Street', 'Kyiv Street', 'Киевская улица', 'улица Киевская', 'ул. Киевская'],
30
+ ['Panfilov Street', 'улица Панфилова', 'ул. Панфилова', 'Панфилов көчөсү'],
31
+ ['Togolok Moldo Street', 'улица Тоголока Молдо', 'ул. Тоголока Молдо', 'Тоголок Молдо көчөсү'],
32
+ ['Umetaliev Street', 'Umetaliyev Street', 'улица Уметалиева', 'ул. Уметалиева'],
33
+ ['Molodaya Gvardiya Boulevard', 'Young Guard Boulevard', 'бульвар Молодой Гвардии', 'бул. Молодой Гвардии'],
34
+ ['Asankul Kutubbaev Street', 'Asankul Kuttubaev Street', 'улица Асанкула Куттубаева', 'ул. Асанкула Куттубаева', 'Асанкул Куттубаев көчөсү'],
35
+ ['Imanaliev Street', 'Imanalieva Street', 'улица Иманалиева', 'ул. Иманалиева', 'Иманалиев көчөсү'],
36
+ ['Matrosov Street', 'Matrosova Street', 'улица Матросова', 'ул. Матросова', 'Матросов көчөсү'],
37
+ ['Mederov Street', 'Mederova Street', 'улица Медерова', 'ул. Медерова', 'Медеров көчөсү'],
38
+ ['Chokan Valikhanov Street', 'Chokan Walikhanov Street', 'улица Чокана Валиханова', 'ул. Чокана Валиханова', 'Чокан Валиханов көчөсү'],
39
+ ['Pobedy Avenue', 'Victory Avenue', 'проспект Победы', 'пр-т Победы', 'Жеңиш проспекти'],
40
+ ['Seitek Street', 'Seytek Street', 'улица Сейтек', 'ул. Сейтек', 'Сейтек көчөсү'],
41
+ ['Aitiev Street', 'Aitiyev Street', 'улица Айтиева', 'ул. Айтиева', 'Айтиев көчөсү'],
42
+ ['Jamanbaev Street', 'Dzhamanbaev Street', 'улица Джаманбаева', 'ул. Джаманбаева', 'Жаманбаев көчөсү'],
43
+ ['Ayni Street', 'Айни улица', 'улица Айни', 'ул. Айни', 'Айни көчөсү'],
44
+ ['Toktonaliev Street', 'Toktonaliev Street', 'улица Токтоналиева', 'ул. Токтоналиева', 'Токтоналиев көчөсү'],
45
+ ['Moldobasanov Street', 'Moldobasanova Street', 'улица Молдобасанова', 'ул. Молдобасанова', 'Молдобасанов көчөсү'],
46
+ ['Sayakbay Karalaev Street', 'Sayakbai Karalaev Street', 'улица Саякбая Каралаева', 'ул. Саякбая Каралаева', 'Саякбай Каралаев көчөсү'],
47
+ ['Lev Tolstoy Street', 'Leo Tolstoy Street', 'улица Льва Толстого', 'ул. Льва Толстого', 'Лев Толстой көчөсү'],
48
+ ['Sadygaliev Street', 'Sadygalieva Street', 'улица Садыгалиева', 'ул. Садыгалиева', 'Садыгалиев көчөсү'],
49
+ ['Kainazarova Street', 'Kaynazarova Street', 'улица Кайназаровой', 'улица Кайназарова', 'Кайназарова көчөсү'],
50
+ ['Samanchin Street', 'Samanchina Street', 'улица Саманчина', 'ул. Саманчина', 'Саманчин көчөсү'],
51
+ ['Kalyk Akiev Street', 'Kalyk Akiyev Street', 'улица Калыка Акиева', 'ул. Калыка Акиева', 'Калык Акиев көчөсү'],
52
+ ['Mikhail Frunze Street', 'Frunze Street', 'улица Михаила Фрунзе', 'улица Фрунзе', 'Михаил Фрунзе көчөсү'],
53
+ ['Kurchatov Street', 'Kurchatova Street', 'улица Курчатова', 'ул. Курчатова', 'Курчатов көчөсү'],
54
+ ['Kopernik Street', 'Copernicus Street', 'улица Коперника', 'ул. Коперника', 'Коперник көчөсү'],
55
+ ['Orto Street', 'улица Орто', 'ул. Орто', 'Орто көчөсү'],
56
+ ['Matisakov Street', 'Matisakova Street', 'улица Матисакова', 'ул. Матисакова', 'Матисаков көчөсү'],
57
+ ['Karasaev Street', 'Karasaeva Street', 'улица Карасаева', 'ул. Карасаева', 'Карасаев көчөсү'],
58
+ ['Sadyrbaev Street', 'Sadyrbaeva Street', 'улица Садырбаева', 'ул. Садырбаева', 'Садырбаев көчөсү'],
59
+ ['Yrys Street', 'Ырыс улица', 'улица Ырыс', 'Ырыс көчөсү'],
60
+ ['Dordoi Street', 'Dordoy Street', 'улица Дордой', 'Дордой көчөсү'],
61
+ ['Altyn-Ordo Street', 'Altyn Ordo Street', 'улица Алтын-Ордо', 'улица Алтын Ордо', 'Алтын-Ордо көчөсү'],
62
+ ['Army Street', 'Armeyskaya Street', 'Армейская улица', 'улица Армейская'],
63
+ ['Sheraliev Street', 'Sheralieva Street', 'улица Шералиева', 'ул. Шералиева', 'Шералиев көчөсү'],
64
+ ['Sherbet Street', 'улица Шербет', 'ул. Шербет', 'Шербет көчөсү'],
65
+ ['Repin Street', 'Repina Street', 'улица Репина', 'ул. Репина', 'Репин көчөсү'],
66
+ ['Min-Kush Street', 'Min Kush Street', 'улица Мин-Куш', 'улица Мин Куш', 'Миң-Куш көчөсү'],
67
+ ['Murmanskaya Street', 'Murmansk Street', 'Мурманская улица', 'улица Мурманская'],
68
+ ['Valdayskaya Street', 'Valdai Street', 'Валдайская улица', 'улица Валдайская'],
69
+ ['Ala-Archinskaya Street', 'Ala Archa Street', 'Ала-Арчинская улица', 'улица Ала-Арчинская'],
70
+ ]),
71
+ }),
72
+ });
@@ -0,0 +1,36 @@
1
+ import { locationEntries } from './location-merge.js';
2
+
3
+ export const KG_JALAL_ABAD_LOCATION_EXTENSIONS = Object.freeze({
4
+ 'Jalal-Abad': Object.freeze({
5
+ microdistricts: locationEntries([
6
+ ['Микрорайон Курманбек', 'Курманбек микрорайон', 'мкр Курманбек'],
7
+ ]),
8
+ residentialComplexes: locationEntries([
9
+ ['Асман Резиденс 1', 'Асман Резиденс №1', 'ЖК Асман Резиденс 1', 'ЖК «Асман Резиденс 1»', 'ЖК «Асман Резиденс 1» (ГИК)'],
10
+ ['Асман Резиденс 9', 'Асман Резиденс №9', 'ЖК Асман Резиденс 9', 'ЖК «Асман Резиденс 9»', 'ЖК «Асман Резиденс 9» (ГИК)'],
11
+ ]),
12
+ streets: locationEntries([
13
+ ['10-я улица Электорон'],
14
+ ['2-я улица ПТФ'],
15
+ ['5-я улица Электорон'],
16
+ ['Абдукаимов көчөсү'],
17
+ ['Улица Арстанбаева 1-я', 'Арстанбаева 1-я'],
18
+ ['Улица Арстанбаева 2-я', 'Арстанбаева 2-я'],
19
+ ['Барпы Рысбаев көчөсү'],
20
+ ['Улица Чынгыза Айтматова 3 1-я', 'Чынгыза Айтматова 3 1-я'],
21
+ ['Улица Чынгыза Айтматова 3 3-я', 'Чынгыза Айтматова 3 3-я'],
22
+ ['Улица Чынгыза Айтматова 3 5-я', 'Чынгыза Айтматова 3 5-я'],
23
+ ['Фабричная көчөсү'],
24
+ ['Куренкеев көчөсү'],
25
+ ['Улица Курортная', 'Курортная улица', 'ул. Курортная'],
26
+ ['Лесная улица', 'улица Лесная', 'ул. Лесная', 'Лесной улице', 'на Лесной улице'],
27
+ ['Островский көчөсү'],
28
+ ['Проспект Тумонбая Байзакова', 'Тумонбая Байзакова проспект', 'Түмөнбай Байзаков проспекти', 'Түмөнбай Байзаков көчөсү (Москва)', 'проспекте Тумонбая Байзакова', 'на проспекте Тумонбая Байзакова'],
29
+ ['Умаркулов Саке көчөсү'],
30
+ ['Улица Жени-Жок', 'улица Жени жок', 'Жени-Жок көчөсү', 'улице Жени-Жок', 'на улице Жени-Жок'],
31
+ ['Мурзакулов Урубай көчөсү'],
32
+ ['Пролетар көчөсү'],
33
+ ['Тоголок Молдо көчөсү'],
34
+ ]),
35
+ }),
36
+ });
@@ -0,0 +1,52 @@
1
+ import { locationEntries } from './location-merge.js';
2
+
3
+ export const KG_KARAKOL_LOCATION_EXTENSIONS = Object.freeze({
4
+ Karakol: Object.freeze({
5
+ microdistricts: locationEntries([
6
+ ['Voshod', 'Восход', 'микрорайон Восход', 'мкр Восход', 'Восход микрорайон', 'Voshod microdistrict'],
7
+ ['Кашка-Суу', 'Кашка Суу', 'Kashka-Suu', 'Kashka Suu', 'микрорайон Кашка-Суу', 'мкр Кашка-Суу', 'Кашка-Суу м-н'],
8
+ ['Хан-Теңири', 'Хан Теңири', 'Хан-Тенгри', 'Хан Тенгри', 'Khan-Tengri', 'Khan Tengri', 'Khan Tengiri', 'микрорайон Хан-Теңири', 'микрорайон Хан-Тенгри', 'мкр Хан-Теңири', 'мкр Хан-Тенгри'],
9
+ ]),
10
+ residentialComplexes: locationEntries([
11
+ ['Karakol Residence', 'KARAKOL RESIDENCE', 'Karakol residence', 'ЖК Karakol Residence', 'жилой комплекс Karakol Residence', 'Karakol Residence турак жай комплекси'],
12
+ ]),
13
+ streets: locationEntries([
14
+ ['Улица Алдашева', 'Алдашева', 'ул. Алдашева', 'Aldasheva Street'],
15
+ ['Улица Гебзе', 'Гебзе', 'ул. Гебзе', 'Gebze Street'],
16
+ ['Улица Карасаева', 'Карасаева', 'ул. Карасаева', 'Karasaeva Street'],
17
+ ['Улица Ленина', 'Ленина', 'ул. Ленина', 'Lenina Street'],
18
+ ['Улица Пржевальского', 'Пржевальского', 'ул. Пржевальского', 'Przhevalskogo Street'],
19
+ ['Улица Шопокова', 'Шопокова', 'ул. Шопокова', 'Shopokova Street'],
20
+ ['Улица Токтогула', 'Токтогула', 'ул. Токтогула', 'Toktogula Street'],
21
+ ['Улица Тыныстанова', 'Тыныстанова', 'ул. Тыныстанова', 'Tynystanova Street'],
22
+ ['Улица Жамансариева', 'Жамансариева', 'ул. Жамансариева', 'Zhamansarieva Street'],
23
+ ['Улица Ю. Абдрахманова', 'Ю. Абдрахманова', 'Абдрахманова Ю.', 'Абдрахманова Ю.улица', 'Абдрахманова Ю. улица', 'ул. Ю. Абдрахманова'],
24
+ ['Арычная улица', 'Арычная', 'ул. Арычная'],
25
+ ['Улица Н. Айтматовой', 'Н. Айтматовой', 'Айтматовой Н.', 'Айтматовой Н. улица', 'ул. Н. Айтматовой'],
26
+ ['Улица Конкина', 'Конкина', 'Конкина улица', 'ул. Конкина'],
27
+ ['Улица Кошевого', 'Кошевого', 'Кошевого улица', 'ул. Кошевого'],
28
+ ['Улица Кыштобаева', 'Кыштобаева', 'Кыштобаева улица', 'ул. Кыштобаева'],
29
+ ['Улица Мичурина', 'Мичурина', 'Мичурина улица', 'ул. Мичурина'],
30
+ ['Молодёжная улица', 'Молодёжная', 'Молодежная', 'ул. Молодёжная', 'ул. Молодежная'],
31
+ ['Московская улица', 'Московская', 'ул. Московская'],
32
+ ['Улица Садыбекова', 'Садыбекова', 'Садыбекова улица', 'ул. Садыбекова'],
33
+ ['Улица Шапак-баатыра', 'Шапак-баатыра', 'Шапак баатыра', 'Шапак-баатыра улица', 'ул. Шапак-баатыра'],
34
+ ['Сталинградская улица', 'Сталинградская', 'ул. Сталинградская'],
35
+ ['Улица Ворошилова', 'Ворошилова', 'Ворошилова улица', 'ул. Ворошилова'],
36
+ ['Улица Жакшылык', 'Жакшылык', 'Жакшылык улица', 'ул. Жакшылык'],
37
+ ['2-я улица Карасаева', '2 улица Карасаева', '2-я ул. Карасаева'],
38
+ ['Улица Дербишева', 'Дербишева', 'ул. Дербишева'],
39
+ ['Улица Кадыр аке 1-я', 'Кадыр аке 1-я', '1-я улица Кадыр аке'],
40
+ ['Улица Кадыр аке 3-я', 'Кадыр аке 3-я', '3-я улица Кадыр аке'],
41
+ ['Улица Кадыр аке 4-я', 'Кадыр аке 4-я', '4-я улица Кадыр аке'],
42
+ ['Улица Кадыр аке 5-я', 'Кадыр аке 5-я', '5-я улица Кадыр аке'],
43
+ ['Каракольская улица', 'Каракольская', 'ул. Каракольская'],
44
+ ['Улица Кутманалиева', 'Кутманалиева', 'ул. Кутманалиева'],
45
+ ['Улица Кузбасская 9-я', 'Кузбасская 9-я', '9-я Кузбасская улица'],
46
+ ['Улица Кузбасская 10-я', 'Кузбасская 10-я', '10-я Кузбасская улица'],
47
+ ['Улица Кузбасская 14-я', 'Кузбасская 14-я', '14-я Кузбасская улица'],
48
+ ['Улица Масалиева', 'Масалиева', 'ул. Масалиева'],
49
+ ['Улица Торгоева', 'Торгоева', 'ул. Торгоева'],
50
+ ]),
51
+ }),
52
+ });
@@ -41,19 +41,54 @@ export const KG_LOCATION_EXTENSIONS = Object.freeze({
41
41
  microdistricts: [
42
42
  ['Asanbay', 'Асанбай', 'Асанбай микрорайон', 'Асанбай кичирайону'],
43
43
  ['Jal', 'Джал', 'Жал', 'Джал микрорайон', 'Жал кичирайону'],
44
- ['Tunguch', 'Тунгуч', 'Тунгуч микрорайон', 'Тунгуч кичирайону'],
44
+ ['Джал-15', 'Джал 15', 'Жал-15', 'Жал 15', 'мкр Джал-15', 'мкр. Джал-15', 'микрорайон Джал-15'],
45
+ ['Tunguch', 'Тунгуч', 'Тунгуч микрорайон'],
45
46
  ['Ulan', 'Улан', 'Улан микрорайон'],
46
47
  ['Kok-Jar', 'Кок-Жар', 'Көк-Жар', 'Кок Жар', 'Көк Жар'],
47
- ['Ak-Orgo', 'Ак-Орго', 'Ак Орго', 'Ак-Өргө', 'Ак Өргө'],
48
+ ['Ak-Orgo', 'Ак-Орго', 'Ак Орго', 'Ак-Өргө', 'Ак Өргө', 'Ak-Ordo', 'Ак-Ордо', 'Ак Ордо'],
48
49
  ['Kyzyl-Asker', 'Кызыл-Аскер', 'Кызыл Аскер', 'Кызыл-Аскер району'],
49
50
  ['Alamedin-1', 'Аламедин-1', 'Аламедин 1', 'Аламүдүн-1', 'Аламүдүн 1'],
50
51
  ['Vostok-5', 'Восток-5', 'Восток 5', '5-й микрорайон Восток'],
51
52
  ['Vostok-6', 'Восток-6', 'Восток 6', '6-й микрорайон Восток'],
52
53
  ['Dordoi', 'Дордой', 'Дордой массив', 'Дордой конушу'],
54
+ ['Учкун', 'Учкун микрорайон', 'микрорайон Учкун', 'Учкун мкр'],
55
+ ['Жилгородок Совмина', 'жилгородок Совмина', 'Жилгородок Совмин', 'Совмин жилгородок', 'Совмин'],
56
+ ['3-й микрорайон', '3 микрорайон', '3 мкр', '3 мкр.', '3-й мкр', '3rd microdistrict'],
57
+ ['6-й микрорайон', '6 микрорайон', '6 мкр', '6 мкр.', '6-й мкр', '6th microdistrict'],
58
+ ['7-й микрорайон', '7 микрорайон', '7 мкр', '7 мкр.', '7-й мкр', '7th microdistrict'],
59
+ ['8-й микрорайон', '8 микрорайон', '8 мкр', '8 мкр.', '8-й мкр', '8th microdistrict'],
60
+ ['10-й микрорайон', '10 микрорайон', '10 мкр', '10 мкр.', '10-й мкр', '10th microdistrict'],
61
+ ['11-й микрорайон', '11 микрорайон', '11 мкр', '11 мкр.', '11-й мкр', '11th microdistrict'],
62
+ ['12-й микрорайон', '12 микрорайон', '12 мкр', '12 мкр.', '12-й мкр', '12th microdistrict'],
53
63
  ],
54
64
  localAreas: [
55
65
  ['Center', 'Центр', 'центр Бишкека', 'Бишкек центр', 'шаар борбору'],
56
66
  ['Rabochiy Gorodok', 'Рабочий городок', 'Рабочий Городок'],
67
+ ['Ала-Тоо 3', 'Ала-Тоо-3', 'Ала Тоо 3', 'Ala-Too 3', 'Ala Too 3'],
68
+ ['Киргизия-1', 'Киргизия 1', 'Kirgiziya-1', 'Kyrgyzia-1'],
69
+ ],
70
+ residentialComplexes: [
71
+ ['Dastan City', 'Дастан Сити', 'ЖК Дастан Сити'],
72
+ ['Diamond Park', 'Diamond park', 'Даймонд Парк', 'ЖК Diamond Park'],
73
+ ['Neo City', 'NEO CITY', 'Нео Сити', 'ЖК Neo City', 'ЖК NEO CITY'],
74
+ ['One', 'ONE', 'ЖК One', 'ЖК ONE'],
75
+ ['Prime Park', 'PRIME PARK', 'Прайм Парк', 'ЖК Prime Park'],
76
+ ['Крейсер', 'Kreiser', 'ЖК Крейсер'],
77
+ ['Сирень', 'Siren', 'ЖК Сирень'],
78
+ ['Тянь-Шань', 'Тянь Шань', 'Tyan-Shan', 'Tian Shan', 'ЖК Тянь-Шань'],
79
+ ['Эркиндик', 'Erkindik', 'ЖК Эркиндик'],
80
+ ['Юг-7', 'Юг 7', 'Yug-7', 'Yug 7', 'ЖК Юг-7'],
81
+ ['Level Lux', 'LEVEL LUX', 'Level LUX', 'ЖК Level Lux', 'ЖД Level Lux', 'Левел Люкс', 'Level Lux турак жай комплекси'],
82
+ ['Nuran Park', 'NURAN PARK', 'Нуран Парк', 'ЖК Нуран Парк', 'ЖК Nuran Park', 'Nuran Park турак жай комплекси'],
83
+ ['Art Square', 'ART SQUARE', 'Арт Сквер', 'ЖК Art Square', 'ЖД Art Square', 'Art Square турак жай комплекси'],
84
+ ['Kok-Jar Hills', 'Kok Jar Hills', 'Кок-Жар Хиллс', 'Көк-Жар Хиллс', 'ЖК Kok-Jar Hills', 'Kok-Jar Hills турак жай комплекси'],
85
+ ['Tokyo City', 'TOKYO CITY', 'Токио Сити', 'ЖК Токио Сити', 'ЖК Tokyo City', 'Tokyo City турак жай комплекси'],
86
+ ['Nova Prestige', 'NOVA PRESTIGE', 'Нова Престиж', 'ЖК Нова Престиж', 'ЖК Nova Prestige', 'Nova Prestige турак жай комплекси'],
87
+ ['Mega City', 'MEGA CITY', 'Мега-Сити', 'Мега Сити', 'ЖК Мега Сити', 'ЖК Mega City', 'Mega City турак жай комплекси'],
88
+ ['Sun House Plus', 'SunHouse Plus', 'SUN HOUSE PLUS', 'SunHouse PLUS', 'Сан Хаус Плюс', 'ЖК Sun House Plus', 'ЖД SunHouse Plus', 'Sun House Plus турак жай комплекси'],
89
+ ['Испанский дом', 'Ispanskiy Dom', 'Spanish House', 'ЖК Испанский дом', 'Испан үйү', 'Испанский дом турак жай комплекси'],
90
+ ['Brooklyn', 'BROOKLYN', 'Бруклин', 'ЖК Brooklyn', 'ЖК Бруклин', 'Brooklyn турак жай комплекси'],
91
+ ['Barcelona', 'BARCELONA', 'Барселона', 'ЖК Барселона', 'МФК Барселона', 'ЖК Barcelona', 'Barcelona турак жай комплекси'],
57
92
  ],
58
93
  landmarks: [
59
94
  ['Ala-Too Square', 'площадь Ала-Тоо', 'Ала-Тоо аянты', 'Ала Тоо площадь'],
@@ -0,0 +1,62 @@
1
+ import { locationEntries } from './location-merge.js';
2
+
3
+ export const KG_OSH_LOCATION_EXTENSIONS = Object.freeze({
4
+ Osh: Object.freeze({
5
+ districts: locationEntries([
6
+ ['Керме-Тоо', 'Керме Тоо', 'Kerme-Too', 'Kerme Too', 'МТУ Керме-Тоо', 'МАБ Керме-Тоо', 'Керме-Тоо муниципалдык аймагы'],
7
+ ]),
8
+ microdistricts: locationEntries([
9
+ ['Anar', 'Анар', 'микрорайон Анар', 'мкр Анар', 'Анар микрорайон', 'Anar microdistrict'],
10
+ ['Tuleyken', 'Тулейкен', 'Толойкон', 'Төлөйкөн', 'микрорайон Тулейкен', 'микрорайон Толойкон', 'мкр Тулейкен', 'Tuleyken microdistrict', 'Toloikon microdistrict'],
11
+ ['Кулатов', 'Т. Кулатова', 'Кулатова', 'микрорайон Кулатов', 'микрорайон Т. Кулатова', 'мкр Кулатов', 'Кулатов микрорайон', 'Кулатов кичи району'],
12
+ ['ДЭУ-21', 'ДЭУ 21', 'DEU-21', 'DEU 21', 'микрорайон ДЭУ-21', 'мкр ДЭУ-21'],
13
+ ['МЖК-2', 'МЖК 2', 'MZHK-2', 'MZHK 2', 'микрорайон МЖК-2', 'мкр МЖК-2'],
14
+ ['Ошский', 'Ошский микрорайон', 'Ошском микрорайоне', 'микрорайон Ошский', 'мкр Ошский', 'Oshskiy microdistrict'],
15
+ ]),
16
+ settlements: locationEntries([
17
+ ['Кеңеш', 'Кенеш', 'Kenesh', 'Кеңеш айылы', 'село Кеңеш', 'село Кенеш'],
18
+ ['Керме-Тоо', 'Керме Тоо', 'Kerme-Too', 'Kerme Too', 'Керме-Тоо айылы', 'село Керме-Тоо'],
19
+ ['Озгур', 'Ozgur', 'Озгур айылы', 'село Озгур'],
20
+ ['Орке', 'Orke', 'Орке айылы', 'село Орке'],
21
+ ['Пятилетка', 'Pyatiletka', 'Пятилетка айылы', 'село Пятилетка'],
22
+ ['Тээке', 'Teeke', 'Тээке айылы', 'село Тээке'],
23
+ ['Учар', 'Uchar', 'Учар айылы', 'село Учар'],
24
+ ['Ак-Буура-2', 'Ак Буура 2', 'Ак-Бура-2', 'Ак Бура 2', 'Ak-Buura-2', 'Ak Buura 2', 'Ак-Буура-2 айылы', 'село Ак-Буура-2'],
25
+ ['Ак-Буура-3', 'Ак Буура 3', 'Ак-Бура-3', 'Ак Бура 3', 'Ak-Buura-3', 'Ak Buura 3', 'Ак-Буура-3 айылы', 'село Ак-Буура-3'],
26
+ ]),
27
+ residentialComplexes: locationEntries([
28
+ ['Asman Residence 1', 'Asman Residence-1', 'ASMAN RESIDENCE 1', 'Асман Резиденс 1', 'Асман Резиденс-1', 'ЖК Asman Residence 1', 'ЖК Асман Резиденс 1', 'Asman Residence 1 турак жай комплекси'],
29
+ ['Mon Paris', 'MON PARIS', 'Mon Paris Ош', 'Mon Paris Osh', 'ЖК Mon Paris', 'ЖК Мон Париж', 'Мон Париж', 'Мон Пари', 'жилой комплекс Мон Париж', 'Mon Paris турак жай комплекси', 'Ихлас Ош', 'ЖК Ихлас Ош', 'жилой комплекс Ихлас Ош', 'жилой комплекс "Ихлас Ош"'],
30
+ ['Аристократ', 'ЖК Аристократ', 'жилой комплекс Аристократ', 'Аристократ, жилой комплекс'],
31
+ ['Фрунзенский', 'ЖК Фрунзенский', 'жилой комплекс Фрунзенский', 'Фрунзенский, жилой комплекс'],
32
+ ['Миллион', 'ЖК Миллион', 'жилой комплекс Миллион', 'Миллион, жилой комплекс'],
33
+ ['Osh Plaza', 'OSH PLAZA', 'Ош Плаза', 'ЖК Osh Plaza', 'ЖК Ош Плаза', 'жилой комплекс Osh Plaza'],
34
+ ['Сере', 'ЖК Сере', 'жилой комплекс Сере', 'Жилой комплекс "Сере"'],
35
+ ['Ак-Бата', 'Ак Бата', 'ЖК Ак-Бата', 'ЖК Ак Бата', 'жилой комплекс Ак-Бата', 'Стройка ЖК «Ак-Бата»'],
36
+ ['Ак-Бата 2', 'Ак Бата 2', 'ЖК Ак-Бата 2', 'ЖК Ак Бата 2', 'жилой комплекс Ак-Бата 2', 'Стройка ЖК «Ак-Бата 2»'],
37
+ ['Манас', 'ЖК Манас', 'жилой комплекс Манас', 'Стройка ЖК «Манас»'],
38
+ ['ЖК Сулайман Тоо', 'ЖК Сулайман-Тоо', 'жилой комплекс Сулайман Тоо', 'жилой комплекс Сулайман-Тоо', 'Жилой комплекс "Сулайман Тоо"'],
39
+ ['Таберик', 'ЖК Таберик', 'жилой комплекс Таберик', 'Таберик, жилой комплекс'],
40
+ ['Юджин', 'ЖК Юджин', 'жилой комплекс Юджин', 'Юджин, жилой комплекс'],
41
+ ]),
42
+ streets: locationEntries([
43
+ ['Аскар Шакиров көчөсү'],
44
+ ['Асранкулов көчөсү'],
45
+ ['Иминов көчөсү'],
46
+ ['Келечек көчөсү'],
47
+ ['Улица Хан-Ордо', 'ул. Хан-Ордо'],
48
+ ['Улица Кочконова Турдали', 'ул. Кочконова Турдали'],
49
+ ['Кулатов көчөсү'],
50
+ ['Улица Курманжан датка', 'ул. Курманжан датка'],
51
+ ['Улица Мамырова', 'ул. Мамырова'],
52
+ ['Улица Монуева', 'ул. Монуева'],
53
+ ['Улица Насирдинова', 'ул. Насирдинова'],
54
+ ['Ошская улица', 'улица Ошская', 'ул. Ошская'],
55
+ ['Улица Раимбекова', 'ул. Раимбекова'],
56
+ ['Саргалчаев көчөсү'],
57
+ ['Ташмамата Джумабаева улица', 'улица Ташмамата Джумабаева', 'ул. Ташмамата Джумабаева'],
58
+ ['Тоголок Молдо көчөсү'],
59
+ ['Төрөбек Абакир уулу көчөсү'],
60
+ ]),
61
+ }),
62
+ });