From 09a24233bbeb7b995d26f0b467a4f186b2efa282 Mon Sep 17 00:00:00 2001 From: AI Assistant Date: Fri, 6 Mar 2026 06:53:49 +0200 Subject: [PATCH] feat(parcel-sync): full GPKG export workflow with UAT autocomplete, hero buttons, layer catalog - Fix login button (return success instead of ok) - Add UAT autocomplete with NFD-normalized search (3186 entries) - Add export-bundle API: base mode (terenuri+cladiri) + magic mode (enriched parcels) - Add export-layer-gpkg API: individual layer GPKG download - Add gpkg-export service: ogr2ogr with GeoJSON fallback - Add reproject service: EPSG:3844 projection support - Add magic-mode methods to eterra-client (immApps, folosinte, immovableList, docs, parcelDetails) - Rewrite UI: 3-tab layout (Export/Catalog/Search), progress tracking, phase trail --- CLAUDE.md | 30 +- public/uat.json | 12746 ++++++++++++++++ src/app/api/eterra/export-bundle/route.ts | 881 ++ src/app/api/eterra/export-layer-gpkg/route.ts | 285 + src/app/api/eterra/login/route.ts | 2 +- .../components/parcel-sync-module.tsx | 1257 +- .../parcel-sync/services/eterra-client.ts | 93 + .../parcel-sync/services/gpkg-export.ts | 110 + src/modules/parcel-sync/services/reproject.ts | 57 + temp-preview-prompt.md | 207 + 10 files changed, 15102 insertions(+), 566 deletions(-) create mode 100644 public/uat.json create mode 100644 src/app/api/eterra/export-bundle/route.ts create mode 100644 src/app/api/eterra/export-layer-gpkg/route.ts create mode 100644 src/modules/parcel-sync/services/gpkg-export.ts create mode 100644 src/modules/parcel-sync/services/reproject.ts create mode 100644 temp-preview-prompt.md diff --git a/CLAUDE.md b/CLAUDE.md index eee0b51..13063a4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -96,22 +96,22 @@ legacy/ # Original HTML tools for reference ## Implemented Modules (14/14 — zero placeholders) -| # | Module | Route | Version | Key Features | -| --- | ---------------------- | --------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 1 | **Dashboard** | `/` | 0.1.0 | KPI cards (6), activity feed (last 20), module grid, external tools | -| 2 | **Email Signature** | `/email-signature` | 0.1.0 | Multi-company branding, address toggle (BTG/US/SDT), live preview, zoom/copy/download | -| 3 | **Word XML Generator** | `/word-xml` | 0.1.0 | Category-based XML gen, simple/advanced mode, ZIP export | +| # | Module | Route | Version | Key Features | +| --- | ---------------------- | --------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | **Dashboard** | `/` | 0.1.0 | KPI cards (6), activity feed (last 20), module grid, external tools | +| 2 | **Email Signature** | `/email-signature` | 0.1.0 | Multi-company branding, address toggle (BTG/US/SDT), live preview, zoom/copy/download | +| 3 | **Word XML Generator** | `/word-xml` | 0.1.0 | Category-based XML gen, simple/advanced mode, ZIP export | | 4 | **Registratura** | `/registratura` | 0.4.0 | CRUD registry, dynamic doc types, bidirectional Address Book, threads, backdating, **legal deadline tracking**, recipient registration, document expiry, **NAS network path attachments** (A/O/P/T drives, copy-to-clipboard), **detail sheet side panel**, **configurable column visibility**, **QuickLook attachment preview** (images: zoom/pan, PDFs: native viewer, multi-file navigation) | -| 5 | **Tag Manager** | `/tag-manager` | 0.2.0 | CRUD tags, category/scope/color, US/SDT seeds, mandatory categories, **ManicTime bidirectional sync** | -| 6 | **IT Inventory** | `/it-inventory` | 0.2.0 | Dynamic equipment types, rented status (purple pulse), **42U rack visualization**, type/status/company filters | -| 7 | **Address Book** | `/address-book` | 0.1.0 | CRUD contacts, card grid, vCard export, Registratura reverse lookup, **dynamic types (creatable)** | -| 8 | **Password Vault** | `/password-vault` | 0.3.0 | CRUD credentials, 9 categorii cu iconițe, **WiFi QR code real**, context-aware form, strength meter, company scope, **AES-256-GCM encryption** | -| 9 | **Mini Utilities** | `/mini-utilities` | 0.1.0 | Text case, char counter, percentage, area converter, U→R, artifact cleaner, MDLPA, PDF reducer, OCR | -| 10 | **Prompt Generator** | `/prompt-generator` | 0.2.0 | Template-driven prompt builder, **18 templates** (14 text + 4 image), search bar, target type filter | -| 11 | **Digital Signatures** | `/digital-signatures` | 0.1.0 | CRUD assets, drag-and-drop file upload, tag chips | -| 12 | **Word Templates** | `/word-templates` | 0.1.0 | Template library, 8 categories, version tracking, .docx placeholder auto-detection | -| 13 | **AI Chat** | `/ai-chat` | 0.2.0 | Multi-provider (OpenAI/Claude/Ollama/demo), **project linking via Tag Manager**, provider status badge | -| 14 | **Hot Desk** | `/hot-desk` | 0.1.0 | 4 desks, week-ahead calendar, room layout (window+door), reserve/cancel | +| 5 | **Tag Manager** | `/tag-manager` | 0.2.0 | CRUD tags, category/scope/color, US/SDT seeds, mandatory categories, **ManicTime bidirectional sync** | +| 6 | **IT Inventory** | `/it-inventory` | 0.2.0 | Dynamic equipment types, rented status (purple pulse), **42U rack visualization**, type/status/company filters | +| 7 | **Address Book** | `/address-book` | 0.1.0 | CRUD contacts, card grid, vCard export, Registratura reverse lookup, **dynamic types (creatable)** | +| 8 | **Password Vault** | `/password-vault` | 0.3.0 | CRUD credentials, 9 categorii cu iconițe, **WiFi QR code real**, context-aware form, strength meter, company scope, **AES-256-GCM encryption** | +| 9 | **Mini Utilities** | `/mini-utilities` | 0.1.0 | Text case, char counter, percentage, area converter, U→R, artifact cleaner, MDLPA, PDF reducer, OCR | +| 10 | **Prompt Generator** | `/prompt-generator` | 0.2.0 | Template-driven prompt builder, **18 templates** (14 text + 4 image), search bar, target type filter | +| 11 | **Digital Signatures** | `/digital-signatures` | 0.1.0 | CRUD assets, drag-and-drop file upload, tag chips | +| 12 | **Word Templates** | `/word-templates` | 0.1.0 | Template library, 8 categories, version tracking, .docx placeholder auto-detection | +| 13 | **AI Chat** | `/ai-chat` | 0.2.0 | Multi-provider (OpenAI/Claude/Ollama/demo), **project linking via Tag Manager**, provider status badge | +| 14 | **Hot Desk** | `/hot-desk` | 0.1.0 | 4 desks, week-ahead calendar, room layout (window+door), reserve/cancel | ### Registratura — Legal Deadline Tracking (Termene Legale) diff --git a/public/uat.json b/public/uat.json new file mode 100644 index 0000000..9837c8c --- /dev/null +++ b/public/uat.json @@ -0,0 +1,12746 @@ +[ + { + "siruta": "102543", + "name": "1 DECEMBRIE" + }, + { + "siruta": "60598", + "name": "23 AUGUST" + }, + { + "siruta": "27070", + "name": "ABRAM" + }, + { + "siruta": "27169", + "name": "ABRĂMUŢ" + }, + { + "siruta": "1151", + "name": "ABRUD" + }, + { + "siruta": "136713", + "name": "ACÂŞ" + }, + { + "siruta": "114970", + "name": "ACĂŢARI" + }, + { + "siruta": "60883", + "name": "ADAMCLISI" + }, + { + "siruta": "115076", + "name": "ADĂMUŞ" + }, + { + "siruta": "100754", + "name": "ADÂNCATA" + }, + { + "siruta": "146799", + "name": "ADÂNCATA" + }, + { + "siruta": "40035", + "name": "ADĂŞENI" + }, + { + "siruta": "174860", + "name": "ADJUD" + }, + { + "siruta": "131899", + "name": "ADUNAŢI" + }, + { + "siruta": "100781", + "name": "ADUNAŢII-COPĂCENI" + }, + { + "siruta": "70520", + "name": "AFUMAŢI" + }, + { + "siruta": "100834", + "name": "AFUMAŢI" + }, + { + "siruta": "121108", + "name": "AGAPIA" + }, + { + "siruta": "21007", + "name": "AGĂŞ" + }, + { + "siruta": "55473", + "name": "AGHIREŞU" + }, + { + "siruta": "60570", + "name": "AGIGEA" + }, + { + "siruta": "143682", + "name": "AGNITA" + }, + { + "siruta": "139937", + "name": "AGRIJ" + }, + { + "siruta": "179873", + "name": "AGRIŞ" + }, + { + "siruta": "63777", + "name": "AITA MARE" + }, + { + "siruta": "55598", + "name": "AITON" + }, + { + "siruta": "1213", + "name": "AIUD" + }, + { + "siruta": "1017", + "name": "ALBA IULIA" + }, + { + "siruta": "2130", + "name": "ALBAC" + }, + { + "siruta": "78472", + "name": "ALBENI" + }, + { + "siruta": "92783", + "name": "ALBEŞTI" + }, + { + "siruta": "114603", + "name": "ALBEŞTI" + }, + { + "siruta": "36131", + "name": "ALBEŞTI" + }, + { + "siruta": "162014", + "name": "ALBEŞTI" + }, + { + "siruta": "60945", + "name": "ALBEŞTI" + }, + { + "siruta": "131933", + "name": "ALBEŞTI-PALEOLOGU" + }, + { + "siruta": "13819", + "name": "ALBEŞTII DE ARGEŞ" + }, + { + "siruta": "13891", + "name": "ALBEŞTII DE MUSCEL" + }, + { + "siruta": "13935", + "name": "ALBOTA" + }, + { + "siruta": "26699", + "name": "ALEŞD" + }, + { + "siruta": "151790", + "name": "ALEXANDRIA" + }, + { + "siruta": "124938", + "name": "ALEXANDRU CEL BUN" + }, + { + "siruta": "95612", + "name": "ALEXANDRU I. CUZA" + }, + { + "siruta": "94125", + "name": "ALEXANDRU ODOBESCU" + }, + { + "siruta": "162069", + "name": "ALEXANDRU VLAHUŢĂ" + }, + { + "siruta": "100852", + "name": "ALEXENI" + }, + { + "siruta": "61005", + "name": "ALIMAN" + }, + { + "siruta": "78542", + "name": "ALIMPEŞTI" + }, + { + "siruta": "146012", + "name": "ALMA" + }, + { + "siruta": "70566", + "name": "ALMĂJ" + }, + { + "siruta": "9743", + "name": "ALMAŞ" + }, + { + "siruta": "139982", + "name": "ALMAŞU" + }, + { + "siruta": "2309", + "name": "ALMAŞU MARE" + }, + { + "siruta": "143888", + "name": "ALŢINA" + }, + { + "siruta": "131988", + "name": "ALUNIŞ" + }, + { + "siruta": "115147", + "name": "ALUNIŞ" + }, + { + "siruta": "55623", + "name": "ALUNIŞ" + }, + { + "siruta": "168229", + "name": "ALUNU" + }, + { + "siruta": "92836", + "name": "AMARA" + }, + { + "siruta": "168309", + "name": "AMĂRĂŞTI" + }, + { + "siruta": "70637", + "name": "AMĂRĂŞTII DE JOS" + }, + { + "siruta": "70673", + "name": "AMĂRĂŞTII DE SUS" + }, + { + "siruta": "44863", + "name": "AMARU" + }, + { + "siruta": "63198", + "name": "AMZACEA" + }, + { + "siruta": "92872", + "name": "ANDRĂŞEŞTI" + }, + { + "siruta": "175126", + "name": "ANDREIAŞU DE JOS" + }, + { + "siruta": "136768", + "name": "ANDRID" + }, + { + "siruta": "95667", + "name": "ANDRIEŞENI" + }, + { + "siruta": "50889", + "name": "ANINA" + }, + { + "siruta": "78604", + "name": "ANINOASA" + }, + { + "siruta": "65379", + "name": "ANINOASA" + }, + { + "siruta": "13999", + "name": "ANINOASA" + }, + { + "siruta": "87219", + "name": "ANINOASA" + }, + { + "siruta": "136802", + "name": "APA" + }, + { + "siruta": "55687", + "name": "APAHIDA" + }, + { + "siruta": "40526", + "name": "APAŢA" + }, + { + "siruta": "9798", + "name": "APATEU" + }, + { + "siruta": "70726", + "name": "APELE VII" + }, + { + "siruta": "115183", + "name": "APOLD" + }, + { + "siruta": "143922", + "name": "APOLDU DE JOS" + }, + { + "siruta": "132011", + "name": "APOSTOLACHE" + }, + { + "siruta": "9262", + "name": "ARAD" + }, + { + "siruta": "146860", + "name": "ARBORE" + }, + { + "siruta": "78668", + "name": "ARCANI" + }, + { + "siruta": "9832", + "name": "ARCHIŞ" + }, + { + "siruta": "65113", + "name": "ARCUŞ" + }, + { + "siruta": "21098", + "name": "ARDEOANI" + }, + { + "siruta": "136848", + "name": "ARDUD" + }, + { + "siruta": "107001", + "name": "ARDUSAT" + }, + { + "siruta": "14049", + "name": "AREFU" + }, + { + "siruta": "70744", + "name": "ARGETOAIA" + }, + { + "siruta": "132075", + "name": "ARICEŞTII RAHTIVANI" + }, + { + "siruta": "132137", + "name": "ARICEŞTII ZELETIN" + }, + { + "siruta": "2381", + "name": "ARIEŞENI" + }, + { + "siruta": "107047", + "name": "ARINIŞ" + }, + { + "siruta": "100870", + "name": "ARMĂŞEŞTI" + }, + { + "siruta": "51243", + "name": "ARMENIŞ" + }, + { + "siruta": "95747", + "name": "ARONEANU" + }, + { + "siruta": "143959", + "name": "ARPAŞU DE JOS" + }, + { + "siruta": "162149", + "name": "ARSURA" + }, + { + "siruta": "21123", + "name": "ASĂU" + }, + { + "siruta": "55776", + "name": "AŞCHILEU" + }, + { + "siruta": "26742", + "name": "AŞTILEU" + }, + { + "siruta": "107083", + "name": "ASUAJU DE SUS" + }, + { + "siruta": "143995", + "name": "AŢEL" + }, + { + "siruta": "83785", + "name": "ATID" + }, + { + "siruta": "115236", + "name": "AŢINTIŞ" + }, + { + "siruta": "42498", + "name": "AUGUSTIN" + }, + { + "siruta": "27212", + "name": "AUŞEU" + }, + { + "siruta": "2577", + "name": "AVRAM IANCU" + }, + { + "siruta": "27285", + "name": "AVRAM IANCU" + }, + { + "siruta": "36202", + "name": "AVRĂMENI" + }, + { + "siruta": "83847", + "name": "AVRĂMEŞTI" + }, + { + "siruta": "144054", + "name": "AVRIG" + }, + { + "siruta": "144116", + "name": "AXENTE SEVER" + }, + { + "siruta": "100923", + "name": "AXINTELE" + }, + { + "siruta": "130954", + "name": "AZUGA" + }, + { + "siruta": "132164", + "name": "BABA ANA" + }, + { + "siruta": "159650", + "name": "BABADAG" + }, + { + "siruta": "152038", + "name": "BĂBĂIŢA" + }, + { + "siruta": "14085", + "name": "BĂBANA" + }, + { + "siruta": "168372", + "name": "BĂBENI" + }, + { + "siruta": "140084", + "name": "BĂBENI" + }, + { + "siruta": "125659", + "name": "BĂBICIU" + }, + { + "siruta": "162327", + "name": "BĂCANI" + }, + { + "siruta": "20297", + "name": "BACĂU" + }, + { + "siruta": "162381", + "name": "BĂCEŞTI" + }, + { + "siruta": "88047", + "name": "BĂCIA" + }, + { + "siruta": "55838", + "name": "BACIU" + }, + { + "siruta": "110571", + "name": "BÂCLEŞ" + }, + { + "siruta": "115575", + "name": "BĂGACIU" + }, + { + "siruta": "121153", + "name": "BAHNA" + }, + { + "siruta": "115307", + "name": "BAHNEA" + }, + { + "siruta": "146904", + "name": "BAIA" + }, + { + "siruta": "159785", + "name": "BAIA" + }, + { + "siruta": "109924", + "name": "BAIA DE ARAMĂ" + }, + { + "siruta": "2915", + "name": "BAIA DE ARIEŞ" + }, + { + "siruta": "87745", + "name": "BAIA DE CRIŞ" + }, + { + "siruta": "78711", + "name": "BAIA DE FIER" + }, + { + "siruta": "106318", + "name": "BAIA MARE" + }, + { + "siruta": "106684", + "name": "BAIA SPRIE" + }, + { + "siruta": "130981", + "name": "BĂICOI" + }, + { + "siruta": "14165", + "name": "BĂICULEŞTI" + }, + { + "siruta": "167641", + "name": "BĂILE GOVORA" + }, + { + "siruta": "50923", + "name": "BĂILE HERCULANE" + }, + { + "siruta": "167696", + "name": "BĂILE OLĂNEŞTI" + }, + { + "siruta": "83428", + "name": "BĂILE TUŞNAD" + }, + { + "siruta": "70316", + "name": "BĂILEŞTI" + }, + { + "siruta": "55918", + "name": "BĂIŞOARA" + }, + { + "siruta": "88092", + "name": "BĂIŢA" + }, + { + "siruta": "107118", + "name": "BĂIŢA DE SUB CODRU" + }, + { + "siruta": "107154", + "name": "BĂIUŢ" + }, + { + "siruta": "110296", + "name": "BALA" + }, + { + "siruta": "115600", + "name": "BĂLA" + }, + { + "siruta": "75542", + "name": "BĂLĂBĂNEŞTI" + }, + { + "siruta": "151530", + "name": "BĂLĂCEANA" + }, + { + "siruta": "44989", + "name": "BĂLĂCEANU" + }, + { + "siruta": "151996", + "name": "BALACI" + }, + { + "siruta": "110535", + "name": "BĂLĂCIŢA" + }, + { + "siruta": "92907", + "name": "BALACIU" + }, + { + "siruta": "83464", + "name": "BĂLAN" + }, + { + "siruta": "140146", + "name": "BĂLAN" + }, + { + "siruta": "78748", + "name": "BĂLĂNEŞTI" + }, + { + "siruta": "75613", + "name": "BĂLĂŞEŞTI" + }, + { + "siruta": "115637", + "name": "BĂLĂUŞERI" + }, + { + "siruta": "27329", + "name": "BALC" + }, + { + "siruta": "21196", + "name": "BALCANI" + }, + { + "siruta": "146995", + "name": "BĂLCĂUŢI" + }, + { + "siruta": "168452", + "name": "BĂLCEŞTI" + }, + { + "siruta": "125677", + "name": "BALDOVINEŞTI" + }, + { + "siruta": "66198", + "name": "BĂLENI" + }, + { + "siruta": "75668", + "name": "BĂLENI" + }, + { + "siruta": "77910", + "name": "BĂLEŞTI" + }, + { + "siruta": "175206", + "name": "BĂLEŞTI" + }, + { + "siruta": "14272", + "name": "BĂLILEŞTI" + }, + { + "siruta": "155546", + "name": "BALINŢ" + }, + { + "siruta": "100969", + "name": "BALOTEŞTI" + }, + { + "siruta": "100273", + "name": "BALŞ" + }, + { + "siruta": "125418", + "name": "BALŞ" + }, + { + "siruta": "87843", + "name": "BALŞA" + }, + { + "siruta": "110456", + "name": "BALTA" + }, + { + "siruta": "44934", + "name": "BALTA ALBĂ" + }, + { + "siruta": "132226", + "name": "BALTA DOAMNEI" + }, + { + "siruta": "121242", + "name": "BĂLŢĂTEŞTI" + }, + { + "siruta": "95792", + "name": "BĂLŢAŢI" + }, + { + "siruta": "130286", + "name": "BĂLTENI" + }, + { + "siruta": "162452", + "name": "BĂLTENI" + }, + { + "siruta": "79004", + "name": "BÂLTENI" + }, + { + "siruta": "132271", + "name": "BĂLŢEŞTI" + }, + { + "siruta": "36300", + "name": "BĂLUŞENI" + }, + { + "siruta": "110688", + "name": "BÂLVĂNEŞTI" + }, + { + "siruta": "162194", + "name": "BANCA" + }, + { + "siruta": "115389", + "name": "BAND" + }, + { + "siruta": "101001", + "name": "BĂNEASA" + }, + { + "siruta": "75686", + "name": "BĂNEASA" + }, + { + "siruta": "61069", + "name": "BĂNEASA" + }, + { + "siruta": "132315", + "name": "BĂNEŞTI" + }, + { + "siruta": "51305", + "name": "BĂNIA" + }, + { + "siruta": "140208", + "name": "BĂNIŞOR" + }, + { + "siruta": "87246", + "name": "BĂNIŢA" + }, + { + "siruta": "155591", + "name": "BANLOC" + }, + { + "siruta": "155662", + "name": "BARA" + }, + { + "siruta": "63294", + "name": "BĂRĂGANU" + }, + { + "siruta": "42824", + "name": "BĂRĂGANUL" + }, + { + "siruta": "63447", + "name": "BARAOLT" + }, + { + "siruta": "125757", + "name": "BĂRĂŞTI" + }, + { + "siruta": "78828", + "name": "BĂRBĂTEŞTI" + }, + { + "siruta": "168559", + "name": "BĂRBĂTEŞTI" + }, + { + "siruta": "180064", + "name": "BĂRBULEŞTI" + }, + { + "siruta": "66223", + "name": "BĂRBULEŢU" + }, + { + "siruta": "70940", + "name": "BÂRCA" + }, + { + "siruta": "101056", + "name": "BĂRCĂNEŞTI" + }, + { + "siruta": "130552", + "name": "BĂRCĂNEŞTI" + }, + { + "siruta": "63633", + "name": "BARCANI" + }, + { + "siruta": "75515", + "name": "BARCEA" + }, + { + "siruta": "121466", + "name": "BÂRGĂUANI" + }, + { + "siruta": "144232", + "name": "BÂRGHIŞ" + }, + { + "siruta": "14450", + "name": "BÂRLA" + }, + { + "siruta": "161794", + "name": "BÂRLAD" + }, + { + "siruta": "155957", + "name": "BÂRNA" + }, + { + "siruta": "95088", + "name": "BÂRNOVA" + }, + { + "siruta": "10051", + "name": "BÂRSA" + }, + { + "siruta": "107314", + "name": "BÂRSANA" + }, + { + "siruta": "21454", + "name": "BÂRSĂNEŞTI" + }, + { + "siruta": "137103", + "name": "BÂRSĂU" + }, + { + "siruta": "175224", + "name": "BÂRSEŞTI" + }, + { + "siruta": "87996", + "name": "BARU" + }, + { + "siruta": "125846", + "name": "BÂRZA" + }, + { + "siruta": "10104", + "name": "BÂRZAVA" + }, + { + "siruta": "13187", + "name": "BASCOV" + }, + { + "siruta": "107190", + "name": "BĂSEŞTI" + }, + { + "siruta": "9887", + "name": "BATA" + }, + { + "siruta": "63802", + "name": "BĂŢANI" + }, + { + "siruta": "27383", + "name": "BATĂR" + }, + { + "siruta": "136919", + "name": "BĂTARCI" + }, + { + "siruta": "115520", + "name": "BATOŞ" + }, + { + "siruta": "88216", + "name": "BĂTRÂNA" + }, + { + "siruta": "136278", + "name": "BĂTRÂNI" + }, + { + "siruta": "51332", + "name": "BĂUŢAR" + }, + { + "siruta": "144152", + "name": "BAZNA" + }, + { + "siruta": "155724", + "name": "BEBA VECHE" + }, + { + "siruta": "45003", + "name": "BECENI" + }, + { + "siruta": "70879", + "name": "BECHET" + }, + { + "siruta": "155760", + "name": "BECICHERECU MIC" + }, + { + "siruta": "155083", + "name": "BECIU" + }, + { + "siruta": "32483", + "name": "BECLEAN" + }, + { + "siruta": "40544", + "name": "BECLEAN" + }, + { + "siruta": "115708", + "name": "BEICA DE JOS" + }, + { + "siruta": "159847", + "name": "BEIDAUD" + }, + { + "siruta": "26804", + "name": "BEIUŞ" + }, + { + "siruta": "95872", + "name": "BELCEŞTI" + }, + { + "siruta": "101083", + "name": "BELCIUGATELE" + }, + { + "siruta": "14352", + "name": "BELEŢI-NEGREŞTI" + }, + { + "siruta": "63866", + "name": "BELIN" + }, + { + "siruta": "155797", + "name": "BELINŢ" + }, + { + "siruta": "56014", + "name": "BELIŞ" + }, + { + "siruta": "9930", + "name": "BELIU" + }, + { + "siruta": "136964", + "name": "BELTIUG" + }, + { + "siruta": "140244", + "name": "BENESAT" + }, + { + "siruta": "78873", + "name": "BENGEŞTI-CIOCADIA" + }, + { + "siruta": "168602", + "name": "BERBEŞTI" + }, + { + "siruta": "45101", + "name": "BERCA" + }, + { + "siruta": "130614", + "name": "BERCENI" + }, + { + "siruta": "101145", + "name": "BERCENI" + }, + { + "siruta": "151576", + "name": "BERCHISEŞTI" + }, + { + "siruta": "120511", + "name": "BERENI" + }, + { + "siruta": "75338", + "name": "BEREŞTI" + }, + { + "siruta": "21249", + "name": "BEREŞTI-BISTRIŢA" + }, + { + "siruta": "75356", + "name": "BEREŞTI-MERIA" + }, + { + "siruta": "21338", + "name": "BEREŞTI-TAZLĂU" + }, + { + "siruta": "14405", + "name": "BEREVOEŞTI" + }, + { + "siruta": "162498", + "name": "BEREZENI" + }, + { + "siruta": "2988", + "name": "BERGHIN" + }, + { + "siruta": "168675", + "name": "BERISLĂVEŞTI" + }, + { + "siruta": "88261", + "name": "BERIU" + }, + { + "siruta": "78926", + "name": "BERLEŞTI" + }, + { + "siruta": "51387", + "name": "BERLIŞTE" + }, + { + "siruta": "132342", + "name": "BERTEA" + }, + { + "siruta": "42842", + "name": "BERTEŞTII DE JOS" + }, + { + "siruta": "137032", + "name": "BERVENI" + }, + { + "siruta": "51449", + "name": "BERZASCA" + }, + { + "siruta": "51500", + "name": "BERZOVIA" + }, + { + "siruta": "21418", + "name": "BERZUNŢI" + }, + { + "siruta": "161552", + "name": "BEŞTEPE" + }, + { + "siruta": "155840", + "name": "BETHAUSEN" + }, + { + "siruta": "155092", + "name": "BEUCA" + }, + { + "siruta": "66330", + "name": "BEZDEAD" + }, + { + "siruta": "120968", + "name": "BICAZ" + }, + { + "siruta": "107234", + "name": "BICAZ" + }, + { + "siruta": "121297", + "name": "BICAZ-CHEI" + }, + { + "siruta": "121340", + "name": "BICAZU ARDELEAN" + }, + { + "siruta": "115771", + "name": "BICHIŞ" + }, + { + "siruta": "144198", + "name": "BIERTAN" + }, + { + "siruta": "27436", + "name": "BIHARIA" + }, + { + "siruta": "83936", + "name": "BILBOR" + }, + { + "siruta": "147036", + "name": "BILCA" + }, + { + "siruta": "66401", + "name": "BILCIUREŞTI" + }, + { + "siruta": "155911", + "name": "BILED" + }, + { + "siruta": "178929", + "name": "BILIEŞTI" + }, + { + "siruta": "121386", + "name": "BIRA" + }, + { + "siruta": "10006", + "name": "BIRCHIŞ" + }, + { + "siruta": "159366", + "name": "BIRDA" + }, + { + "siruta": "45245", + "name": "BISOCA" + }, + { + "siruta": "3039", + "name": "BISTRA" + }, + { + "siruta": "107270", + "name": "BISTRA" + }, + { + "siruta": "70897", + "name": "BISTREŢ" + }, + { + "siruta": "32394", + "name": "BISTRIŢA" + }, + { + "siruta": "32633", + "name": "BISTRIŢA BÂRGĂULUI" + }, + { + "siruta": "95943", + "name": "BIVOLARI" + }, + { + "siruta": "65121", + "name": "BIXAD" + }, + { + "siruta": "137069", + "name": "BIXAD" + }, + { + "siruta": "162559", + "name": "BLĂGEŞTI" + }, + { + "siruta": "21506", + "name": "BLĂGEŞTI" + }, + { + "siruta": "1348", + "name": "BLAJ" + }, + { + "siruta": "45334", + "name": "BLĂJANI" + }, + { + "siruta": "144303", + "name": "BLĂJEL" + }, + { + "siruta": "88350", + "name": "BLĂJENI" + }, + { + "siruta": "39983", + "name": "BLÂNDEŞTI" + }, + { + "siruta": "3397", + "name": "BLANDIANA" + }, + { + "siruta": "152083", + "name": "BLEJEŞTI" + }, + { + "siruta": "130678", + "name": "BLEJOI" + }, + { + "siruta": "56096", + "name": "BOBÂLNA" + }, + { + "siruta": "125873", + "name": "BOBICEŞTI" + }, + { + "siruta": "140280", + "name": "BOBOTA" + }, + { + "siruta": "107350", + "name": "BOCICOIU MARE" + }, + { + "siruta": "50969", + "name": "BOCŞA" + }, + { + "siruta": "140324", + "name": "BOCŞA" + }, + { + "siruta": "10195", + "name": "BOCSIG" + }, + { + "siruta": "40606", + "name": "BOD" + }, + { + "siruta": "121607", + "name": "BODEŞTI" + }, + { + "siruta": "63893", + "name": "BODOC" + }, + { + "siruta": "115824", + "name": "BOGATA" + }, + { + "siruta": "14584", + "name": "BOGAŢI" + }, + { + "siruta": "156035", + "name": "BOGDA" + }, + { + "siruta": "107403", + "name": "BOGDAN VODĂ" + }, + { + "siruta": "162595", + "name": "BOGDANA" + }, + { + "siruta": "152127", + "name": "BOGDANA" + }, + { + "siruta": "137130", + "name": "BOGDAND" + }, + { + "siruta": "21560", + "name": "BOGDĂNEŞTI" + }, + { + "siruta": "162693", + "name": "BOGDĂNEŞTI" + }, + { + "siruta": "147054", + "name": "BOGDĂNEŞTI" + }, + { + "siruta": "162791", + "name": "BOGDĂNIŢA" + }, + { + "siruta": "175260", + "name": "BOGHEŞTI" + }, + { + "siruta": "125178", + "name": "BOGHICEA" + }, + { + "siruta": "180037", + "name": "BOGHIŞ" + }, + { + "siruta": "27506", + "name": "BOIANU MARE" + }, + { + "siruta": "168755", + "name": "BOIŞOARA" + }, + { + "siruta": "146021", + "name": "BOIŢA" + }, + { + "siruta": "107430", + "name": "BOIU MARE" + }, + { + "siruta": "79077", + "name": "BOLBOŞI" + }, + { + "siruta": "132379", + "name": "BOLDEŞTI-GRADIŞTEA" + }, + { + "siruta": "131069", + "name": "BOLDEŞTI-SCĂENI" + }, + { + "siruta": "45361", + "name": "BOLDU" + }, + { + "siruta": "156106", + "name": "BOLDUR" + }, + { + "siruta": "101163", + "name": "BOLINTIN-DEAL" + }, + { + "siruta": "101190", + "name": "BOLINTIN-VALE" + }, + { + "siruta": "175368", + "name": "BOLOTEŞTI" + }, + { + "siruta": "51546", + "name": "BOLVAŞNIŢA" + }, + { + "siruta": "56210", + "name": "BONŢIDA" + }, + { + "siruta": "179784", + "name": "BORĂNEŞTI" + }, + { + "siruta": "79157", + "name": "BORĂSCU" + }, + { + "siruta": "121652", + "name": "BORCA" + }, + { + "siruta": "92961", + "name": "BORCEA" + }, + { + "siruta": "42913", + "name": "BORDEI VERDE" + }, + { + "siruta": "175439", + "name": "BORDEŞTI" + }, + { + "siruta": "92989", + "name": "BORDUŞANI" + }, + { + "siruta": "121732", + "name": "BORLEŞTI" + }, + { + "siruta": "147072", + "name": "BOROAIA" + }, + { + "siruta": "27560", + "name": "BOROD" + }, + { + "siruta": "63937", + "name": "BOROSNEU MARE" + }, + { + "siruta": "27631", + "name": "BORŞ" + }, + { + "siruta": "56265", + "name": "BORŞA" + }, + { + "siruta": "106746", + "name": "BORŞA" + }, + { + "siruta": "83491", + "name": "BORSEC" + }, + { + "siruta": "147134", + "name": "BOSANCI" + }, + { + "siruta": "88449", + "name": "BOŞOROD" + }, + { + "siruta": "14673", + "name": "BOTENI" + }, + { + "siruta": "121796", + "name": "BOTEŞTI" + }, + { + "siruta": "14726", + "name": "BOŢEŞTI" + }, + { + "siruta": "162871", + "name": "BOŢEŞTI" + }, + { + "siruta": "137185", + "name": "BOTIZ" + }, + { + "siruta": "107485", + "name": "BOTIZA" + }, + { + "siruta": "152172", + "name": "BOTOROAGA" + }, + { + "siruta": "147161", + "name": "BOTOŞANA" + }, + { + "siruta": "35731", + "name": "BOTOŞANI" + }, + { + "siruta": "70968", + "name": "BOTOŞEŞTI-PAIA" + }, + { + "siruta": "121876", + "name": "BOZIENI" + }, + { + "siruta": "45389", + "name": "BOZIORU" + }, + { + "siruta": "51573", + "name": "BOZOVICI" + }, + { + "siruta": "70986", + "name": "BRABOVA" + }, + { + "siruta": "87291", + "name": "BRAD" + }, + { + "siruta": "45496", + "name": "BRĂDEANU" + }, + { + "siruta": "144376", + "name": "BRĂDENI" + }, + { + "siruta": "71055", + "name": "BRĂDEŞTI" + }, + { + "siruta": "83151", + "name": "BRĂDEŞTI" + }, + { + "siruta": "13276", + "name": "BRADU" + }, + { + "siruta": "14753", + "name": "BRĂDULEŢ" + }, + { + "siruta": "64041", + "name": "BRĂDUŢ" + }, + { + "siruta": "45539", + "name": "BRĂEŞTI" + }, + { + "siruta": "36373", + "name": "BRĂEŞTI" + }, + { + "siruta": "96058", + "name": "BRĂEŞTI" + }, + { + "siruta": "152234", + "name": "BRAGADIRU" + }, + { + "siruta": "179221", + "name": "BRAGADIRU" + }, + { + "siruta": "75766", + "name": "BRĂHĂŞEŞTI" + }, + { + "siruta": "42682", + "name": "BRĂILA" + }, + { + "siruta": "71126", + "name": "BRALOŞTIŢA" + }, + { + "siruta": "40633", + "name": "BRAN" + }, + { + "siruta": "152252", + "name": "BRÂNCENI" + }, + { + "siruta": "115897", + "name": "BRÂNCOVENEŞTI" + }, + { + "siruta": "126022", + "name": "BRÂNCOVENI" + }, + { + "siruta": "79237", + "name": "BRĂNEŞTI" + }, + { + "siruta": "66009", + "name": "BRĂNEŞTI" + }, + { + "siruta": "101298", + "name": "BRĂNEŞTI" + }, + { + "siruta": "88546", + "name": "BRĂNIŞCA" + }, + { + "siruta": "114060", + "name": "BRANIŞTEA" + }, + { + "siruta": "66152", + "name": "BRANIŞTEA" + }, + { + "siruta": "32660", + "name": "BRANIŞTEA" + }, + { + "siruta": "75711", + "name": "BRANIŞTEA" + }, + { + "siruta": "40198", + "name": "BRAŞOV" + }, + { + "siruta": "125962", + "name": "BRASTAVĂŢU" + }, + { + "siruta": "27686", + "name": "BRATCA" + }, + { + "siruta": "144349", + "name": "BRATEIU" + }, + { + "siruta": "64005", + "name": "BRATEŞ" + }, + { + "siruta": "71199", + "name": "BRATOVOEŞTI" + }, + { + "siruta": "130712", + "name": "BRAZI" + }, + { + "siruta": "10239", + "name": "BRAZII" + }, + { + "siruta": "71260", + "name": "BREASTA" + }, + { + "siruta": "45619", + "name": "BREAZA" + }, + { + "siruta": "115851", + "name": "BREAZA" + }, + { + "siruta": "147205", + "name": "BREAZA" + }, + { + "siruta": "131103", + "name": "BREAZA" + }, + { + "siruta": "125999", + "name": "BREBENI" + }, + { + "siruta": "132404", + "name": "BREBU" + }, + { + "siruta": "51626", + "name": "BREBU" + }, + { + "siruta": "51662", + "name": "BREBU NOU" + }, + { + "siruta": "156151", + "name": "BRESTOVĂŢ" + }, + { + "siruta": "64096", + "name": "BREŢCU" + }, + { + "siruta": "88644", + "name": "BRETEA ROMÂNĂ" + }, + { + "siruta": "110740", + "name": "BREZNIŢA-MOTRU" + }, + { + "siruta": "110820", + "name": "BREZNIŢA-OCOL" + }, + { + "siruta": "101341", + "name": "BREZOAELE" + }, + { + "siruta": "167794", + "name": "BREZOI" + }, + { + "siruta": "147241", + "name": "BRODINA" + }, + { + "siruta": "36426", + "name": "BROSCĂUŢI" + }, + { + "siruta": "110875", + "name": "BROŞTENI" + }, + { + "siruta": "175466", + "name": "BROŞTENI" + }, + { + "siruta": "147358", + "name": "BROŞTENI" + }, + { + "siruta": "144410", + "name": "BRUIU" + }, + { + "siruta": "27757", + "name": "BRUSTURI" + }, + { + "siruta": "121938", + "name": "BRUSTURI" + }, + { + "siruta": "21597", + "name": "BRUSTUROASA" + }, + { + "siruta": "36453", + "name": "BUCECEA" + }, + { + "siruta": "9026", + "name": "BUCERDEA GRÂNOASĂ" + }, + { + "siruta": "88788", + "name": "BUCEŞ" + }, + { + "siruta": "51699", + "name": "BUCHIN" + }, + { + "siruta": "126077", + "name": "BUCINIŞU" + }, + { + "siruta": "3459", + "name": "BUCIUM" + }, + { + "siruta": "66438", + "name": "BUCIUMENI" + }, + { + "siruta": "75819", + "name": "BUCIUMENI" + }, + { + "siruta": "140379", + "name": "BUCIUMI" + }, + { + "siruta": "26338", + "name": "BUCIUMI" + }, + { + "siruta": "51751", + "name": "BUCOŞNIŢA" + }, + { + "siruta": "130785", + "name": "BUCOV" + }, + { + "siruta": "159516", + "name": "BUCOVĂŢ" + }, + { + "siruta": "69964", + "name": "BUCOVĂŢ" + }, + { + "siruta": "101378", + "name": "BUCŞANI" + }, + { + "siruta": "66474", + "name": "BUCŞANI" + }, + { + "siruta": "93021", + "name": "BUCU" + }, + { + "siruta": "88868", + "name": "BUCUREŞCI" + }, + { + "siruta": "45673", + "name": "BUDA" + }, + { + "siruta": "32704", + "name": "BUDACU DE JOS" + }, + { + "siruta": "14851", + "name": "BUDEASA" + }, + { + "siruta": "168791", + "name": "BUDEŞTI" + }, + { + "siruta": "32768", + "name": "BUDEŞTI" + }, + { + "siruta": "101458", + "name": "BUDEŞTI" + }, + { + "siruta": "107519", + "name": "BUDEŞTI" + }, + { + "siruta": "40688", + "name": "BUDILA" + }, + { + "siruta": "27846", + "name": "BUDUREASA" + }, + { + "siruta": "27908", + "name": "BUDUSLĂU" + }, + { + "siruta": "179793", + "name": "BUEŞTI" + }, + { + "siruta": "100576", + "name": "BUFTEA" + }, + { + "siruta": "14922", + "name": "BUGHEA DE JOS" + }, + { + "siruta": "20063", + "name": "BUGHEA DE SUS" + }, + { + "siruta": "21668", + "name": "BUHOCI" + }, + { + "siruta": "20778", + "name": "BUHUŞI" + }, + { + "siruta": "168880", + "name": "BUJORENI" + }, + { + "siruta": "152270", + "name": "BUJORENI" + }, + { + "siruta": "152314", + "name": "BUJORU" + }, + { + "siruta": "101519", + "name": "BULBUCATA" + }, + { + "siruta": "27935", + "name": "BULZ" + }, + { + "siruta": "71340", + "name": "BULZEŞTI" + }, + { + "siruta": "88920", + "name": "BULZEŞTII DE SUS" + }, + { + "siruta": "79308", + "name": "BUMBEŞTI-JIU" + }, + { + "siruta": "79362", + "name": "BUMBEŞTI-PIŢIC" + }, + { + "siruta": "147465", + "name": "BUNEŞTI" + }, + { + "siruta": "168960", + "name": "BUNEŞTI" + }, + { + "siruta": "40704", + "name": "BUNEŞTI" + }, + { + "siruta": "162924", + "name": "BUNEŞTI-AVEREŞTI" + }, + { + "siruta": "89026", + "name": "BUNILA" + }, + { + "siruta": "27971", + "name": "BUNTEŞTI" + }, + { + "siruta": "110946", + "name": "BURILA MARE" + }, + { + "siruta": "89080", + "name": "BURJUC" + }, + { + "siruta": "151521", + "name": "BURLA" + }, + { + "siruta": "131210", + "name": "BUŞTENI" + }, + { + "siruta": "79406", + "name": "BUSTUCHIN" + }, + { + "siruta": "96110", + "name": "BUTEA" + }, + { + "siruta": "10293", + "name": "BUTENI" + }, + { + "siruta": "101564", + "name": "BUTIMANU" + }, + { + "siruta": "111006", + "name": "BUTOIEŞTI" + }, + { + "siruta": "101617", + "name": "BUTURUGENI" + }, + { + "siruta": "56327", + "name": "BUZA" + }, + { + "siruta": "44818", + "name": "BUZĂU" + }, + { + "siruta": "152332", + "name": "BUZESCU" + }, + { + "siruta": "155403", + "name": "BUZIAŞ" + }, + { + "siruta": "14940", + "name": "BUZOEŞTI" + }, + { + "siruta": "45815", + "name": "C.A. ROSETTI" + }, + { + "siruta": "159883", + "name": "C.A. ROSETTI" + }, + { + "siruta": "28077", + "name": "CĂBEŞTI" + }, + { + "siruta": "147526", + "name": "CACICA" + }, + { + "siruta": "56354", + "name": "CĂIANU" + }, + { + "siruta": "32811", + "name": "CĂIANU MIC" + }, + { + "siruta": "169119", + "name": "CÂINENI" + }, + { + "siruta": "21757", + "name": "CĂIUŢI" + }, + { + "siruta": "147633", + "name": "CAJVANA" + }, + { + "siruta": "70352", + "name": "CALAFAT" + }, + { + "siruta": "147580", + "name": "CALAFINDEŞTI" + }, + { + "siruta": "87424", + "name": "CĂLAN" + }, + { + "siruta": "71607", + "name": "CĂLĂRAŞI" + }, + { + "siruta": "92569", + "name": "CĂLĂRAŞI" + }, + { + "siruta": "36499", + "name": "CĂLĂRAŞI" + }, + { + "siruta": "56425", + "name": "CĂLĂRAŞI" + }, + { + "siruta": "56461", + "name": "CĂLĂŢELE" + }, + { + "siruta": "15064", + "name": "CĂLDĂRARU" + }, + { + "siruta": "167909", + "name": "CĂLIMĂNEŞTI" + }, + { + "siruta": "15108", + "name": "CĂLINEŞTI" + }, + { + "siruta": "107546", + "name": "CĂLINEŞTI" + }, + { + "siruta": "152350", + "name": "CĂLINEŞTI" + }, + { + "siruta": "137229", + "name": "CĂLINEŞTI-OAŞ" + }, + { + "siruta": "152412", + "name": "CĂLMĂŢUIU" + }, + { + "siruta": "152467", + "name": "CĂLMĂŢUIU DE SUS" + }, + { + "siruta": "4106", + "name": "CÂLNIC" + }, + { + "siruta": "79736", + "name": "CÂLNIC" + }, + { + "siruta": "71457", + "name": "CALOPĂR" + }, + { + "siruta": "101662", + "name": "CĂLUGĂRENI" + }, + { + "siruta": "132459", + "name": "CĂLUGĂRENI" + }, + { + "siruta": "130295", + "name": "CĂLUI" + }, + { + "siruta": "45753", + "name": "CALVINI" + }, + { + "siruta": "140440", + "name": "CAMĂR" + }, + { + "siruta": "56522", + "name": "CĂMĂRAŞU" + }, + { + "siruta": "137274", + "name": "CĂMĂRZANA" + }, + { + "siruta": "179677", + "name": "CĂMIN" + }, + { + "siruta": "28709", + "name": "CÂMPANI" + }, + { + "siruta": "1455", + "name": "CÂMPENI" + }, + { + "siruta": "55357", + "name": "CÂMPIA TURZII" + }, + { + "siruta": "131256", + "name": "CÂMPINA" + }, + { + "siruta": "174780", + "name": "CÂMPINEANCA" + }, + { + "siruta": "13490", + "name": "CÂMPULUNG" + }, + { + "siruta": "107715", + "name": "CÂMPULUNG LA TISA" + }, + { + "siruta": "146502", + "name": "CÂMPULUNG MOLDOVENESC" + }, + { + "siruta": "175670", + "name": "CÂMPURI" + }, + { + "siruta": "66526", + "name": "CÂNDEŞTI" + }, + { + "siruta": "122061", + "name": "CÂNDEŞTI" + }, + { + "siruta": "39967", + "name": "CÂNDEŞTI" + }, + { + "siruta": "45888", + "name": "CĂNEŞTI" + }, + { + "siruta": "28139", + "name": "CĂPÂLNA" + }, + { + "siruta": "83963", + "name": "CĂPÂLNIŢA" + }, + { + "siruta": "136553", + "name": "CĂPLENI" + }, + { + "siruta": "79497", + "name": "CĂPRENI" + }, + { + "siruta": "151503", + "name": "CAPU CÂMPULUI" + }, + { + "siruta": "56568", + "name": "CĂPUŞU MARE" + }, + { + "siruta": "125472", + "name": "CARACAL" + }, + { + "siruta": "10346", + "name": "CĂRAND" + }, + { + "siruta": "51010", + "name": "CARANSEBEŞ" + }, + { + "siruta": "51804", + "name": "CARAŞOVA" + }, + { + "siruta": "140477", + "name": "CARASTELEC" + }, + { + "siruta": "71518", + "name": "CARAULA" + }, + { + "siruta": "51840", + "name": "CĂRBUNARI" + }, + { + "siruta": "132486", + "name": "CĂRBUNEŞTI" + }, + { + "siruta": "159945", + "name": "CARCALIU" + }, + { + "siruta": "74859", + "name": "CÂRCEA" + }, + { + "siruta": "136526", + "name": "CAREI" + }, + { + "siruta": "86749", + "name": "CÂRJIŢI" + }, + { + "siruta": "147713", + "name": "CÂRLIBABA" + }, + { + "siruta": "175732", + "name": "CÂRLIGELE" + }, + { + "siruta": "126166", + "name": "CÂRLOGANI" + }, + { + "siruta": "74867", + "name": "CÂRNA" + }, + { + "siruta": "71536", + "name": "CARPEN" + }, + { + "siruta": "28193", + "name": "CĂRPINET" + }, + { + "siruta": "156213", + "name": "CĂRPINIŞ" + }, + { + "siruta": "144508", + "name": "CÂRŢA" + }, + { + "siruta": "84102", + "name": "CÂRŢA" + }, + { + "siruta": "144535", + "name": "CÂRŢIŞOARA" + }, + { + "siruta": "101724", + "name": "CĂSCIOARELE" + }, + { + "siruta": "56666", + "name": "CĂŞEIU" + }, + { + "siruta": "159963", + "name": "CASIMCEA" + }, + { + "siruta": "21720", + "name": "CAŞIN" + }, + { + "siruta": "61121", + "name": "CASTELU" + }, + { + "siruta": "71572", + "name": "CASTRANOVA" + }, + { + "siruta": "40768", + "name": "CAŢA" + }, + { + "siruta": "64130", + "name": "CATALINA" + }, + { + "siruta": "74842", + "name": "CATANE" + }, + { + "siruta": "57314", + "name": "CÂŢCĂU" + }, + { + "siruta": "15233", + "name": "CĂTEASCA" + }, + { + "siruta": "56773", + "name": "CĂTINA" + }, + { + "siruta": "45959", + "name": "CĂTINA" + }, + { + "siruta": "79585", + "name": "CĂTUNELE" + }, + { + "siruta": "137292", + "name": "CĂUAŞ" + }, + { + "siruta": "75864", + "name": "CAVADINEŞTI" + }, + { + "siruta": "106782", + "name": "CAVNIC" + }, + { + "siruta": "93067", + "name": "CĂZĂNEŞTI" + }, + { + "siruta": "111097", + "name": "CĂZĂNEŞTI" + }, + { + "siruta": "44560", + "name": "CAZASU" + }, + { + "siruta": "122025", + "name": "CEAHLĂU" + }, + { + "siruta": "160092", + "name": "CEAMURLIA DE JOS" + }, + { + "siruta": "56844", + "name": "CEANU MARE" + }, + { + "siruta": "160047", + "name": "CEATALCHIOI" + }, + { + "siruta": "28246", + "name": "CEFA" + }, + { + "siruta": "137363", + "name": "CEHAL" + }, + { + "siruta": "139740", + "name": "CEHU SILVANIEI" + }, + { + "siruta": "28335", + "name": "CEICA" + }, + { + "siruta": "71634", + "name": "CELARU" + }, + { + "siruta": "156259", + "name": "CENAD" + }, + { + "siruta": "3761", + "name": "CENADE" + }, + { + "siruta": "156277", + "name": "CENEI" + }, + { + "siruta": "15313", + "name": "CEPARI" + }, + { + "siruta": "96147", + "name": "CEPLENIŢA" + }, + { + "siruta": "132510", + "name": "CEPTURA" + }, + { + "siruta": "132574", + "name": "CERAŞU" + }, + { + "siruta": "71698", + "name": "CERĂT" + }, + { + "siruta": "89151", + "name": "CERBĂL" + }, + { + "siruta": "61167", + "name": "CERCHEZU" + }, + { + "siruta": "3805", + "name": "CERGĂU" + }, + { + "siruta": "10373", + "name": "CERMEI" + }, + { + "siruta": "160127", + "name": "CERNA" + }, + { + "siruta": "64194", + "name": "CERNAT" + }, + { + "siruta": "71723", + "name": "CERNĂTEŞTI" + }, + { + "siruta": "46019", + "name": "CERNĂTEŞTI" + }, + { + "siruta": "60776", + "name": "CERNAVODĂ" + }, + { + "siruta": "107582", + "name": "CERNEŞTI" + }, + { + "siruta": "101742", + "name": "CERNICA" + }, + { + "siruta": "169039", + "name": "CERNIŞOARA" + }, + { + "siruta": "89240", + "name": "CERTEJU DE SUS" + }, + { + "siruta": "75917", + "name": "CERŢEŞTI" + }, + { + "siruta": "137407", + "name": "CERTEZE" + }, + { + "siruta": "3841", + "name": "CERU-BĂCĂINŢI" + }, + { + "siruta": "152500", + "name": "CERVENIA" + }, + { + "siruta": "28415", + "name": "CETARIU" + }, + { + "siruta": "71787", + "name": "CETATE" + }, + { + "siruta": "32884", + "name": "CETATE" + }, + { + "siruta": "3958", + "name": "CETATEA DE BALTĂ" + }, + { + "siruta": "15402", + "name": "CETĂŢENI" + }, + { + "siruta": "115959", + "name": "CEUAŞU DE CÂMPIE" + }, + { + "siruta": "126102", + "name": "CEZIENI" + }, + { + "siruta": "159375", + "name": "CHECEA" + }, + { + "siruta": "28497", + "name": "CHERECHIU" + }, + { + "siruta": "116046", + "name": "CHEŢANI" + }, + { + "siruta": "156311", + "name": "CHEVEREŞU MARE" + }, + { + "siruta": "179249", + "name": "CHIAJNA" + }, + { + "siruta": "120478", + "name": "CHIBED" + }, + { + "siruta": "64238", + "name": "CHICHIŞ" + }, + { + "siruta": "140501", + "name": "CHIEŞD" + }, + { + "siruta": "116126", + "name": "CHIHERU DE JOS" + }, + { + "siruta": "160172", + "name": "CHILIA VECHE" + }, + { + "siruta": "46108", + "name": "CHILIILE" + }, + { + "siruta": "56988", + "name": "CHINTENI" + }, + { + "siruta": "33015", + "name": "CHIOCHIŞ" + }, + { + "siruta": "132645", + "name": "CHIOJDEANCA" + }, + { + "siruta": "175509", + "name": "CHIOJDENI" + }, + { + "siruta": "46180", + "name": "CHIOJDU" + }, + { + "siruta": "61210", + "name": "CHIRNOGENI" + }, + { + "siruta": "101804", + "name": "CHIRNOGI" + }, + { + "siruta": "144456", + "name": "CHIRPĂR" + }, + { + "siruta": "42708", + "name": "CHIŞCANI" + }, + { + "siruta": "101822", + "name": "CHISELET" + }, + { + "siruta": "10417", + "name": "CHISINDIA" + }, + { + "siruta": "9459", + "name": "CHIŞINEU-CRIŞ" + }, + { + "siruta": "28530", + "name": "CHIŞLAZ" + }, + { + "siruta": "179285", + "name": "CHITILA" + }, + { + "siruta": "57083", + "name": "CHIUIEŞTI" + }, + { + "siruta": "33122", + "name": "CHIUZA" + }, + { + "siruta": "156357", + "name": "CIACOVA" + }, + { + "siruta": "15448", + "name": "CICĂNEŞTI" + }, + { + "siruta": "107662", + "name": "CICÂRLĂU" + }, + { + "siruta": "86461", + "name": "CICEU" + }, + { + "siruta": "179953", + "name": "CICEU - MIHĂIEŞTI" + }, + { + "siruta": "32955", + "name": "CICEU-GIURGEŞTI" + }, + { + "siruta": "51948", + "name": "CICLOVA ROMÂNĂ" + }, + { + "siruta": "46251", + "name": "CILIBIA" + }, + { + "siruta": "126148", + "name": "CILIENI" + }, + { + "siruta": "40820", + "name": "CINCU" + }, + { + "siruta": "61256", + "name": "CIOBANU" + }, + { + "siruta": "93085", + "name": "CIOCĂNEŞTI" + }, + { + "siruta": "101840", + "name": "CIOCĂNEŞTI" + }, + { + "siruta": "151451", + "name": "CIOCĂNEŞTI" + }, + { + "siruta": "167268", + "name": "CIOCANI" + }, + { + "siruta": "100709", + "name": "CIOCÂRLIA" + }, + { + "siruta": "61283", + "name": "CIOCÂRLIA" + }, + { + "siruta": "93101", + "name": "CIOCHINA" + }, + { + "siruta": "42968", + "name": "CIOCILE" + }, + { + "siruta": "15493", + "name": "CIOFRÂNGENI" + }, + { + "siruta": "100362", + "name": "CIOHORĂNI" + }, + { + "siruta": "152528", + "name": "CIOLĂNEŞTI" + }, + { + "siruta": "101902", + "name": "CIOLPANI" + }, + { + "siruta": "15554", + "name": "CIOMĂGEŞTI" + }, + { + "siruta": "132681", + "name": "CIORANI" + }, + { + "siruta": "175590", + "name": "CIORĂŞTI" + }, + { + "siruta": "101957", + "name": "CIOROGÂRLA" + }, + { + "siruta": "71812", + "name": "CIOROIAŞI" + }, + { + "siruta": "96192", + "name": "CIORTEŞTI" + }, + { + "siruta": "151567", + "name": "CIPRIAN PORUMBESCU" + }, + { + "siruta": "43019", + "name": "CIREŞU" + }, + { + "siruta": "111220", + "name": "CIREŞU" + }, + { + "siruta": "46313", + "name": "CISLĂU" + }, + { + "siruta": "143735", + "name": "CISNĂDIE" + }, + { + "siruta": "57163", + "name": "CIUCEA" + }, + { + "siruta": "51984", + "name": "CIUCHICI" + }, + { + "siruta": "83981", + "name": "CIUCSÂNGEORGIU" + }, + { + "siruta": "160225", + "name": "CIUCUROVA" + }, + { + "siruta": "52035", + "name": "CIUDANOVIŢA" + }, + { + "siruta": "1071", + "name": "CIUGUD" + }, + { + "siruta": "93156", + "name": "CIULNIŢA" + }, + { + "siruta": "84086", + "name": "CIUMANI" + }, + { + "siruta": "28665", + "name": "CIUMEGHIU" + }, + { + "siruta": "179882", + "name": "CIUMEŞTI" + }, + { + "siruta": "151709", + "name": "CIUPERCENI" + }, + { + "siruta": "79656", + "name": "CIUPERCENI" + }, + { + "siruta": "71858", + "name": "CIUPERCENII NOI" + }, + { + "siruta": "96254", + "name": "CIUREA" + }, + { + "siruta": "57225", + "name": "CIURILA" + }, + { + "siruta": "4008", + "name": "CIURULEASA" + }, + { + "siruta": "140547", + "name": "CIZER" + }, + { + "siruta": "21855", + "name": "CLEJA" + }, + { + "siruta": "101984", + "name": "CLEJANI" + }, + { + "siruta": "102035", + "name": "CLINCENI" + }, + { + "siruta": "54975", + "name": "CLUJ-NAPOCA" + }, + { + "siruta": "96334", + "name": "COARNELE CAPREI" + }, + { + "siruta": "179837", + "name": "COAŞ" + }, + { + "siruta": "61318", + "name": "COBADIN" + }, + { + "siruta": "66580", + "name": "COBIA" + }, + { + "siruta": "46377", + "name": "COCHIRLEANCA" + }, + { + "siruta": "28763", + "name": "COCIUBA MARE" + }, + { + "siruta": "93209", + "name": "COCORA" + }, + { + "siruta": "136241", + "name": "COCORASTII COLT" + }, + { + "siruta": "132716", + "name": "COCORĂŞTII MISLII" + }, + { + "siruta": "15652", + "name": "COCU" + }, + { + "siruta": "163002", + "name": "CODĂEŞTI" + }, + { + "siruta": "40241", + "name": "CODLEA" + }, + { + "siruta": "61372", + "name": "COGEALAC" + }, + { + "siruta": "66697", + "name": "COJASCA" + }, + { + "siruta": "57350", + "name": "COJOCNA" + }, + { + "siruta": "132752", + "name": "COLCEAG" + }, + { + "siruta": "179971", + "name": "COLELIA" + }, + { + "siruta": "102071", + "name": "COLIBAŞI" + }, + { + "siruta": "126228", + "name": "COLONEŞTI" + }, + { + "siruta": "21891", + "name": "COLONEŞTI" + }, + { + "siruta": "179846", + "name": "COLTĂU" + }, + { + "siruta": "46439", + "name": "COLŢI" + }, + { + "siruta": "40857", + "name": "COMANA" + }, + { + "siruta": "102106", + "name": "COMANA" + }, + { + "siruta": "61452", + "name": "COMANA" + }, + { + "siruta": "63553", + "name": "COMANDĂU" + }, + { + "siruta": "20821", + "name": "COMĂNEŞTI" + }, + { + "siruta": "151433", + "name": "COMĂNEŞTI" + }, + { + "siruta": "96370", + "name": "COMARNA" + }, + { + "siruta": "131336", + "name": "COMARNIC" + }, + { + "siruta": "66731", + "name": "COMIŞANI" + }, + { + "siruta": "156437", + "name": "COMLOŞU MARE" + }, + { + "siruta": "36532", + "name": "CONCEŞTI" + }, + { + "siruta": "10453", + "name": "CONOP" + }, + { + "siruta": "60419", + "name": "CONSTANŢA" + }, + { + "siruta": "51877", + "name": "CONSTANTIN DAICOVICIU" + }, + { + "siruta": "66768", + "name": "CONŢEŞTI" + }, + { + "siruta": "152564", + "name": "CONŢEŞTI" + }, + { + "siruta": "28816", + "name": "COPĂCEL" + }, + { + "siruta": "52062", + "name": "COPĂCELE" + }, + { + "siruta": "179588", + "name": "COPĂCENI" + }, + { + "siruta": "169182", + "name": "COPĂCENI" + }, + { + "siruta": "36569", + "name": "COPĂLĂU" + }, + { + "siruta": "107733", + "name": "COPALNIC-MĂNĂŞTUR" + }, + { + "siruta": "143771", + "name": "COPŞA MICĂ" + }, + { + "siruta": "125542", + "name": "CORABIA" + }, + { + "siruta": "21971", + "name": "CORBASCA" + }, + { + "siruta": "102160", + "name": "CORBEANCA" + }, + { + "siruta": "15741", + "name": "CORBENI" + }, + { + "siruta": "15830", + "name": "CORBI" + }, + { + "siruta": "66857", + "name": "CORBII MARI" + }, + { + "siruta": "175787", + "name": "CORBIŢA" + }, + { + "siruta": "126326", + "name": "CORBU" + }, + { + "siruta": "84148", + "name": "CORBU" + }, + { + "siruta": "61513", + "name": "CORBU" + }, + { + "siruta": "111275", + "name": "CORCOVA" + }, + { + "siruta": "36649", + "name": "CORDĂRENI" + }, + { + "siruta": "120888", + "name": "CORDUN" + }, + { + "siruta": "111417", + "name": "CORLĂŢEL" + }, + { + "siruta": "36676", + "name": "CORLĂTENI" + }, + { + "siruta": "66955", + "name": "CORNĂŢELU" + }, + { + "siruta": "52115", + "name": "CORNEA" + }, + { + "siruta": "52160", + "name": "CORNEREVA" + }, + { + "siruta": "67014", + "name": "CORNEŞTI" + }, + { + "siruta": "57449", + "name": "CORNEŞTI" + }, + { + "siruta": "102213", + "name": "CORNETU" + }, + { + "siruta": "36756", + "name": "CORNI" + }, + { + "siruta": "76004", + "name": "CORNI" + }, + { + "siruta": "132805", + "name": "CORNU" + }, + { + "siruta": "147786", + "name": "CORNU LUNCII" + }, + { + "siruta": "75953", + "name": "COROD" + }, + { + "siruta": "107868", + "name": "COROIENI" + }, + { + "siruta": "163057", + "name": "COROIEŞTI" + }, + { + "siruta": "116171", + "name": "COROISÂNMĂRTIN" + }, + { + "siruta": "53489", + "name": "CORONINI" + }, + { + "siruta": "120487", + "name": "CORUNCA" + }, + { + "siruta": "84175", + "name": "CORUND" + }, + { + "siruta": "93236", + "name": "COSÂMBEŞTI" + }, + { + "siruta": "33177", + "name": "COŞBUC" + }, + { + "siruta": "140583", + "name": "COŞEIU" + }, + { + "siruta": "102240", + "name": "COŞERENI" + }, + { + "siruta": "15901", + "name": "COŞEŞTI" + }, + { + "siruta": "76040", + "name": "COSMEŞTI" + }, + { + "siruta": "152582", + "name": "COSMEŞTI" + }, + { + "siruta": "132841", + "name": "COSMINELE" + }, + { + "siruta": "151497", + "name": "COŞNA" + }, + { + "siruta": "179748", + "name": "COSOBA" + }, + { + "siruta": "71885", + "name": "COŞOVENI" + }, + { + "siruta": "76111", + "name": "COSTACHE NEGRI" + }, + { + "siruta": "156473", + "name": "COŞTEIU" + }, + { + "siruta": "13668", + "name": "COSTEŞTI" + }, + { + "siruta": "46484", + "name": "COSTEŞTI" + }, + { + "siruta": "163137", + "name": "COSTEŞTI" + }, + { + "siruta": "169253", + "name": "COSTEŞTI" + }, + { + "siruta": "100282", + "name": "COSTEŞTI" + }, + { + "siruta": "67121", + "name": "COSTEŞTII DIN VALE" + }, + { + "siruta": "63286", + "name": "COSTINEŞTI" + }, + { + "siruta": "122132", + "name": "COSTIŞA" + }, + { + "siruta": "96423", + "name": "COSTULENI" + }, + { + "siruta": "39975", + "name": "COŞULA" + }, + { + "siruta": "126380", + "name": "COTEANA" + }, + { + "siruta": "175885", + "name": "COTEŞTI" + }, + { + "siruta": "15983", + "name": "COTMEANA" + }, + { + "siruta": "96478", + "name": "COTNARI" + }, + { + "siruta": "22059", + "name": "COŢOFĂNEŞTI" + }, + { + "siruta": "71910", + "name": "COŢOFENII DIN DOS" + }, + { + "siruta": "74875", + "name": "COŢOFENII DIN FAŢĂ" + }, + { + "siruta": "36809", + "name": "COŢUŞCA" + }, + { + "siruta": "10514", + "name": "COVĂSINŢ" + }, + { + "siruta": "63526", + "name": "COVASNA" + }, + { + "siruta": "46554", + "name": "COZIENI" + }, + { + "siruta": "116224", + "name": "COZMA" + }, + { + "siruta": "86446", + "name": "COZMENI" + }, + { + "siruta": "167277", + "name": "COZMEŞTI" + }, + { + "siruta": "96593", + "name": "COZMEŞTI" + }, + { + "siruta": "122187", + "name": "CRĂCĂOANI" + }, + { + "siruta": "4188", + "name": "CRĂCIUNELU DE JOS" + }, + { + "siruta": "116288", + "name": "CRĂCIUNEŞTI" + }, + { + "siruta": "137443", + "name": "CRAIDOROLŢ" + }, + { + "siruta": "116340", + "name": "CRĂIEŞTI" + }, + { + "siruta": "69900", + "name": "CRAIOVA" + }, + { + "siruta": "10532", + "name": "CRAIVA" + }, + { + "siruta": "126406", + "name": "CRÂMPOIA" + }, + { + "siruta": "152617", + "name": "CRÂNGENI" + }, + { + "siruta": "152662", + "name": "CRÂNGU" + }, + { + "siruta": "67167", + "name": "CRÂNGURILE" + }, + { + "siruta": "79834", + "name": "CRASNA" + }, + { + "siruta": "140627", + "name": "CRASNA" + }, + { + "siruta": "140672", + "name": "CREACA" + }, + { + "siruta": "169306", + "name": "CREŢENI" + }, + { + "siruta": "163208", + "name": "CREŢEŞTI" + }, + { + "siruta": "102286", + "name": "CREVEDIA" + }, + { + "siruta": "102348", + "name": "CREVEDIA MARE" + }, + { + "siruta": "151932", + "name": "CREVENICU" + }, + { + "siruta": "4142", + "name": "CRICĂU" + }, + { + "siruta": "156534", + "name": "CRICIOVA" + }, + { + "siruta": "160261", + "name": "CRIŞAN" + }, + { + "siruta": "87362", + "name": "CRIŞCIOR" + }, + { + "siruta": "140823", + "name": "CRIŞENI" + }, + { + "siruta": "36907", + "name": "CRISTEŞTI" + }, + { + "siruta": "114355", + "name": "CRISTEŞTI" + }, + { + "siruta": "96637", + "name": "CRISTEŞTI" + }, + { + "siruta": "40900", + "name": "CRISTIAN" + }, + { + "siruta": "143487", + "name": "CRISTIAN" + }, + { + "siruta": "36952", + "name": "CRISTINEŞTI" + }, + { + "siruta": "28889", + "name": "CRIŞTIORU DE JOS" + }, + { + "siruta": "140770", + "name": "CRISTOLŢ" + }, + { + "siruta": "83525", + "name": "CRISTURU SECUIESC" + }, + { + "siruta": "180055", + "name": "CRIVĂŢ" + }, + { + "siruta": "42456", + "name": "CRIZBAV" + }, + { + "siruta": "147884", + "name": "CRUCEA" + }, + { + "siruta": "61559", + "name": "CRUCEA" + }, + { + "siruta": "137504", + "name": "CRUCIŞOR" + }, + { + "siruta": "79932", + "name": "CRUŞET" + }, + { + "siruta": "16132", + "name": "CUCA" + }, + { + "siruta": "76139", + "name": "CUCA" + }, + { + "siruta": "116395", + "name": "CUCERDEA" + }, + { + "siruta": "116439", + "name": "CUCI" + }, + { + "siruta": "96664", + "name": "CUCUTENI" + }, + { + "siruta": "76157", + "name": "CUDALBI" + }, + { + "siruta": "1696", + "name": "CUGIR" + }, + { + "siruta": "111444", + "name": "CUJMIR" + }, + { + "siruta": "137540", + "name": "CULCIU" + }, + { + "siruta": "61620", + "name": "CUMPĂNA" + }, + { + "siruta": "126503", + "name": "CUNGREA" + }, + { + "siruta": "107920", + "name": "CUPŞENI" + }, + { + "siruta": "28941", + "name": "CURĂŢELE" + }, + { + "siruta": "102419", + "name": "CURCANI" + }, + { + "siruta": "156589", + "name": "CURTEA" + }, + { + "siruta": "13622", + "name": "CURTEA DE ARGEŞ" + }, + { + "siruta": "35759", + "name": "CURTEŞTI" + }, + { + "siruta": "9495", + "name": "CURTICI" + }, + { + "siruta": "126433", + "name": "CURTIŞOARA" + }, + { + "siruta": "29001", + "name": "CURTUIŞENI" + }, + { + "siruta": "9019", + "name": "CUT" + }, + { + "siruta": "93281", + "name": "CUZA VODA" + }, + { + "siruta": "63300", + "name": "CUZA VODA" + }, + { + "siruta": "77595", + "name": "CUZA VODĂ" + }, + { + "siruta": "140869", + "name": "CUZĂPLAC" + }, + { + "siruta": "55062", + "name": "CUZDRIOARA" + }, + { + "siruta": "57546", + "name": "DĂBÂCA" + }, + { + "siruta": "72007", + "name": "DĂBULENI" + }, + { + "siruta": "160305", + "name": "DĂENI" + }, + { + "siruta": "169351", + "name": "DĂEŞTI" + }, + { + "siruta": "96717", + "name": "DAGÂŢA" + }, + { + "siruta": "102446", + "name": "DAIA" + }, + { + "siruta": "4240", + "name": "DAIA ROMÂNĂ" + }, + { + "siruta": "52570", + "name": "DALBOŞEŢ" + }, + { + "siruta": "65147", + "name": "DALNIC" + }, + { + "siruta": "16329", + "name": "DÂMBOVICIOARA" + }, + { + "siruta": "22111", + "name": "DĂMIENEŞTI" + }, + { + "siruta": "122249", + "name": "DĂMUC" + }, + { + "siruta": "80043", + "name": "DĂNCIULEŞTI" + }, + { + "siruta": "126585", + "name": "DĂNEASA" + }, + { + "siruta": "116493", + "name": "DANEŞ" + }, + { + "siruta": "80123", + "name": "DĂNEŞTI" + }, + { + "siruta": "84237", + "name": "DĂNEŞTI" + }, + { + "siruta": "163253", + "name": "DĂNEŞTI" + }, + { + "siruta": "71956", + "name": "DANEŢI" + }, + { + "siruta": "37057", + "name": "DÂNGENI" + }, + { + "siruta": "169404", + "name": "DĂNICEI" + }, + { + "siruta": "35946", + "name": "DARABANI" + }, + { + "siruta": "102525", + "name": "DĂRĂŞTI-ILFOV" + }, + { + "siruta": "84380", + "name": "DÂRJIU" + }, + { + "siruta": "144553", + "name": "DÂRLOS" + }, + { + "siruta": "67256", + "name": "DĂRMĂNEŞTI" + }, + { + "siruta": "147937", + "name": "DĂRMĂNEŞTI" + }, + { + "siruta": "22166", + "name": "DĂRMĂNEŞTI" + }, + { + "siruta": "16365", + "name": "DÂRMĂNEŞTI" + }, + { + "siruta": "156623", + "name": "DAROVA" + }, + { + "siruta": "111550", + "name": "DÂRVARI" + }, + { + "siruta": "102473", + "name": "DASCĂLU" + }, + { + "siruta": "16285", + "name": "DAVIDEŞTI" + }, + { + "siruta": "84264", + "name": "DEALU" + }, + { + "siruta": "22237", + "name": "DEALU MORII" + }, + { + "siruta": "116545", + "name": "DEDA" + }, + { + "siruta": "55008", + "name": "DEJ" + }, + { + "siruta": "163324", + "name": "DELENI" + }, + { + "siruta": "96815", + "name": "DELENI" + }, + { + "siruta": "61675", + "name": "DELENI" + }, + { + "siruta": "163379", + "name": "DELEŞTI" + }, + { + "siruta": "89348", + "name": "DENSUŞ" + }, + { + "siruta": "156669", + "name": "DENTA" + }, + { + "siruta": "29038", + "name": "DERNA" + }, + { + "siruta": "37011", + "name": "DERSCA" + }, + { + "siruta": "72034", + "name": "DESA" + }, + { + "siruta": "107975", + "name": "DESEŞTI" + }, + { + "siruta": "155458", + "name": "DETA" + }, + { + "siruta": "86687", + "name": "DEVA" + }, + { + "siruta": "111480", + "name": "DEVESEL" + }, + { + "siruta": "126647", + "name": "DEVESELU" + }, + { + "siruta": "10649", + "name": "DEZNA" + }, + { + "siruta": "93325", + "name": "DICHISENI" + }, + { + "siruta": "174502", + "name": "DICULEŞTI" + }, + { + "siruta": "152724", + "name": "DIDEŞTI" + }, + { + "siruta": "10701", + "name": "DIECI" + }, + { + "siruta": "39959", + "name": "DIMĂCHENI" + }, + { + "siruta": "164277", + "name": "DIMITRIE CANTEMIR" + }, + { + "siruta": "29092", + "name": "DIOSIG" + }, + { + "siruta": "72052", + "name": "DIOŞTI" + }, + { + "siruta": "84344", + "name": "DITRĂU" + }, + { + "siruta": "137611", + "name": "DOBA" + }, + { + "siruta": "37100", + "name": "DOBÂRCENI" + }, + { + "siruta": "64265", + "name": "DOBÂRLĂU" + }, + { + "siruta": "67292", + "name": "DOBRA" + }, + { + "siruta": "89428", + "name": "DOBRA" + }, + { + "siruta": "122285", + "name": "DOBRENI" + }, + { + "siruta": "72098", + "name": "DOBREŞTI" + }, + { + "siruta": "29154", + "name": "DOBREŞTI" + }, + { + "siruta": "16427", + "name": "DOBREŞTI" + }, + { + "siruta": "126674", + "name": "DOBREŢU" + }, + { + "siruta": "140958", + "name": "DOBRIN" + }, + { + "siruta": "179310", + "name": "DOBROEŞTI" + }, + { + "siruta": "61737", + "name": "DOBROMIR" + }, + { + "siruta": "126718", + "name": "DOBROSLOVENI" + }, + { + "siruta": "126772", + "name": "DOBROTEASA" + }, + { + "siruta": "74883", + "name": "DOBROTEŞTI" + }, + { + "siruta": "152760", + "name": "DOBROTEŞTI" + }, + { + "siruta": "96888", + "name": "DOBROVĂŢ" + }, + { + "siruta": "126825", + "name": "DOBRUN" + }, + { + "siruta": "125098", + "name": "DOCHIA" + }, + { + "siruta": "52650", + "name": "DOCLIN" + }, + { + "siruta": "167286", + "name": "DODEŞTI" + }, + { + "siruta": "22380", + "name": "DOFTEANA" + }, + { + "siruta": "52696", + "name": "DOGNECEA" + }, + { + "siruta": "65413", + "name": "DOICEŞTI" + }, + { + "siruta": "148006", + "name": "DOLHASCA" + }, + { + "siruta": "148097", + "name": "DOLHEŞTI" + }, + { + "siruta": "96904", + "name": "DOLHEŞTI" + }, + { + "siruta": "122347", + "name": "DOLJEŞTI" + }, + { + "siruta": "52721", + "name": "DOMAŞNEA" + }, + { + "siruta": "16454", + "name": "DOMNEŞTI" + }, + { + "siruta": "102570", + "name": "DOMNEŞTI" + }, + { + "siruta": "93370", + "name": "DOR MĂRUNT" + }, + { + "siruta": "148202", + "name": "DORNA CANDRENILOR" + }, + { + "siruta": "148131", + "name": "DORNA-ARINI" + }, + { + "siruta": "148293", + "name": "DORNEŞTI" + }, + { + "siruta": "12912", + "name": "DOROBANŢI" + }, + { + "siruta": "93441", + "name": "DOROBANŢU" + }, + { + "siruta": "160323", + "name": "DOROBANŢU" + }, + { + "siruta": "36006", + "name": "DOROHOI" + }, + { + "siruta": "137675", + "name": "DOROLŢ" + }, + { + "siruta": "4268", + "name": "DOŞTAT" + }, + { + "siruta": "155109", + "name": "DRACEA" + }, + { + "siruta": "152797", + "name": "DRĂCŞENEI" + }, + { + "siruta": "93487", + "name": "DRAGALINA" + }, + { + "siruta": "133018", + "name": "DRĂGĂNEŞTI" + }, + { + "siruta": "29243", + "name": "DRĂGĂNEŞTI" + }, + { + "siruta": "125132", + "name": "DRĂGĂNEŞTI" + }, + { + "siruta": "75221", + "name": "DRĂGĂNEŞTI" + }, + { + "siruta": "152868", + "name": "DRĂGĂNEŞTI DE VEDE" + }, + { + "siruta": "125622", + "name": "DRĂGĂNEŞTI-OLT" + }, + { + "siruta": "152902", + "name": "DRĂGĂNEŞTI-VLAŞCA" + }, + { + "siruta": "16506", + "name": "DRĂGANU" + }, + { + "siruta": "167981", + "name": "DRĂGĂŞANI" + }, + { + "siruta": "29341", + "name": "DRĂGEŞTI" + }, + { + "siruta": "125490", + "name": "DRĂGHICENI" + }, + { + "siruta": "67327", + "name": "DRAGODANA" + }, + { + "siruta": "102641", + "name": "DRĂGOEŞTI" + }, + { + "siruta": "169547", + "name": "DRĂGOEŞTI" + }, + { + "siruta": "148328", + "name": "DRĂGOIEŞTI" + }, + { + "siruta": "67407", + "name": "DRAGOMIREŞTI" + }, + { + "siruta": "163486", + "name": "DRAGOMIREŞTI" + }, + { + "siruta": "122392", + "name": "DRAGOMIREŞTI" + }, + { + "siruta": "108017", + "name": "DRAGOMIREŞTI" + }, + { + "siruta": "102605", + "name": "DRAGOMIREŞTI-VALE" + }, + { + "siruta": "93539", + "name": "DRAGOŞ VODĂ" + }, + { + "siruta": "16472", + "name": "DRAGOSLAVELE" + }, + { + "siruta": "72150", + "name": "DRĂGOTEŞTI" + }, + { + "siruta": "80249", + "name": "DRĂGOTEŞTI" + }, + { + "siruta": "141027", + "name": "DRAGU" + }, + { + "siruta": "42480", + "name": "DRĂGUŞ" + }, + { + "siruta": "100308", + "name": "DRAGUŞENI" + }, + { + "siruta": "37173", + "name": "DRĂGUŞENI" + }, + { + "siruta": "76175", + "name": "DRĂGUŞENI" + }, + { + "siruta": "148382", + "name": "DRĂGUŞENI" + }, + { + "siruta": "78016", + "name": "DRĂGUŢEŞTI" + }, + { + "siruta": "132896", + "name": "DRAJNA" + }, + { + "siruta": "163618", + "name": "DRÂNCENI" + }, + { + "siruta": "72221", + "name": "DRĂNIC" + }, + { + "siruta": "102703", + "name": "DRIDU" + }, + { + "siruta": "109773", + "name": "DROBETA-TURNU SEVERIN" + }, + { + "siruta": "112904", + "name": "DUBOVA" + }, + { + "siruta": "163681", + "name": "DUDA-EPURENI" + }, + { + "siruta": "43073", + "name": "DUDEŞTI" + }, + { + "siruta": "159384", + "name": "DUDEŞTII NOI" + }, + { + "siruta": "156712", + "name": "DUDEŞTII VECHI" + }, + { + "siruta": "122463", + "name": "DULCEŞTI" + }, + { + "siruta": "133090", + "name": "DUMBRAVA" + }, + { + "siruta": "156767", + "name": "DUMBRAVA" + }, + { + "siruta": "111587", + "name": "DUMBRAVA" + }, + { + "siruta": "120771", + "name": "DUMBRAVA ROŞIE" + }, + { + "siruta": "175938", + "name": "DUMBRĂVENI" + }, + { + "siruta": "143806", + "name": "DUMBRĂVENI" + }, + { + "siruta": "148426", + "name": "DUMBRĂVENI" + }, + { + "siruta": "63161", + "name": "DUMBRĂVENI" + }, + { + "siruta": "131461", + "name": "DUMBRĂVEŞTI" + }, + { + "siruta": "40928", + "name": "DUMBRĂVIŢA" + }, + { + "siruta": "155261", + "name": "DUMBRĂVIŢA" + }, + { + "siruta": "108035", + "name": "DUMBRĂVIŢA" + }, + { + "siruta": "163734", + "name": "DUMEŞTI" + }, + { + "siruta": "96940", + "name": "DUMEŞTI" + }, + { + "siruta": "33202", + "name": "DUMITRA" + }, + { + "siruta": "175983", + "name": "DUMITREŞTI" + }, + { + "siruta": "179686", + "name": "DUMITRIŢA" + }, + { + "siruta": "37217", + "name": "DURNEŞTI" + }, + { + "siruta": "60455", + "name": "EFORIE" + }, + { + "siruta": "53700", + "name": "EFTIMIE MURGU" + }, + { + "siruta": "163789", + "name": "EPURENI" + }, + { + "siruta": "97009", + "name": "ERBICENI" + }, + { + "siruta": "116590", + "name": "EREMITU" + }, + { + "siruta": "116652", + "name": "ERNEI" + }, + { + "siruta": "112245", + "name": "EŞELNIŢA" + }, + { + "siruta": "65154", + "name": "ESTELNIC" + }, + { + "siruta": "52758", + "name": "EZERIŞ" + }, + { + "siruta": "93575", + "name": "FĂCĂENI" + }, + { + "siruta": "40278", + "name": "FĂGĂRAŞ" + }, + { + "siruta": "156801", + "name": "FĂGET" + }, + { + "siruta": "126905", + "name": "FĂGEŢELU" + }, + { + "siruta": "163832", + "name": "FĂLCIU" + }, + { + "siruta": "126978", + "name": "FĂLCOIU" + }, + { + "siruta": "146539", + "name": "FĂLTICENI" + }, + { + "siruta": "151488", + "name": "FÂNTÂNA MARE" + }, + { + "siruta": "155118", + "name": "FÂNTÂNELE" + }, + { + "siruta": "133278", + "name": "FÂNTÂNELE" + }, + { + "siruta": "9280", + "name": "FÂNTÂNELE" + }, + { + "siruta": "116796", + "name": "FÂNTÂNELE" + }, + { + "siruta": "148453", + "name": "FÂNTÂNELE" + }, + { + "siruta": "100317", + "name": "FÂNTÂNELE" + }, + { + "siruta": "63334", + "name": "FÂNTÂNELE" + }, + { + "siruta": "116723", + "name": "FĂRĂGĂU" + }, + { + "siruta": "22460", + "name": "FARAOANI" + }, + { + "siruta": "4302", + "name": "FĂRĂU" + }, + { + "siruta": "72276", + "name": "FĂRCAŞ" + }, + { + "siruta": "122551", + "name": "FARCAŞA" + }, + { + "siruta": "108106", + "name": "FĂRCAŞA" + }, + { + "siruta": "127019", + "name": "FĂRCAŞELE" + }, + { + "siruta": "80285", + "name": "FĂRCĂŞEŞTI" + }, + { + "siruta": "156927", + "name": "FÂRDEA" + }, + { + "siruta": "52785", + "name": "FÂRLIUG" + }, + { + "siruta": "76255", + "name": "FÂRŢĂNEŞTI" + }, + { + "siruta": "169681", + "name": "FÂRTĂŢEŞTI" + }, + { + "siruta": "42753", + "name": "FĂUREI" + }, + { + "siruta": "122613", + "name": "FĂUREI" + }, + { + "siruta": "169583", + "name": "FĂUREŞTI" + }, + { + "siruta": "40955", + "name": "FELDIOARA" + }, + { + "siruta": "33248", + "name": "FELDRU" + }, + { + "siruta": "57582", + "name": "FELEACU" + }, + { + "siruta": "83197", + "name": "FELICENI" + }, + { + "siruta": "10827", + "name": "FELNAC" + }, + { + "siruta": "167295", + "name": "FEREŞTI" + }, + { + "siruta": "92701", + "name": "FETEŞTI" + }, + { + "siruta": "159393", + "name": "FIBIŞ" + }, + { + "siruta": "65609", + "name": "FIENI" + }, + { + "siruta": "102749", + "name": "FIERBINŢI-TÂRG" + }, + { + "siruta": "141081", + "name": "FILDU DE JOS" + }, + { + "siruta": "70414", + "name": "FILIAŞI" + }, + { + "siruta": "22488", + "name": "FILIPENI" + }, + { + "siruta": "22576", + "name": "FILIPEŞTI" + }, + { + "siruta": "133161", + "name": "FILIPEŞTII DE PĂDURE" + }, + { + "siruta": "133214", + "name": "FILIPEŞTII DE TÂRG" + }, + { + "siruta": "29403", + "name": "FINIŞ" + }, + { + "siruta": "67470", + "name": "FINTA" + }, + { + "siruta": "176150", + "name": "FITIONEŞTI" + }, + { + "siruta": "57644", + "name": "FIZEŞU GHERLII" + }, + { + "siruta": "37280", + "name": "FLĂMÂNZI" + }, + { + "siruta": "111685", + "name": "FLOREŞTI" + }, + { + "siruta": "133330", + "name": "FLOREŞTI" + }, + { + "siruta": "57706", + "name": "FLOREŞTI" + }, + { + "siruta": "102794", + "name": "FLOREŞTI-STOENEŞTI" + }, + { + "siruta": "50564", + "name": "FLORICA" + }, + { + "siruta": "174744", + "name": "FOCŞANI" + }, + { + "siruta": "97063", + "name": "FOCURI" + }, + { + "siruta": "157004", + "name": "FOENI" + }, + { + "siruta": "137728", + "name": "FOIENI" + }, + { + "siruta": "76282", + "name": "FOLTEŞTI" + }, + { + "siruta": "148514", + "name": "FORĂŞTI" + }, + { + "siruta": "52856", + "name": "FOROTIC" + }, + { + "siruta": "169896", + "name": "FRÂNCEŞTI" + }, + { + "siruta": "148612", + "name": "FRASIN" + }, + { + "siruta": "102838", + "name": "FRĂSINET" + }, + { + "siruta": "155127", + "name": "FRĂSINET" + }, + { + "siruta": "57742", + "name": "FRATA" + }, + { + "siruta": "148667", + "name": "FRĂTĂUŢII NOI" + }, + { + "siruta": "148694", + "name": "FRĂTĂUŢII VECHI" + }, + { + "siruta": "102909", + "name": "FRĂTEŞTI" + }, + { + "siruta": "43117", + "name": "FRECĂŢEI" + }, + { + "siruta": "160387", + "name": "FRECĂŢEI" + }, + { + "siruta": "84415", + "name": "FRUMOASA" + }, + { + "siruta": "152993", + "name": "FRUMOASA" + }, + { + "siruta": "148729", + "name": "FRUMOSU" + }, + { + "siruta": "102945", + "name": "FRUMUŞANI" + }, + { + "siruta": "12920", + "name": "FRUMUŞENI" + }, + { + "siruta": "37324", + "name": "FRUMUŞICA" + }, + { + "siruta": "76317", + "name": "FRUMUŞIŢA" + }, + { + "siruta": "167231", + "name": "FRUNTIŞENI" + }, + { + "siruta": "133394", + "name": "FULGA" + }, + { + "siruta": "40991", + "name": "FUNDATA" + }, + { + "siruta": "76353", + "name": "FUNDENI" + }, + { + "siruta": "103014", + "name": "FUNDENI" + }, + { + "siruta": "148765", + "name": "FUNDU MOLDOVEI" + }, + { + "siruta": "103032", + "name": "FUNDULEA" + }, + { + "siruta": "152948", + "name": "FURCULEŞTI" + }, + { + "siruta": "125150", + "name": "GÂDINŢI" + }, + { + "siruta": "65681", + "name": "GĂEŞTI" + }, + { + "siruta": "163903", + "name": "GĂGEŞTI" + }, + { + "siruta": "22665", + "name": "GĂICEANA" + }, + { + "siruta": "103087", + "name": "GĂISENI" + }, + { + "siruta": "148872", + "name": "GĂLĂNEŞTI" + }, + { + "siruta": "153026", + "name": "GĂLĂTENI" + }, + { + "siruta": "75098", + "name": "GALAŢI" + }, + { + "siruta": "33275", + "name": "GALAŢII BISTRIŢEI" + }, + { + "siruta": "84460", + "name": "GĂLĂUŢAŞ" + }, + { + "siruta": "43180", + "name": "GALBENU" + }, + { + "siruta": "179962", + "name": "GĂLBINAŞI" + }, + { + "siruta": "46769", + "name": "GĂLBINAŞI" + }, + { + "siruta": "4366", + "name": "GALDA DE JOS" + }, + { + "siruta": "116867", + "name": "GĂLEŞTI" + }, + { + "siruta": "141134", + "name": "GÂLGĂU" + }, + { + "siruta": "169994", + "name": "GALICEA" + }, + { + "siruta": "72383", + "name": "GALICEA MARE" + }, + { + "siruta": "74891", + "name": "GALICIUICA" + }, + { + "siruta": "127064", + "name": "GĂNEASA" + }, + { + "siruta": "103130", + "name": "GĂNEASA" + }, + { + "siruta": "116938", + "name": "GĂNEŞTI" + }, + { + "siruta": "72579", + "name": "GÂNGIOVA" + }, + { + "siruta": "57948", + "name": "GÂRBĂU" + }, + { + "siruta": "141232", + "name": "GÂRBOU" + }, + { + "siruta": "4482", + "name": "GÂRBOVA" + }, + { + "siruta": "103283", + "name": "GÂRBOVI" + }, + { + "siruta": "164062", + "name": "GÂRCENI" + }, + { + "siruta": "122828", + "name": "GÂRCINA" + }, + { + "siruta": "125588", + "name": "GÂRCOV" + }, + { + "siruta": "4525", + "name": "GÂRDA DE SUS" + }, + { + "siruta": "179855", + "name": "GÂRDANI" + }, + { + "siruta": "111783", + "name": "GÂRLA MARE" + }, + { + "siruta": "22781", + "name": "GÂRLENI" + }, + { + "siruta": "61808", + "name": "GÂRLICIU" + }, + { + "siruta": "52909", + "name": "GÂRNIC" + }, + { + "siruta": "176212", + "name": "GAROAFA" + }, + { + "siruta": "157086", + "name": "GĂTAIA" + }, + { + "siruta": "103194", + "name": "GĂUJANI" + }, + { + "siruta": "130302", + "name": "GĂVĂNEŞTI" + }, + { + "siruta": "157031", + "name": "GAVOJDIA" + }, + { + "siruta": "57831", + "name": "GEACA" + }, + { + "siruta": "43242", + "name": "GEMENELE" + }, + { + "siruta": "91731", + "name": "GENERAL BERTHELOT" + }, + { + "siruta": "89561", + "name": "GEOAGIU" + }, + { + "siruta": "37397", + "name": "GEORGE ENESCU" + }, + { + "siruta": "32195", + "name": "GEPIU" + }, + { + "siruta": "86883", + "name": "GHELARI" + }, + { + "siruta": "64318", + "name": "GHELINŢA" + }, + { + "siruta": "93600", + "name": "GHEORGHE DOJA" + }, + { + "siruta": "116983", + "name": "GHEORGHE DOJA" + }, + { + "siruta": "93628", + "name": "GHEORGHE LAZĂR" + }, + { + "siruta": "83561", + "name": "GHEORGHENI" + }, + { + "siruta": "122668", + "name": "GHERĂEŞTI" + }, + { + "siruta": "46803", + "name": "GHERĂSENI" + }, + { + "siruta": "72409", + "name": "GHERCEŞTI" + }, + { + "siruta": "46830", + "name": "GHERGHEASA" + }, + { + "siruta": "163967", + "name": "GHERGHEŞTI" + }, + { + "siruta": "133429", + "name": "GHERGHIŢA" + }, + { + "siruta": "55384", + "name": "GHERLA" + }, + { + "siruta": "137746", + "name": "GHERŢA MICĂ" + }, + { + "siruta": "64345", + "name": "GHIDFALĂU" + }, + { + "siruta": "74907", + "name": "GHIDICI" + }, + { + "siruta": "76406", + "name": "GHIDIGENI" + }, + { + "siruta": "159400", + "name": "GHILAD" + }, + { + "siruta": "40214", + "name": "GHIMBAV" + }, + { + "siruta": "22718", + "name": "GHIMEŞ-FĂGET" + }, + { + "siruta": "103238", + "name": "GHIMPAŢI" + }, + { + "siruta": "130311", + "name": "GHIMPEŢENI" + }, + { + "siruta": "125114", + "name": "GHINDĂOANI" + }, + { + "siruta": "61826", + "name": "GHINDĂREŞTI" + }, + { + "siruta": "117042", + "name": "GHINDARI" + }, + { + "siruta": "74915", + "name": "GHINDENI" + }, + { + "siruta": "10872", + "name": "GHIOROC" + }, + { + "siruta": "170097", + "name": "GHIOROIU" + }, + { + "siruta": "155289", + "name": "GHIRODA" + }, + { + "siruta": "157193", + "name": "GHIZELA" + }, + { + "siruta": "157246", + "name": "GIARMATA" + }, + { + "siruta": "157273", + "name": "GIERA" + }, + { + "siruta": "72463", + "name": "GIGHERA" + }, + { + "siruta": "57902", + "name": "GILĂU" + }, + { + "siruta": "26346", + "name": "GIOSENI" + }, + { + "siruta": "29467", + "name": "GIRIŞU DE CRIŞ" + }, + { + "siruta": "155314", + "name": "GIROC" + }, + { + "siruta": "122702", + "name": "GIROV" + }, + { + "siruta": "72506", + "name": "GIUBEGA" + }, + { + "siruta": "108151", + "name": "GIULEŞTI" + }, + { + "siruta": "157317", + "name": "GIULVĂZ" + }, + { + "siruta": "93646", + "name": "GIURGENI" + }, + { + "siruta": "72533", + "name": "GIURGIŢA" + }, + { + "siruta": "100521", + "name": "GIURGIU" + }, + { + "siruta": "127126", + "name": "GIUVĂRĂŞTI" + }, + { + "siruta": "22834", + "name": "GLĂVĂNEŞTI" + }, + { + "siruta": "170168", + "name": "GLĂVILE" + }, + { + "siruta": "52936", + "name": "GLIMBOCA" + }, + { + "siruta": "179347", + "name": "GLINA" + }, + { + "siruta": "46867", + "name": "GLODEANU SĂRAT" + }, + { + "siruta": "46910", + "name": "GLODEANU-SILIŞTEA" + }, + { + "siruta": "67522", + "name": "GLODENI" + }, + { + "siruta": "117113", + "name": "GLODENI" + }, + { + "siruta": "80365", + "name": "GLOGOVA" + }, + { + "siruta": "111818", + "name": "GODEANU" + }, + { + "siruta": "16551", + "name": "GODENI" + }, + { + "siruta": "80427", + "name": "GODINEŞTI" + }, + { + "siruta": "103309", + "name": "GOGOŞARI" + }, + { + "siruta": "72604", + "name": "GOGOŞU" + }, + { + "siruta": "111863", + "name": "GOGOŞU" + }, + { + "siruta": "76497", + "name": "GOHOR" + }, + { + "siruta": "72640", + "name": "GOICEA" + }, + { + "siruta": "72677", + "name": "GOIEŞTI" + }, + { + "siruta": "97090", + "name": "GOLĂIEŞTI" + }, + { + "siruta": "170220", + "name": "GOLEŞTI" + }, + { + "siruta": "174824", + "name": "GOLEŞTI" + }, + { + "siruta": "178938", + "name": "GOLOGANU" + }, + { + "siruta": "97189", + "name": "GORBAN" + }, + { + "siruta": "37459", + "name": "GORBĂNEŞTI" + }, + { + "siruta": "133508", + "name": "GORGOTA" + }, + { + "siruta": "117177", + "name": "GORNEŞTI" + }, + { + "siruta": "133562", + "name": "GORNET" + }, + { + "siruta": "133615", + "name": "GORNET-CRICOV" + }, + { + "siruta": "52954", + "name": "GORUIA" + }, + { + "siruta": "127144", + "name": "GOSTAVĂŢU" + }, + { + "siruta": "103372", + "name": "GOSTINARI" + }, + { + "siruta": "103354", + "name": "GOSTINU" + }, + { + "siruta": "159419", + "name": "GOTTLOB" + }, + { + "siruta": "63326", + "name": "GRĂDINA" + }, + { + "siruta": "103407", + "name": "GRĂDINARI" + }, + { + "siruta": "127171", + "name": "GRĂDINARI" + }, + { + "siruta": "52990", + "name": "GRĂDINARI" + }, + { + "siruta": "130320", + "name": "GRĂDINILE" + }, + { + "siruta": "43279", + "name": "GRADIŞTEA" + }, + { + "siruta": "93664", + "name": "GRĂDIŞTEA" + }, + { + "siruta": "170346", + "name": "GRĂDIŞTEA" + }, + { + "siruta": "103443", + "name": "GRĂDIŞTEA" + }, + { + "siruta": "97241", + "name": "GRAJDURI" + }, + { + "siruta": "148916", + "name": "GRĂMEŞTI" + }, + { + "siruta": "10916", + "name": "GRĂNICERI" + }, + { + "siruta": "148970", + "name": "GRĂNICEŞTI" + }, + { + "siruta": "153062", + "name": "GRATIA" + }, + { + "siruta": "103470", + "name": "GREACA" + }, + { + "siruta": "47006", + "name": "GREBĂNU" + }, + { + "siruta": "117275", + "name": "GREBENIŞU DE CÂMPIE" + }, + { + "siruta": "72819", + "name": "GRECEŞTI" + }, + { + "siruta": "111916", + "name": "GRECI" + }, + { + "siruta": "160430", + "name": "GRECI" + }, + { + "siruta": "93717", + "name": "GRINDU" + }, + { + "siruta": "160458", + "name": "GRINDU" + }, + { + "siruta": "122864", + "name": "GRINŢIEŞ" + }, + { + "siruta": "76558", + "name": "GRIVIŢA" + }, + { + "siruta": "164133", + "name": "GRIVIŢA" + }, + { + "siruta": "93735", + "name": "GRIVIŢA" + }, + { + "siruta": "127224", + "name": "GROJDIBODU" + }, + { + "siruta": "43313", + "name": "GROPENI" + }, + { + "siruta": "97321", + "name": "GROPNIŢA" + }, + { + "siruta": "106363", + "name": "GROŞI" + }, + { + "siruta": "179622", + "name": "GROŞII ŢIBLEŞULUI" + }, + { + "siruta": "97394", + "name": "GROZEŞTI" + }, + { + "siruta": "111989", + "name": "GROZEŞTI" + }, + { + "siruta": "112030", + "name": "GRUIA" + }, + { + "siruta": "103513", + "name": "GRUIU" + }, + { + "siruta": "122908", + "name": "GRUMĂZEŞTI" + }, + { + "siruta": "176301", + "name": "GUGEŞTI" + }, + { + "siruta": "176338", + "name": "GURA CALIŢEI" + }, + { + "siruta": "65707", + "name": "GURA FOII" + }, + { + "siruta": "146584", + "name": "GURA HUMORULUI" + }, + { + "siruta": "180046", + "name": "GURA IALOMIŢEI" + }, + { + "siruta": "67595", + "name": "GURA OCNIŢEI" + }, + { + "siruta": "130339", + "name": "GURA PADINII" + }, + { + "siruta": "144599", + "name": "GURA RÂULUI" + }, + { + "siruta": "67648", + "name": "GURA ŞUŢII" + }, + { + "siruta": "47079", + "name": "GURA TEGHII" + }, + { + "siruta": "133688", + "name": "GURA VADULUI" + }, + { + "siruta": "20607", + "name": "GURA VĂII" + }, + { + "siruta": "131835", + "name": "GURA VITIOAREI" + }, + { + "siruta": "10943", + "name": "GURAHONŢ" + }, + { + "siruta": "89687", + "name": "GURASADA" + }, + { + "siruta": "103568", + "name": "GURBĂNEŞTI" + }, + { + "siruta": "117319", + "name": "GURGHIU" + }, + { + "siruta": "170444", + "name": "GUŞOENI" + }, + { + "siruta": "64390", + "name": "HĂGHIG" + }, + { + "siruta": "97438", + "name": "HĂLĂUCEŞTI" + }, + { + "siruta": "41033", + "name": "HĂLCHIU" + }, + { + "siruta": "11174", + "name": "HĂLMĂGEL" + }, + { + "siruta": "11058", + "name": "HĂLMAGIU" + }, + { + "siruta": "141312", + "name": "HALMĂŞD" + }, + { + "siruta": "137764", + "name": "HALMEU" + }, + { + "siruta": "160476", + "name": "HAMCEARCA" + }, + { + "siruta": "37618", + "name": "HĂNEŞTI" + }, + { + "siruta": "122953", + "name": "HANGU" + }, + { + "siruta": "151512", + "name": "HÂNŢEŞTI" + }, + { + "siruta": "89801", + "name": "HĂRĂU" + }, + { + "siruta": "95355", + "name": "HÂRLĂU" + }, + { + "siruta": "41088", + "name": "HĂRMAN" + }, + { + "siruta": "100326", + "name": "HĂRMĂNEŞTI" + }, + { + "siruta": "41113", + "name": "HÂRSENI" + }, + { + "siruta": "16613", + "name": "HÂRSEŞTI" + }, + { + "siruta": "60801", + "name": "HÂRŞOVA" + }, + { + "siruta": "16659", + "name": "HÂRTIEŞTI" + }, + { + "siruta": "151549", + "name": "HÂRTOP" + }, + { + "siruta": "11236", + "name": "HĂŞMAŞ" + }, + { + "siruta": "87576", + "name": "HAŢEG" + }, + { + "siruta": "37547", + "name": "HAVÂRNA" + }, + { + "siruta": "22898", + "name": "HELEGIU" + }, + { + "siruta": "97465", + "name": "HELEŞTENI" + }, + { + "siruta": "20313", + "name": "HEMEIUŞ" + }, + { + "siruta": "179757", + "name": "HERĂŞTI" + }, + { + "siruta": "141376", + "name": "HERECLEAN" + }, + { + "siruta": "141447", + "name": "HIDA" + }, + { + "siruta": "29519", + "name": "HIDIŞELU DE SUS" + }, + { + "siruta": "37672", + "name": "HILIŞEU-HORIA" + }, + { + "siruta": "112076", + "name": "HINOVA" + }, + { + "siruta": "37734", + "name": "HLIPICENI" + }, + { + "siruta": "164197", + "name": "HOCENI" + }, + { + "siruta": "117426", + "name": "HODAC" + }, + { + "siruta": "137844", + "name": "HODOD" + }, + { + "siruta": "117505", + "name": "HODOŞA" + }, + { + "siruta": "144615", + "name": "HOGHILAG" + }, + { + "siruta": "41177", + "name": "HOGHIZ" + }, + { + "siruta": "42472", + "name": "HOLBAV" + }, + { + "siruta": "95159", + "name": "HOLBOCA" + }, + { + "siruta": "29573", + "name": "HOLOD" + }, + { + "siruta": "176445", + "name": "HOMOCEA" + }, + { + "siruta": "137899", + "name": "HOMOROADE" + }, + { + "siruta": "41248", + "name": "HOMOROD" + }, + { + "siruta": "4703", + "name": "HOPÂRTA" + }, + { + "siruta": "4767", + "name": "HOREA" + }, + { + "siruta": "168041", + "name": "HOREZU" + }, + { + "siruta": "22941", + "name": "HORGEŞTI" + }, + { + "siruta": "63278", + "name": "HORIA" + }, + { + "siruta": "160528", + "name": "HORIA" + }, + { + "siruta": "120922", + "name": "HORIA" + }, + { + "siruta": "97517", + "name": "HORLEŞTI" + }, + { + "siruta": "141535", + "name": "HOROATU CRASNEI" + }, + { + "siruta": "149101", + "name": "HORODNIC DE JOS" + }, + { + "siruta": "151479", + "name": "HORODNIC DE SUS" + }, + { + "siruta": "149049", + "name": "HORODNICENI" + }, + { + "siruta": "103639", + "name": "HOTARELE" + }, + { + "siruta": "37770", + "name": "HUDEŞTI" + }, + { + "siruta": "55446", + "name": "HUEDIN" + }, + { + "siruta": "67675", + "name": "HULUBEŞTI" + }, + { + "siruta": "86810", + "name": "HUNEDOARA" + }, + { + "siruta": "80506", + "name": "HUREZANI" + }, + { + "siruta": "23047", + "name": "HURUIEŞTI" + }, + { + "siruta": "29662", + "name": "HUSASĂU DE TINCA" + }, + { + "siruta": "161829", + "name": "HUŞI" + }, + { + "siruta": "112129", + "name": "HUSNICIOARA" + }, + { + "siruta": "67737", + "name": "I. L. CARAGIALE" + }, + { + "siruta": "161525", + "name": "I.C.BRĂTIANU" + }, + { + "siruta": "53023", + "name": "IABLANIŢA" + }, + { + "siruta": "144651", + "name": "IACOBENI" + }, + { + "siruta": "149138", + "name": "IACOBENI" + }, + { + "siruta": "164339", + "name": "IANA" + }, + { + "siruta": "127251", + "name": "IANCA" + }, + { + "siruta": "43331", + "name": "IANCA" + }, + { + "siruta": "127288", + "name": "IANCU JIANU" + }, + { + "siruta": "58008", + "name": "IARA" + }, + { + "siruta": "95060", + "name": "IAŞI" + }, + { + "siruta": "151442", + "name": "IASLOVĂŢ" + }, + { + "siruta": "167222", + "name": "IBĂNEŞTI" + }, + { + "siruta": "117550", + "name": "IBĂNEŞTI" + }, + { + "siruta": "37823", + "name": "IBĂNEŞTI" + }, + { + "siruta": "117667", + "name": "ICLĂNZEL" + }, + { + "siruta": "58142", + "name": "ICLOD" + }, + { + "siruta": "127322", + "name": "ICOANA" + }, + { + "siruta": "123013", + "name": "ICUŞEŞTI" + }, + { + "siruta": "117783", + "name": "IDECIU DE JOS" + }, + { + "siruta": "159428", + "name": "IECEA MARE" + }, + { + "siruta": "65869", + "name": "IEDERA" + }, + { + "siruta": "103693", + "name": "IEPUREŞTI" + }, + { + "siruta": "117827", + "name": "IERNUT" + }, + { + "siruta": "108204", + "name": "IEUD" + }, + { + "siruta": "4927", + "name": "IGHIU" + }, + { + "siruta": "11307", + "name": "IGNEŞTI" + }, + { + "siruta": "103764", + "name": "ILEANA" + }, + { + "siruta": "141580", + "name": "ILEANDA" + }, + { + "siruta": "89856", + "name": "ILIA" + }, + { + "siruta": "64425", + "name": "ILIENI" + }, + { + "siruta": "147660", + "name": "ILIŞEŞTI" + }, + { + "siruta": "112263", + "name": "ILOVĂŢ" + }, + { + "siruta": "112334", + "name": "ILOVIŢA" + }, + { + "siruta": "33337", + "name": "ILVA MARE" + }, + { + "siruta": "33364", + "name": "ILVA MICA" + }, + { + "siruta": "93771", + "name": "INDEPENDENŢA" + }, + { + "siruta": "76585", + "name": "INDEPENDENŢA" + }, + { + "siruta": "61871", + "name": "INDEPENDENŢA" + }, + { + "siruta": "9538", + "name": "INEU" + }, + { + "siruta": "29724", + "name": "INEU" + }, + { + "siruta": "43411", + "name": "ÎNSURĂŢEI" + }, + { + "siruta": "74923", + "name": "ÎNTORSURA" + }, + { + "siruta": "63580", + "name": "ÎNTORSURA BUZĂULUI" + }, + { + "siruta": "4981", + "name": "ÎNTREGALDE" + }, + { + "siruta": "61951", + "name": "ION CORVIN" + }, + { + "siruta": "123102", + "name": "ION CREANGĂ" + }, + { + "siruta": "95499", + "name": "ION NECULCE" + }, + { + "siruta": "103862", + "name": "ION ROATĂ" + }, + { + "siruta": "80560", + "name": "IONEŞTI" + }, + { + "siruta": "170514", + "name": "IONEŞTI" + }, + { + "siruta": "133722", + "name": "IORDĂCHEANU" + }, + { + "siruta": "141722", + "name": "IP" + }, + { + "siruta": "97553", + "name": "IPATELE" + }, + { + "siruta": "130348", + "name": "IPOTESTI" + }, + { + "siruta": "146281", + "name": "IPOTEŞTI" + }, + { + "siruta": "11352", + "name": "IRATOŞU" + }, + { + "siruta": "159687", + "name": "ISACCEA" + }, + { + "siruta": "70094", + "name": "IŞALNIŢA" + }, + { + "siruta": "151736", + "name": "ISLAZ" + }, + { + "siruta": "62020", + "name": "ISTRIA" + }, + { + "siruta": "112370", + "name": "ISVERNA" + }, + { + "siruta": "179766", + "name": "ISVOARELE" + }, + { + "siruta": "26379", + "name": "ITEŞTI" + }, + { + "siruta": "164393", + "name": "IVĂNEŞTI" + }, + { + "siruta": "164543", + "name": "IVEŞTI" + }, + { + "siruta": "76601", + "name": "IVEŞTI" + }, + { + "siruta": "127368", + "name": "IZBICENI" + }, + { + "siruta": "72882", + "name": "IZVOARE" + }, + { + "siruta": "103899", + "name": "IZVOARELE" + }, + { + "siruta": "127386", + "name": "IZVOARELE" + }, + { + "siruta": "133795", + "name": "IZVOARELE" + }, + { + "siruta": "153106", + "name": "IZVOARELE" + }, + { + "siruta": "160564", + "name": "IZVOARELE" + }, + { + "siruta": "149183", + "name": "IZVOARELE SUCEVEI" + }, + { + "siruta": "16739", + "name": "IZVORU" + }, + { + "siruta": "112469", + "name": "IZVORU BÂRZII" + }, + { + "siruta": "23127", + "name": "IZVORU BERHECIULUI" + }, + { + "siruta": "58204", + "name": "IZVORU CRIŞULUI" + }, + { + "siruta": "157362", + "name": "JAMU MARE" + }, + { + "siruta": "176506", + "name": "JARIŞTEA" + }, + { + "siruta": "157424", + "name": "JEBEL" + }, + { + "siruta": "93815", + "name": "JEGĂLIA" + }, + { + "siruta": "112548", + "name": "JIANA" + }, + { + "siruta": "41284", + "name": "JIBERT" + }, + { + "siruta": "139811", + "name": "JIBOU" + }, + { + "siruta": "55106", + "name": "JICHIŞU DE JOS" + }, + { + "siruta": "5103", + "name": "JIDVEI" + }, + { + "siruta": "160617", + "name": "JIJILA" + }, + { + "siruta": "179383", + "name": "JILAVA" + }, + { + "siruta": "103960", + "name": "JILAVELE" + }, + { + "siruta": "155494", + "name": "JIMBOLIA" + }, + { + "siruta": "144713", + "name": "JINA" + }, + { + "siruta": "43466", + "name": "JIRLĂU" + }, + { + "siruta": "176551", + "name": "JITIA" + }, + { + "siruta": "103997", + "name": "JOIŢA" + }, + { + "siruta": "76638", + "name": "JORĂŞTI" + }, + { + "siruta": "84558", + "name": "JOSENI" + }, + { + "siruta": "33382", + "name": "JOSENII BÂRGĂULUI" + }, + { + "siruta": "58259", + "name": "JUCU" + }, + { + "siruta": "133866", + "name": "JUGURENI" + }, + { + "siruta": "80613", + "name": "JUPÂNEŞTI" + }, + { + "siruta": "160644", + "name": "JURILOVCA" + }, + { + "siruta": "174511", + "name": "LĂCUSTENI" + }, + { + "siruta": "170685", + "name": "LĂDEŞTI" + }, + { + "siruta": "170612", + "name": "LALOŞU" + }, + { + "siruta": "133919", + "name": "LAPOŞ" + }, + { + "siruta": "89954", + "name": "LĂPUGIU DE JOS" + }, + { + "siruta": "108222", + "name": "LĂPUŞ" + }, + { + "siruta": "170792", + "name": "LĂPUŞATA" + }, + { + "siruta": "53069", + "name": "LĂPUŞNICEL" + }, + { + "siruta": "53103", + "name": "LĂPUŞNICU MARE" + }, + { + "siruta": "47159", + "name": "LARGU" + }, + { + "siruta": "144731", + "name": "LASLEA" + }, + { + "siruta": "164598", + "name": "LAZA" + }, + { + "siruta": "84594", + "name": "LĂZAREA" + }, + { + "siruta": "29813", + "name": "LĂZĂRENI" + }, + { + "siruta": "137960", + "name": "LAZURI" + }, + { + "siruta": "29760", + "name": "LAZURI DE BEIUŞ" + }, + { + "siruta": "33435", + "name": "LECHINŢA" + }, + { + "siruta": "93851", + "name": "LEHLIU" + }, + { + "siruta": "93888", + "name": "LEHLIU GARĂ" + }, + { + "siruta": "127411", + "name": "LELEASCA" + }, + { + "siruta": "90066", + "name": "LELEŞE" + }, + { + "siruta": "80677", + "name": "LELEŞTI" + }, + { + "siruta": "86479", + "name": "LELICENI" + }, + { + "siruta": "64461", + "name": "LEMNIA" + }, + { + "siruta": "157451", + "name": "LENAUHEIM" + }, + { + "siruta": "37850", + "name": "LEORDA" + }, + { + "siruta": "16757", + "name": "LEORDENI" + }, + { + "siruta": "108240", + "name": "LEORDINA" + }, + { + "siruta": "16908", + "name": "LEREŞTI" + }, + { + "siruta": "97606", + "name": "LESPEZI" + }, + { + "siruta": "33514", + "name": "LEŞU" + }, + { + "siruta": "141786", + "name": "LETCA" + }, + { + "siruta": "104047", + "name": "LETCA NOUA" + }, + { + "siruta": "97679", + "name": "LEŢCANI" + }, + { + "siruta": "20359", + "name": "LETEA VECHE" + }, + { + "siruta": "72926", + "name": "LEU" + }, + { + "siruta": "80711", + "name": "LICURICI" + }, + { + "siruta": "157497", + "name": "LIEBLING" + }, + { + "siruta": "76674", + "name": "LIEŞTI" + }, + { + "siruta": "60632", + "name": "LIMANU" + }, + { + "siruta": "133964", + "name": "LIPĂNEŞTI" + }, + { + "siruta": "62057", + "name": "LIPNIŢA" + }, + { + "siruta": "23207", + "name": "LIPOVA" + }, + { + "siruta": "9574", + "name": "LIPOVA" + }, + { + "siruta": "164687", + "name": "LIPOVĂŢ" + }, + { + "siruta": "72953", + "name": "LIPOVU" + }, + { + "siruta": "41346", + "name": "LISA" + }, + { + "siruta": "153124", + "name": "LISA" + }, + { + "siruta": "151763", + "name": "LIŢA" + }, + { + "siruta": "149227", + "name": "LITENI" + }, + { + "siruta": "9333", + "name": "LIVADA" + }, + { + "siruta": "138039", + "name": "LIVADA" + }, + { + "siruta": "117925", + "name": "LIVEZENI" + }, + { + "siruta": "170872", + "name": "LIVEZI" + }, + { + "siruta": "23289", + "name": "LIVEZI" + }, + { + "siruta": "112600", + "name": "LIVEZILE" + }, + { + "siruta": "159491", + "name": "LIVEZILE" + }, + { + "siruta": "5167", + "name": "LIVEZILE" + }, + { + "siruta": "33541", + "name": "LIVEZILE" + }, + { + "siruta": "144795", + "name": "LOAMNEŞ" + }, + { + "siruta": "80766", + "name": "LOGREŞTI" + }, + { + "siruta": "5210", + "name": "LOPADEA NOUĂ" + }, + { + "siruta": "47186", + "name": "LOPĂTARI" + }, + { + "siruta": "157530", + "name": "LOVRIN" + }, + { + "siruta": "141884", + "name": "LOZNA" + }, + { + "siruta": "39942", + "name": "LOZNA" + }, + { + "siruta": "67773", + "name": "LUCIENI" + }, + { + "siruta": "47300", + "name": "LUCIU" + }, + { + "siruta": "67835", + "name": "LUDEŞTI" + }, + { + "siruta": "144866", + "name": "LUDOŞ" + }, + { + "siruta": "114710", + "name": "LUDUŞ" + }, + { + "siruta": "84629", + "name": "LUETA" + }, + { + "siruta": "29902", + "name": "LUGAŞU DE JOS" + }, + { + "siruta": "155350", + "name": "LUGOJ" + }, + { + "siruta": "104083", + "name": "LUICA" + }, + { + "siruta": "23350", + "name": "LUIZI-CĂLUGĂRA" + }, + { + "siruta": "63152", + "name": "LUMINA" + }, + { + "siruta": "58311", + "name": "LUNA" + }, + { + "siruta": "29948", + "name": "LUNCA" + }, + { + "siruta": "37912", + "name": "LUNCA" + }, + { + "siruta": "153151", + "name": "LUNCA" + }, + { + "siruta": "117998", + "name": "LUNCA" + }, + { + "siruta": "164749", + "name": "LUNCA BANULUI" + }, + { + "siruta": "118058", + "name": "LUNCA BRADULUI" + }, + { + "siruta": "90119", + "name": "LUNCA CERNII DE JOS" + }, + { + "siruta": "16944", + "name": "LUNCA CORBULUI" + }, + { + "siruta": "84656", + "name": "LUNCA DE JOS" + }, + { + "siruta": "84754", + "name": "LUNCA DE SUS" + }, + { + "siruta": "33603", + "name": "LUNCA ILVEI" + }, + { + "siruta": "5309", + "name": "LUNCA MUREŞULUI" + }, + { + "siruta": "53130", + "name": "LUNCAVIŢA" + }, + { + "siruta": "160680", + "name": "LUNCAVIŢA" + }, + { + "siruta": "90208", + "name": "LUNCOIU DE JOS" + }, + { + "siruta": "97722", + "name": "LUNGANI" + }, + { + "siruta": "170952", + "name": "LUNGEŞTI" + }, + { + "siruta": "67906", + "name": "LUNGULEŢU" + }, + { + "siruta": "53167", + "name": "LUPAC" + }, + { + "siruta": "84825", + "name": "LUPENI" + }, + { + "siruta": "87059", + "name": "LUPENI" + }, + { + "siruta": "5336", + "name": "LUPŞA" + }, + { + "siruta": "93931", + "name": "LUPŞANU" + }, + { + "siruta": "11398", + "name": "MACEA" + }, + { + "siruta": "72980", + "name": "MĂCEŞU DE JOS" + }, + { + "siruta": "73013", + "name": "MĂCEŞU DE SUS" + }, + { + "siruta": "159730", + "name": "MĂCIN" + }, + { + "siruta": "171101", + "name": "MĂCIUCA" + }, + { + "siruta": "86438", + "name": "MĂDĂRAŞ" + }, + { + "siruta": "120502", + "name": "MĂDĂRAŞ" + }, + { + "siruta": "30014", + "name": "MĂDĂRAŞ" + }, + { + "siruta": "97777", + "name": "MĂDÂRJAC" + }, + { + "siruta": "171209", + "name": "MĂDULARI" + }, + { + "siruta": "142006", + "name": "MĂERIŞTE" + }, + { + "siruta": "30069", + "name": "MĂGEŞTI" + }, + { + "siruta": "118094", + "name": "MĂGHERANI" + }, + { + "siruta": "23387", + "name": "MĂGIREŞTI" + }, + { + "siruta": "73031", + "name": "MAGLAVIT" + }, + { + "siruta": "47337", + "name": "MĂGURA" + }, + { + "siruta": "20411", + "name": "MĂGURA" + }, + { + "siruta": "153240", + "name": "MĂGURA" + }, + { + "siruta": "33729", + "name": "MĂGURA ILVEI" + }, + { + "siruta": "134014", + "name": "MĂGURELE" + }, + { + "siruta": "179409", + "name": "MĂGURELE" + }, + { + "siruta": "134050", + "name": "MĂGURENI" + }, + { + "siruta": "58357", + "name": "MĂGURI-RĂCĂTĂU" + }, + { + "siruta": "160724", + "name": "MAHMUDIA" + }, + { + "siruta": "179800", + "name": "MAIA" + }, + { + "siruta": "176613", + "name": "MĂICĂNEŞTI" + }, + { + "siruta": "33621", + "name": "MAIERU" + }, + { + "siruta": "41382", + "name": "MĂIERUŞ" + }, + { + "siruta": "171021", + "name": "MALAIA" + }, + { + "siruta": "153277", + "name": "MĂLDĂENI" + }, + { + "siruta": "171272", + "name": "MĂLDĂREŞTI" + }, + { + "siruta": "149316", + "name": "MĂLINI" + }, + { + "siruta": "160779", + "name": "MALIUC" + }, + { + "siruta": "64504", + "name": "MALNAŞ" + }, + { + "siruta": "112664", + "name": "MALOVĂŢ" + }, + { + "siruta": "179739", + "name": "MALU" + }, + { + "siruta": "67942", + "name": "MALU CU FLORI" + }, + { + "siruta": "73068", + "name": "MALU MARE" + }, + { + "siruta": "17049", + "name": "MĂLURENI" + }, + { + "siruta": "164829", + "name": "MĂLUŞTENI" + }, + { + "siruta": "100736", + "name": "MANASIA" + }, + { + "siruta": "104181", + "name": "MÂNĂSTIREA" + }, + { + "siruta": "23449", + "name": "MĂNĂSTIREA CAŞIN" + }, + { + "siruta": "149370", + "name": "MĂNĂSTIREA HUMORULUI" + }, + { + "siruta": "58393", + "name": "MĂNĂSTIRENI" + }, + { + "siruta": "157736", + "name": "MĂNĂŞTIUR" + }, + { + "siruta": "41417", + "name": "MÂNDRA" + }, + { + "siruta": "134096", + "name": "MĂNECIU" + }, + { + "siruta": "134194", + "name": "MĂNEŞTI" + }, + { + "siruta": "68002", + "name": "MĂNEŞTI" + }, + { + "siruta": "60482", + "name": "MANGALIA" + }, + { + "siruta": "37958", + "name": "MANOLEASA" + }, + { + "siruta": "47630", + "name": "MÂNZĂLEŞTI" + }, + { + "siruta": "47373", + "name": "MĂRĂCINENI" + }, + { + "siruta": "13365", + "name": "MĂRĂCINENI" + }, + { + "siruta": "174922", + "name": "MĂRĂŞEŞTI" + }, + { + "siruta": "43493", + "name": "MĂRAŞU" + }, + { + "siruta": "141946", + "name": "MARCA" + }, + { + "siruta": "179980", + "name": "MĂRCULEŞTI" + }, + { + "siruta": "53210", + "name": "MARGA" + }, + { + "siruta": "47417", + "name": "MĂRGĂRITEŞTI" + }, + { + "siruta": "58464", + "name": "MĂRGĂU" + }, + { + "siruta": "26877", + "name": "MARGHITA" + }, + { + "siruta": "157585", + "name": "MARGINA" + }, + { + "siruta": "149290", + "name": "MARGINEA" + }, + { + "siruta": "123175", + "name": "MĂRGINENI" + }, + { + "siruta": "20466", + "name": "MĂRGINENI" + }, + { + "siruta": "58534", + "name": "MĂRIŞEL" + }, + { + "siruta": "33765", + "name": "MĂRIŞELU" + }, + { + "siruta": "144893", + "name": "MARPOD" + }, + { + "siruta": "104225", + "name": "MÂRŞA" + }, + { + "siruta": "73317", + "name": "MÂRŞANI" + }, + { + "siruta": "90262", + "name": "MĂRTINEŞTI" + }, + { + "siruta": "84923", + "name": "MĂRTINIŞ" + }, + { + "siruta": "127493", + "name": "MĂRUNŢEI" + }, + { + "siruta": "153339", + "name": "MÂRZĂNEŞTI" + }, + { + "siruta": "157683", + "name": "MAŞLOC" + }, + { + "siruta": "76718", + "name": "MĂSTĂCANI" + }, + { + "siruta": "80846", + "name": "MĂTĂSARI" + }, + { + "siruta": "68048", + "name": "MĂTĂSARU" + }, + { + "siruta": "76692", + "name": "MATCA" + }, + { + "siruta": "171067", + "name": "MATEEŞTI" + }, + { + "siruta": "33658", + "name": "MATEI" + }, + { + "siruta": "53247", + "name": "MĂURENI" + }, + { + "siruta": "153204", + "name": "MAVRODIN" + }, + { + "siruta": "43563", + "name": "MĂXINENI" + }, + { + "siruta": "60847", + "name": "MEDGIDIA" + }, + { + "siruta": "143619", + "name": "MEDIAŞ" + }, + { + "siruta": "138084", + "name": "MEDIEŞU AURIT" + }, + { + "siruta": "53274", + "name": "MEHADIA" + }, + { + "siruta": "53327", + "name": "MEHADICA" + }, + { + "siruta": "73102", + "name": "MELINEŞTI" + }, + { + "siruta": "176686", + "name": "MERA" + }, + { + "siruta": "47453", + "name": "MEREI" + }, + { + "siruta": "65105", + "name": "MERENI" + }, + { + "siruta": "153295", + "name": "MERENI" + }, + { + "siruta": "62137", + "name": "MERENI" + }, + { + "siruta": "85056", + "name": "MEREŞTI" + }, + { + "siruta": "144964", + "name": "MERGHINDEAL" + }, + { + "siruta": "17101", + "name": "MERIŞANI" + }, + { + "siruta": "142079", + "name": "MESEŞENII DE JOS" + }, + { + "siruta": "5577", + "name": "METEŞ" + }, + { + "siruta": "118209", + "name": "MICA" + }, + { + "siruta": "55160", + "name": "MICA" + }, + { + "siruta": "144991", + "name": "MICĂSASA" + }, + { + "siruta": "17209", + "name": "MICEŞTI" + }, + { + "siruta": "33845", + "name": "MICEŞTII DE CÂMPIE" + }, + { + "siruta": "65139", + "name": "MICFALĂU" + }, + { + "siruta": "164892", + "name": "MICLEŞTI" + }, + { + "siruta": "138164", + "name": "MICULA" + }, + { + "siruta": "83320", + "name": "MIERCUREA CIUC" + }, + { + "siruta": "118281", + "name": "MIERCUREA NIRAJULUI" + }, + { + "siruta": "144928", + "name": "MIERCUREA SIBIULUI" + }, + { + "siruta": "127536", + "name": "MIHĂEŞTI" + }, + { + "siruta": "171325", + "name": "MIHĂEŞTI" + }, + { + "siruta": "17254", + "name": "MIHĂEŞTI" + }, + { + "siruta": "104118", + "name": "MIHAI BRAVU" + }, + { + "siruta": "160831", + "name": "MIHAI BRAVU" + }, + { + "siruta": "38063", + "name": "MIHAI EMINESCU" + }, + { + "siruta": "62253", + "name": "MIHAI VITEAZU" + }, + { + "siruta": "55277", + "name": "MIHAI VITEAZU" + }, + { + "siruta": "93995", + "name": "MIHAIL KOGĂLNICEANU" + }, + { + "siruta": "62191", + "name": "MIHAIL KOGĂLNICEANU" + }, + { + "siruta": "160877", + "name": "MIHAIL KOGĂLNICEANU" + }, + { + "siruta": "145042", + "name": "MIHĂILENI" + }, + { + "siruta": "85074", + "name": "MIHĂILENI" + }, + { + "siruta": "38161", + "name": "MIHĂILENI" + }, + { + "siruta": "47578", + "name": "MIHĂILEŞTI" + }, + { + "siruta": "104136", + "name": "MIHĂILEŞTI" + }, + { + "siruta": "38241", + "name": "MIHĂLĂŞENI" + }, + { + "siruta": "5700", + "name": "MIHALŢ" + }, + { + "siruta": "118370", + "name": "MIHEŞU DE CÂMPIE" + }, + { + "siruta": "33881", + "name": "MILAŞ" + }, + { + "siruta": "171469", + "name": "MILCOIU" + }, + { + "siruta": "127563", + "name": "MILCOV" + }, + { + "siruta": "176748", + "name": "MILCOVUL" + }, + { + "siruta": "38321", + "name": "MILEANCA" + }, + { + "siruta": "146931", + "name": "MILIŞĂUŢI" + }, + { + "siruta": "94045", + "name": "MILOŞEŞTI" + }, + { + "siruta": "58552", + "name": "MINTIU GHERLII" + }, + { + "siruta": "17334", + "name": "MIOARELE" + }, + { + "siruta": "13301", + "name": "MIOVENI" + }, + { + "siruta": "5755", + "name": "MIRĂSLĂU" + }, + { + "siruta": "43625", + "name": "MIRCEA VODĂ" + }, + { + "siruta": "62280", + "name": "MIRCEA VODĂ" + }, + { + "siruta": "97811", + "name": "MIRCEŞTI" + }, + { + "siruta": "108268", + "name": "MIREŞU MARE" + }, + { + "siruta": "97875", + "name": "MIRONEASA" + }, + { + "siruta": "17398", + "name": "MIROŞI" + }, + { + "siruta": "97919", + "name": "MIROSLAVA" + }, + { + "siruta": "98051", + "name": "MIROSLOVEŞTI" + }, + { + "siruta": "142122", + "name": "MIRŞID" + }, + { + "siruta": "11423", + "name": "MIŞCA" + }, + { + "siruta": "73246", + "name": "MISCHII" + }, + { + "siruta": "38376", + "name": "MITOC" + }, + { + "siruta": "146325", + "name": "MITOCU DRAGOMIRNEI" + }, + { + "siruta": "100638", + "name": "MITRENI" + }, + { + "siruta": "174520", + "name": "MITROFANI" + }, + { + "siruta": "131407", + "name": "MIZIL" + }, + { + "siruta": "64568", + "name": "MOACŞA" + }, + { + "siruta": "149414", + "name": "MOARA" + }, + { + "siruta": "104243", + "name": "MOARA VLĂSIEI" + }, + { + "siruta": "58623", + "name": "MOCIU" + }, + { + "siruta": "92587", + "name": "MODELU" + }, + { + "siruta": "138208", + "name": "MOFTIN" + }, + { + "siruta": "5826", + "name": "MOGOŞ" + }, + { + "siruta": "68128", + "name": "MOGOŞANI" + }, + { + "siruta": "98113", + "name": "MOGOŞEŞTI" + }, + { + "siruta": "98168", + "name": "MOGOŞEŞTI-SIRET" + }, + { + "siruta": "179463", + "name": "MOGOŞOAIA" + }, + { + "siruta": "41471", + "name": "MOIECIU" + }, + { + "siruta": "20876", + "name": "MOINEŞTI" + }, + { + "siruta": "108348", + "name": "MOISEI" + }, + { + "siruta": "51056", + "name": "MOLDOVA NOUĂ" + }, + { + "siruta": "149502", + "name": "MOLDOVA-SULIŢA" + }, + { + "siruta": "58721", + "name": "MOLDOVENEŞTI" + }, + { + "siruta": "123228", + "name": "MOLDOVENI" + }, + { + "siruta": "179999", + "name": "MOLDOVENI" + }, + { + "siruta": "149539", + "name": "MOLDOVIŢA" + }, + { + "siruta": "11478", + "name": "MONEASA" + }, + { + "siruta": "33952", + "name": "MONOR" + }, + { + "siruta": "17423", + "name": "MORĂREŞTI" + }, + { + "siruta": "157781", + "name": "MORAVIŢA" + }, + { + "siruta": "65841", + "name": "MORENI" + }, + { + "siruta": "68182", + "name": "MOROENI" + }, + { + "siruta": "68253", + "name": "MORTENI" + }, + { + "siruta": "127625", + "name": "MORUNGLAV" + }, + { + "siruta": "145104", + "name": "MOŞNA" + }, + { + "siruta": "98202", + "name": "MOŞNA" + }, + { + "siruta": "157834", + "name": "MOŞNIŢA NOUĂ" + }, + { + "siruta": "17496", + "name": "MOŞOAIA" + }, + { + "siruta": "153384", + "name": "MOŞTENI" + }, + { + "siruta": "65645", + "name": "MOŢĂIENI" + }, + { + "siruta": "73335", + "name": "MOŢĂŢEI" + }, + { + "siruta": "98220", + "name": "MOŢCA" + }, + { + "siruta": "23494", + "name": "MOTOŞENI" + }, + { + "siruta": "78141", + "name": "MOTRU" + }, + { + "siruta": "94081", + "name": "MOVILA" + }, + { + "siruta": "47774", + "name": "MOVILA BANULUI" + }, + { + "siruta": "43652", + "name": "MOVILA MIRESII" + }, + { + "siruta": "127689", + "name": "MOVILENI" + }, + { + "siruta": "98257", + "name": "MOVILENI" + }, + { + "siruta": "76745", + "name": "MOVILENI" + }, + { + "siruta": "104270", + "name": "MOVILIŢA" + }, + { + "siruta": "176793", + "name": "MOVILIŢA" + }, + { + "siruta": "17575", + "name": "MOZĂCENI" + }, + { + "siruta": "171539", + "name": "MUEREASCA" + }, + { + "siruta": "85127", + "name": "MUGENI" + }, + { + "siruta": "75258", + "name": "MUNTENI" + }, + { + "siruta": "94107", + "name": "MUNTENI-BUZĂU" + }, + { + "siruta": "164936", + "name": "MUNTENII DE JOS" + }, + { + "siruta": "167302", + "name": "MUNTENII DE SUS" + }, + { + "siruta": "62360", + "name": "MURFATLAR" + }, + { + "siruta": "73371", + "name": "MURGAŞI" + }, + { + "siruta": "164981", + "name": "MURGENI" + }, + { + "siruta": "47818", + "name": "MURGEŞTI" + }, + { + "siruta": "160911", + "name": "MURIGHIOL" + }, + { + "siruta": "17619", + "name": "MUŞĂTEŞTI" + }, + { + "siruta": "149584", + "name": "MUŞENIŢA" + }, + { + "siruta": "80908", + "name": "MUŞETEŞTI" + }, + { + "siruta": "118469", + "name": "NADEŞ" + }, + { + "siruta": "9627", + "name": "NĂDLAC" + }, + { + "siruta": "157898", + "name": "NĂDRAG" + }, + { + "siruta": "47854", + "name": "NĂENI" + }, + { + "siruta": "53345", + "name": "NAIDĂŞ" + }, + { + "siruta": "160993", + "name": "NALBANT" + }, + { + "siruta": "76763", + "name": "NĂMOLOASA" + }, + { + "siruta": "104323", + "name": "NANA" + }, + { + "siruta": "176855", + "name": "NĂNEŞTI" + }, + { + "siruta": "151816", + "name": "NANOV" + }, + { + "siruta": "142177", + "name": "NĂPRADEA" + }, + { + "siruta": "176891", + "name": "NĂRUJA" + }, + { + "siruta": "32544", + "name": "NĂSĂUD" + }, + { + "siruta": "153400", + "name": "NĂSTURELU" + }, + { + "siruta": "60507", + "name": "NĂVODARI" + }, + { + "siruta": "118511", + "name": "NEAUA" + }, + { + "siruta": "153437", + "name": "NECŞEŞTI" + }, + { + "siruta": "73460", + "name": "NEGOI" + }, + { + "siruta": "80980", + "name": "NEGOMIR" + }, + { + "siruta": "17726", + "name": "NEGRAŞI" + }, + { + "siruta": "60169", + "name": "NEGRENI" + }, + { + "siruta": "161856", + "name": "NEGREŞTI" + }, + { + "siruta": "125169", + "name": "NEGREŞTI" + }, + { + "siruta": "136599", + "name": "NEGREŞTI-OAŞ" + }, + { + "siruta": "23644", + "name": "NEGRI" + }, + { + "siruta": "178885", + "name": "NEGRILEŞTI" + }, + { + "siruta": "179659", + "name": "NEGRILEŞTI" + }, + { + "siruta": "77579", + "name": "NEGRILEŞTI" + }, + { + "siruta": "62397", + "name": "NEGRU VODĂ" + }, + { + "siruta": "47916", + "name": "NEHOIU" + }, + { + "siruta": "154996", + "name": "NENCIULEŞTI" + }, + { + "siruta": "176944", + "name": "NEREJU" + }, + { + "siruta": "104341", + "name": "NICOLAE BĂLCESCU" + }, + { + "siruta": "171628", + "name": "NICOLAE BĂLCESCU" + }, + { + "siruta": "23715", + "name": "NICOLAE BĂLCESCU" + }, + { + "siruta": "62440", + "name": "NICOLAE BĂLCESCU" + }, + { + "siruta": "127714", + "name": "NICOLAE TITULESCU" + }, + { + "siruta": "76807", + "name": "NICOREŞTI" + }, + { + "siruta": "38456", + "name": "NICŞENI" + }, + { + "siruta": "104387", + "name": "NICULEŞTI" + }, + { + "siruta": "161035", + "name": "NICULIŢEL" + }, + { + "siruta": "33989", + "name": "NIMIGEA" + }, + { + "siruta": "177003", + "name": "NISTOREŞTI" + }, + { + "siruta": "157923", + "name": "NIŢCHIDORF" + }, + { + "siruta": "145140", + "name": "NOCRICH" + }, + { + "siruta": "30149", + "name": "NOJORID" + }, + { + "siruta": "6048", + "name": "NOŞLAC" + }, + { + "siruta": "78258", + "name": "NOVACI" + }, + { + "siruta": "68280", + "name": "NUCET" + }, + { + "siruta": "26920", + "name": "NUCET" + }, + { + "siruta": "104421", + "name": "NUCI" + }, + { + "siruta": "17771", + "name": "NUCŞOARA" + }, + { + "siruta": "161053", + "name": "NUFĂRU" + }, + { + "siruta": "34075", + "name": "NUŞENI" + }, + { + "siruta": "142239", + "name": "NUŞFALĂU" + }, + { + "siruta": "76932", + "name": "OANCEA" + }, + { + "siruta": "17824", + "name": "OARJA" + }, + { + "siruta": "108366", + "name": "OARŢA DE JOS" + }, + { + "siruta": "127750", + "name": "OBÂRŞIA" + }, + { + "siruta": "112744", + "name": "OBÂRŞIA DE CÂMP" + }, + { + "siruta": "110027", + "name": "OBÂRŞIA-CLOŞANI" + }, + { + "siruta": "127812", + "name": "OBOGA" + }, + { + "siruta": "53372", + "name": "OBREJA" + }, + { + "siruta": "178947", + "name": "OBREJIŢA" + }, + { + "siruta": "85243", + "name": "OCLAND" + }, + { + "siruta": "50987", + "name": "OCNA DE FIER" + }, + { + "siruta": "1794", + "name": "OCNA MUREŞ" + }, + { + "siruta": "143851", + "name": "OCNA SIBIULUI" + }, + { + "siruta": "108400", + "name": "OCNA ŞUGATAG" + }, + { + "siruta": "168130", + "name": "OCNELE MARI" + }, + { + "siruta": "68324", + "name": "OCNIŢA" + }, + { + "siruta": "6119", + "name": "OCOLIŞ" + }, + { + "siruta": "48021", + "name": "ODĂILE" + }, + { + "siruta": "68342", + "name": "ODOBEŞTI" + }, + { + "siruta": "175019", + "name": "ODOBEŞTI" + }, + { + "siruta": "26353", + "name": "ODOBEŞTI" + }, + { + "siruta": "138280", + "name": "ODOREU" + }, + { + "siruta": "83133", + "name": "ODORHEIU SECUIESC" + }, + { + "siruta": "118575", + "name": "OGRA" + }, + { + "siruta": "179819", + "name": "OGRADA" + }, + { + "siruta": "104485", + "name": "OGREZENI" + }, + { + "siruta": "6164", + "name": "OHABA" + }, + { + "siruta": "157969", + "name": "OHABA LUNGĂ" + }, + { + "siruta": "104519", + "name": "OINACU" + }, + { + "siruta": "23797", + "name": "OITUZ" + }, + { + "siruta": "64602", + "name": "OJDULA" + }, + { + "siruta": "171806", + "name": "OLANU" + }, + { + "siruta": "136250", + "name": "OLARI" + }, + { + "siruta": "11502", + "name": "OLARI" + }, + { + "siruta": "30229", + "name": "OLCEA" + }, + { + "siruta": "165069", + "name": "OLTENEŞTI" + }, + { + "siruta": "153473", + "name": "OLTENI" + }, + { + "siruta": "100610", + "name": "OLTENIŢA" + }, + { + "siruta": "62486", + "name": "OLTINA" + }, + { + "siruta": "179864", + "name": "ONCEŞTI" + }, + { + "siruta": "23868", + "name": "ONCEŞTI" + }, + { + "siruta": "20563", + "name": "ONEŞTI" + }, + { + "siruta": "123255", + "name": "ONICENI" + }, + { + "siruta": "127858", + "name": "OPORELU" + }, + { + "siruta": "112771", + "name": "OPRIŞOR" + }, + { + "siruta": "127901", + "name": "OPTAŞI-MĂGURA" + }, + { + "siruta": "26564", + "name": "ORADEA" + }, + { + "siruta": "95471", + "name": "ORAŞ TÂRGU FRUMOS" + }, + { + "siruta": "87638", + "name": "ORĂŞTIE" + }, + { + "siruta": "90342", + "name": "ORĂŞTIOARA DE SUS" + }, + { + "siruta": "138351", + "name": "ORAŞU NOU" + }, + { + "siruta": "51118", + "name": "ORAVIŢA" + }, + { + "siruta": "153507", + "name": "ORBEASCA" + }, + { + "siruta": "23948", + "name": "ORBENI" + }, + { + "siruta": "145202", + "name": "ORLAT" + }, + { + "siruta": "127938", + "name": "ORLEA" + }, + { + "siruta": "171879", + "name": "ORLEŞTI" + }, + { + "siruta": "41541", + "name": "ORMENIŞ" + }, + { + "siruta": "73503", + "name": "ORODEL" + }, + { + "siruta": "110063", + "name": "ORŞOVA" + }, + { + "siruta": "158010", + "name": "ORŢIŞOARA" + }, + { + "siruta": "165130", + "name": "OŞEŞTI" + }, + { + "siruta": "130357", + "name": "OSICA DE JOS" + }, + { + "siruta": "127983", + "name": "OSICA DE SUS" + }, + { + "siruta": "30274", + "name": "OŞORHEI" + }, + { + "siruta": "149655", + "name": "OSTRA" + }, + { + "siruta": "62538", + "name": "OSTROV" + }, + { + "siruta": "161106", + "name": "OSTROV" + }, + { + "siruta": "73567", + "name": "OSTROVENI" + }, + { + "siruta": "159525", + "name": "OTELEC" + }, + { + "siruta": "98300", + "name": "OŢELENI" + }, + { + "siruta": "51207", + "name": "OŢELU ROŞU" + }, + { + "siruta": "171931", + "name": "OTEŞANI" + }, + { + "siruta": "179481", + "name": "OTOPENI" + }, + { + "siruta": "60687", + "name": "OVIDIU" + }, + { + "siruta": "64639", + "name": "OZUN" + }, + { + "siruta": "134336", + "name": "PĂCUREŢI" + }, + { + "siruta": "81095", + "name": "PADEŞ" + }, + { + "siruta": "48138", + "name": "PADINA" + }, + { + "siruta": "112806", + "name": "PĂDINA" + }, + { + "siruta": "159446", + "name": "PĂDURENI" + }, + { + "siruta": "165185", + "name": "PĂDURENI" + }, + { + "siruta": "23975", + "name": "PALANCA" + }, + { + "siruta": "58794", + "name": "PĂLATCA" + }, + { + "siruta": "32161", + "name": "PALEU" + }, + { + "siruta": "177101", + "name": "PALTIN" + }, + { + "siruta": "53425", + "name": "PĂLTINIŞ" + }, + { + "siruta": "38492", + "name": "PĂLTINIŞ" + }, + { + "siruta": "149753", + "name": "PĂLTINOASA" + }, + { + "siruta": "149682", + "name": "PANACI" + }, + { + "siruta": "48227", + "name": "PĂNĂTĂU" + }, + { + "siruta": "24187", + "name": "PÂNCEŞTI" + }, + { + "siruta": "125141", + "name": "PÂNCEŞTI" + }, + { + "siruta": "175055", + "name": "PANCIU" + }, + { + "siruta": "9654", + "name": "PÂNCOTA" + }, + { + "siruta": "118691", + "name": "PĂNET" + }, + { + "siruta": "123601", + "name": "PÂNGĂRAŢI" + }, + { + "siruta": "62609", + "name": "PANTELIMON" + }, + { + "siruta": "179515", + "name": "PANTELIMON" + }, + { + "siruta": "58856", + "name": "PANTICEU" + }, + { + "siruta": "118637", + "name": "PAPIU ILARIAN" + }, + { + "siruta": "41578", + "name": "PĂRĂU" + }, + { + "siruta": "24034", + "name": "PARAVA" + }, + { + "siruta": "161133", + "name": "PARDINA" + }, + { + "siruta": "48165", + "name": "PARDOŞI" + }, + { + "siruta": "24276", + "name": "PÂRGĂREŞTI" + }, + { + "siruta": "24089", + "name": "PARINCEA" + }, + { + "siruta": "24338", + "name": "PÂRJOL" + }, + { + "siruta": "48557", + "name": "PÂRSCOV" + }, + { + "siruta": "128178", + "name": "PÂRŞCOVENI" + }, + { + "siruta": "159437", + "name": "PARŢA" + }, + { + "siruta": "149780", + "name": "PÂRTEŞTII DE JOS" + }, + { + "siruta": "34155", + "name": "PARVA" + }, + { + "siruta": "118753", + "name": "PĂSĂRENI" + }, + { + "siruta": "95391", + "name": "PAŞCANI" + }, + { + "siruta": "123371", + "name": "PĂSTRĂVENI" + }, + { + "siruta": "48325", + "name": "PĂTÂRLAGELE" + }, + { + "siruta": "149833", + "name": "PĂTRĂUŢI" + }, + { + "siruta": "112879", + "name": "PĂTULELE" + }, + { + "siruta": "145220", + "name": "PĂUCA" + }, + { + "siruta": "83375", + "name": "PĂULENI-CIUC" + }, + { + "siruta": "178910", + "name": "PAULEŞTI" + }, + { + "siruta": "130847", + "name": "PĂULEŞTI" + }, + { + "siruta": "138431", + "name": "PĂULEŞTI" + }, + { + "siruta": "11539", + "name": "PĂULIŞ" + }, + { + "siruta": "177236", + "name": "PĂUNEŞTI" + }, + { + "siruta": "171995", + "name": "PĂUŞEŞTI" + }, + { + "siruta": "172082", + "name": "PĂUSEŞTI-MĂGLAŞI" + }, + { + "siruta": "161151", + "name": "PECENEAGA" + }, + { + "siruta": "76969", + "name": "PECHEA" + }, + { + "siruta": "11584", + "name": "PECICA" + }, + { + "siruta": "62672", + "name": "PECINEAGA" + }, + { + "siruta": "158065", + "name": "PECIU NOU" + }, + { + "siruta": "11637", + "name": "PEREGU MARE" + }, + { + "siruta": "153543", + "name": "PERETU" + }, + { + "siruta": "158109", + "name": "PERIAM" + }, + { + "siruta": "142284", + "name": "PERICEI" + }, + { + "siruta": "165274", + "name": "PERIENI" + }, + { + "siruta": "128052", + "name": "PERIEŢI" + }, + { + "siruta": "94161", + "name": "PERIEŢI" + }, + { + "siruta": "104546", + "name": "PERIŞ" + }, + { + "siruta": "172153", + "name": "PERIŞANI" + }, + { + "siruta": "73594", + "name": "PERIŞOR" + }, + { + "siruta": "94223", + "name": "PERIŞORU" + }, + { + "siruta": "179935", + "name": "PERŞINARI" + }, + { + "siruta": "159507", + "name": "PESAC" + }, + { + "siruta": "172279", + "name": "PESCEANA" + }, + { + "siruta": "62707", + "name": "PEŞTERA" + }, + { + "siruta": "81184", + "name": "PEŞTIŞANI" + }, + { + "siruta": "90431", + "name": "PESTIŞU MIC" + }, + { + "siruta": "118799", + "name": "PETELEA" + }, + { + "siruta": "104582", + "name": "PETRĂCHIOAIA" + }, + { + "siruta": "65752", + "name": "PETREŞTI" + }, + { + "siruta": "138501", + "name": "PETREŞTI" + }, + { + "siruta": "58918", + "name": "PETREŞTII DE JOS" + }, + { + "siruta": "123424", + "name": "PETRICANI" + }, + { + "siruta": "87077", + "name": "PETRILA" + }, + { + "siruta": "11664", + "name": "PETRIŞ" + }, + { + "siruta": "86990", + "name": "PETROŞANI" + }, + { + "siruta": "108455", + "name": "PETROVA" + }, + { + "siruta": "34173", + "name": "PETRU RAREŞ" + }, + { + "siruta": "6217", + "name": "PIANU" + }, + { + "siruta": "153561", + "name": "PIATRA" + }, + { + "siruta": "123479", + "name": "PIATRA ŞOIMULUI" + }, + { + "siruta": "120726", + "name": "PIATRA-NEAMŢ" + }, + { + "siruta": "128105", + "name": "PIATRA-OLT" + }, + { + "siruta": "73629", + "name": "PIELEŞTI" + }, + { + "siruta": "179908", + "name": "PIETRARI" + }, + { + "siruta": "172340", + "name": "PIETRARI" + }, + { + "siruta": "158136", + "name": "PIETROASA" + }, + { + "siruta": "30336", + "name": "PIETROASA" + }, + { + "siruta": "48487", + "name": "PIETROASELE" + }, + { + "siruta": "153589", + "name": "PIETROŞANI" + }, + { + "siruta": "17851", + "name": "PIETROŞANI" + }, + { + "siruta": "68404", + "name": "PIETROŞIŢA" + }, + { + "siruta": "11735", + "name": "PILU" + }, + { + "siruta": "123521", + "name": "PIPIRIG" + }, + { + "siruta": "138538", + "name": "PIR" + }, + { + "siruta": "158181", + "name": "PIŞCHIA" + }, + { + "siruta": "138574", + "name": "PIŞCOLT" + }, + { + "siruta": "76996", + "name": "PISCU" + }, + { + "siruta": "73665", + "name": "PISCU VECHI" + }, + { + "siruta": "13169", + "name": "PITEŞTI" + }, + { + "siruta": "85289", + "name": "PLĂIEŞII DE JOS" + }, + { + "siruta": "104635", + "name": "PLĂTĂREŞTI" + }, + { + "siruta": "180000", + "name": "PLATONEŞTI" + }, + { + "siruta": "73709", + "name": "PLENIŢA" + }, + { + "siruta": "11762", + "name": "PLEŞCUŢA" + }, + { + "siruta": "74931", + "name": "PLEŞOI" + }, + { + "siruta": "128221", + "name": "PLEŞOIU" + }, + { + "siruta": "130534", + "name": "PLOIEŞTI" + }, + { + "siruta": "24427", + "name": "PLOPANA" + }, + { + "siruta": "131443", + "name": "PLOPENI" + }, + { + "siruta": "153623", + "name": "PLOPII-SLĂVITEŞTI" + }, + { + "siruta": "142337", + "name": "PLOPIŞ" + }, + { + "siruta": "81264", + "name": "PLOPŞORU" + }, + { + "siruta": "134390", + "name": "PLOPU" + }, + { + "siruta": "153605", + "name": "PLOSCA" + }, + { + "siruta": "58990", + "name": "PLOSCOŞ" + }, + { + "siruta": "178894", + "name": "PLOSCUŢENI" + }, + { + "siruta": "98337", + "name": "PLUGARI" + }, + { + "siruta": "62761", + "name": "POARTA ALBĂ" + }, + { + "siruta": "128301", + "name": "POBORU" + }, + { + "siruta": "167311", + "name": "POCHIDIA" + }, + { + "siruta": "30416", + "name": "POCOLA" + }, + { + "siruta": "70110", + "name": "PODARI" + }, + { + "siruta": "112959", + "name": "PODENI" + }, + { + "siruta": "134443", + "name": "PODENII NOI" + }, + { + "siruta": "48682", + "name": "PODGORIA" + }, + { + "siruta": "123674", + "name": "PODOLENI" + }, + { + "siruta": "98373", + "name": "PODU ILOAIEI" + }, + { + "siruta": "24524", + "name": "PODU TURCULUI" + }, + { + "siruta": "24631", + "name": "PODURI" + }, + { + "siruta": "153696", + "name": "POENI" + }, + { + "siruta": "118824", + "name": "POGĂCEAUA" + }, + { + "siruta": "165416", + "name": "POGANA" + }, + { + "siruta": "48744", + "name": "POGOANELE" + }, + { + "siruta": "167259", + "name": "POGONEŞTI" + }, + { + "siruta": "64719", + "name": "POIAN" + }, + { + "siruta": "68431", + "name": "POIANA" + }, + { + "siruta": "77587", + "name": "POIANA" + }, + { + "siruta": "179720", + "name": "POIANA ILVEI" + }, + { + "siruta": "142373", + "name": "POIANA BLENCHII" + }, + { + "siruta": "131274", + "name": "POIANA CÂMPINA" + }, + { + "siruta": "177263", + "name": "POIANA CRISTEI" + }, + { + "siruta": "18028", + "name": "POIANA LACULUI" + }, + { + "siruta": "73736", + "name": "POIANA MARE" + }, + { + "siruta": "41621", + "name": "POIANA MĂRULUI" + }, + { + "siruta": "145275", + "name": "POIANA SIBIULUI" + }, + { + "siruta": "149851", + "name": "POIANA STAMPEI" + }, + { + "siruta": "123790", + "name": "POIANA TEIULUI" + }, + { + "siruta": "6271", + "name": "POIANA VADULUI" + }, + { + "siruta": "123709", + "name": "POIENARI" + }, + { + "siruta": "134559", + "name": "POIENARII BURCHII" + }, + { + "siruta": "17913", + "name": "POIENARII DE ARGEŞ" + }, + { + "siruta": "17968", + "name": "POIENARII DE MUSCEL" + }, + { + "siruta": "165336", + "name": "POIENEŞTI" + }, + { + "siruta": "59041", + "name": "POIENI" + }, + { + "siruta": "151585", + "name": "POIENI-SOLCA" + }, + { + "siruta": "108473", + "name": "POIENILE DE SUB MUNTE" + }, + { + "siruta": "179604", + "name": "POIENILE IZEI" + }, + { + "siruta": "53513", + "name": "POJEJENA" + }, + { + "siruta": "149931", + "name": "POJORÂTA" + }, + { + "siruta": "81380", + "name": "POLOVRAGI" + }, + { + "siruta": "38544", + "name": "POMÂRLA" + }, + { + "siruta": "30470", + "name": "POMEZEU" + }, + { + "siruta": "138618", + "name": "POMI" + }, + { + "siruta": "112995", + "name": "PONOARELE" + }, + { + "siruta": "6397", + "name": "PONOR" + }, + { + "siruta": "18162", + "name": "POPEŞTI" + }, + { + "siruta": "172377", + "name": "POPEŞTI" + }, + { + "siruta": "178901", + "name": "POPEŞTI" + }, + { + "siruta": "30568", + "name": "POPEŞTI" + }, + { + "siruta": "98435", + "name": "POPEŞTI" + }, + { + "siruta": "179533", + "name": "POPEŞTI LEORDENI" + }, + { + "siruta": "143502", + "name": "POPLACA" + }, + { + "siruta": "98505", + "name": "POPRICANI" + }, + { + "siruta": "113153", + "name": "POROINA MARE" + }, + { + "siruta": "151834", + "name": "POROSCHIA" + }, + { + "siruta": "145293", + "name": "PORUMBACU DE JOS" + }, + { + "siruta": "86487", + "name": "PORUMBENI" + }, + { + "siruta": "180028", + "name": "PORUMBEŞTI" + }, + { + "siruta": "6468", + "name": "POŞAGA" + }, + { + "siruta": "134648", + "name": "POSEŞTI" + }, + { + "siruta": "48771", + "name": "POŞTA CÂLNĂU" + }, + { + "siruta": "128374", + "name": "POTCOAVA" + }, + { + "siruta": "68468", + "name": "POTLOGI" + }, + { + "siruta": "85341", + "name": "PRAID" + }, + { + "siruta": "38580", + "name": "PRĂJENI" + }, + { + "siruta": "26361", + "name": "PRĂJEŞTI" + }, + { + "siruta": "40303", + "name": "PREDEAL" + }, + { + "siruta": "134755", + "name": "PREDEAL-SĂRARI" + }, + { + "siruta": "73772", + "name": "PREDEŞTI" + }, + { + "siruta": "41667", + "name": "PREJMER" + }, + { + "siruta": "149968", + "name": "PREUTEŞTI" + }, + { + "siruta": "18242", + "name": "PRIBOIENI" + }, + { + "siruta": "53577", + "name": "PRIGOR" + }, + { + "siruta": "81415", + "name": "PRIGORIA" + }, + { + "siruta": "77028", + "name": "PRIPONEŞTI" + }, + { + "siruta": "98603", + "name": "PRISĂCANI" + }, + { + "siruta": "128436", + "name": "PRISEACA" + }, + { + "siruta": "113206", + "name": "PRISTOL" + }, + { + "siruta": "98649", + "name": "PROBOTA" + }, + { + "siruta": "68529", + "name": "PRODULEŞTI" + }, + { + "siruta": "134853", + "name": "PROVIŢA DE JOS" + }, + { + "siruta": "134899", + "name": "PROVIŢA DE SUS" + }, + { + "siruta": "172457", + "name": "PRUNDENI" + }, + { + "siruta": "104680", + "name": "PRUNDU" + }, + { + "siruta": "34235", + "name": "PRUNDU BÂRGĂULUI" + }, + { + "siruta": "113233", + "name": "PRUNIŞOR" + }, + { + "siruta": "68565", + "name": "PUCHENI" + }, + { + "siruta": "134942", + "name": "PUCHENII MARI" + }, + { + "siruta": "65921", + "name": "PUCIOASA" + }, + { + "siruta": "177352", + "name": "PUFEŞTI" + }, + { + "siruta": "90538", + "name": "PUI" + }, + { + "siruta": "165470", + "name": "PUIEŞTI" + }, + { + "siruta": "48842", + "name": "PUIEŞTI" + }, + { + "siruta": "165611", + "name": "PUNGEŞTI" + }, + { + "siruta": "113395", + "name": "PUNGHINA" + }, + { + "siruta": "155136", + "name": "PURANI" + }, + { + "siruta": "167320", + "name": "PUŞCAŞI" + }, + { + "siruta": "153829", + "name": "PUTINEIU" + }, + { + "siruta": "104715", + "name": "PUTINEIU" + }, + { + "siruta": "150043", + "name": "PUTNA" + }, + { + "siruta": "30648", + "name": "RĂBĂGANI" + }, + { + "siruta": "20048", + "name": "RÂCA" + }, + { + "siruta": "24766", + "name": "RĂCĂCIUNI" + }, + { + "siruta": "68627", + "name": "RĂCARI" + }, + { + "siruta": "53675", + "name": "RĂCĂŞDIA" + }, + { + "siruta": "100335", + "name": "RACHIŢENI" + }, + { + "siruta": "35839", + "name": "RĂCHIŢI" + }, + { + "siruta": "24837", + "name": "RĂCHITOASA" + }, + { + "siruta": "90725", + "name": "RĂCHITOVA" + }, + { + "siruta": "179891", + "name": "RACIU" + }, + { + "siruta": "118995", + "name": "RÂCIU" + }, + { + "siruta": "177405", + "name": "RĂCOASA" + }, + { + "siruta": "41701", + "name": "RACOŞ" + }, + { + "siruta": "24711", + "name": "RACOVA" + }, + { + "siruta": "172509", + "name": "RACOVIŢA" + }, + { + "siruta": "145355", + "name": "RACOVIŢA" + }, + { + "siruta": "158243", + "name": "RACOVIŢA" + }, + { + "siruta": "43698", + "name": "RACOVIŢĂ" + }, + { + "siruta": "48922", + "name": "RACOVIŢENI" + }, + { + "siruta": "180091", + "name": "RACŞA" + }, + { + "siruta": "86495", + "name": "RACU" + }, + { + "siruta": "150070", + "name": "RĂDĂŞENI" + }, + { + "siruta": "146628", + "name": "RĂDĂUŢI" + }, + { + "siruta": "38633", + "name": "RĂDĂUŢI-PRUT" + }, + { + "siruta": "6547", + "name": "RĂDEŞTI" + }, + { + "siruta": "77561", + "name": "RĂDEŞTI" + }, + { + "siruta": "153865", + "name": "RĂDOIEŞTI" + }, + { + "siruta": "128472", + "name": "RADOMIREŞTI" + }, + { + "siruta": "73852", + "name": "RADOVAN" + }, + { + "siruta": "104751", + "name": "RADOVANU" + }, + { + "siruta": "98685", + "name": "RĂDUCĂNENI" + }, + { + "siruta": "101243", + "name": "RĂDULEŞTI" + }, + { + "siruta": "167240", + "name": "RAFAILA" + }, + { + "siruta": "135020", + "name": "RÂFOV" + }, + { + "siruta": "6627", + "name": "RÂMEŢ" + }, + { + "siruta": "6592", + "name": "RÂMETEA" + }, + { + "siruta": "53639", + "name": "RAMNA" + }, + { + "siruta": "43732", + "name": "RÂMNICELU" + }, + { + "siruta": "48968", + "name": "RÂMNICELU" + }, + { + "siruta": "44845", + "name": "RÂMNICU SĂRAT" + }, + { + "siruta": "167473", + "name": "RÂMNICU VÂLCEA" + }, + { + "siruta": "90663", + "name": "RAPOLTU MARE" + }, + { + "siruta": "150114", + "name": "RÂŞCA" + }, + { + "siruta": "179926", + "name": "RĂSCĂEŢI" + }, + { + "siruta": "143520", + "name": "RĂŞINARI" + }, + { + "siruta": "153909", + "name": "RĂSMIREŞTI" + }, + { + "siruta": "40367", + "name": "RÂŞNOV" + }, + { + "siruta": "62798", + "name": "RASOVA" + }, + { + "siruta": "73905", + "name": "RAST" + }, + { + "siruta": "178956", + "name": "RĂSTOACA" + }, + { + "siruta": "118931", + "name": "RĂSTOLIŢA" + }, + { + "siruta": "104788", + "name": "RĂSUCENI" + }, + { + "siruta": "18331", + "name": "RĂTEŞTI" + }, + { + "siruta": "179917", + "name": "RÂU ALB" + }, + { + "siruta": "90878", + "name": "RÂU DE MORI" + }, + { + "siruta": "145382", + "name": "RÂU SADULUI" + }, + { + "siruta": "123914", + "name": "RĂUCEŞTI" + }, + { + "siruta": "38679", + "name": "RĂUŞENI" + }, + { + "siruta": "123969", + "name": "RĂZBOIENI" + }, + { + "siruta": "65431", + "name": "RĂZVAD" + }, + { + "siruta": "34262", + "name": "REBRA" + }, + { + "siruta": "165719", + "name": "REBRICEA" + }, + { + "siruta": "34280", + "name": "REBRIŞOARA" + }, + { + "siruta": "158314", + "name": "RECAŞ" + }, + { + "siruta": "41738", + "name": "RECEA" + }, + { + "siruta": "18411", + "name": "RECEA" + }, + { + "siruta": "106407", + "name": "RECEA" + }, + { + "siruta": "59130", + "name": "RECEA-CRISTUR" + }, + { + "siruta": "64773", + "name": "RECI" + }, + { + "siruta": "128524", + "name": "REDEA" + }, + { + "siruta": "124028", + "name": "REDIU" + }, + { + "siruta": "77082", + "name": "REDIU" + }, + { + "siruta": "95239", + "name": "REDIU" + }, + { + "siruta": "114809", + "name": "REGHIN" + }, + { + "siruta": "177469", + "name": "REGHIU" + }, + { + "siruta": "30719", + "name": "REMETEA" + }, + { + "siruta": "85412", + "name": "REMETEA" + }, + { + "siruta": "108491", + "name": "REMETEA CHIOARULUI" + }, + { + "siruta": "158396", + "name": "REMETEA MARE" + }, + { + "siruta": "108552", + "name": "REMEŢI" + }, + { + "siruta": "108598", + "name": "REPEDEA" + }, + { + "siruta": "50790", + "name": "REŞIŢA" + }, + { + "siruta": "94269", + "name": "REVIGA" + }, + { + "siruta": "90805", + "name": "RIBIŢA" + }, + { + "siruta": "30773", + "name": "RIENI" + }, + { + "siruta": "38731", + "name": "RIPICENI" + }, + { + "siruta": "59238", + "name": "RIŞCA" + }, + { + "siruta": "104831", + "name": "ROATA DE JOS" + }, + { + "siruta": "73923", + "name": "ROBĂNEŞTI" + }, + { + "siruta": "49019", + "name": "ROBEASCA" + }, + { + "siruta": "18475", + "name": "ROCIU" + }, + { + "siruta": "34333", + "name": "RODNA" + }, + { + "siruta": "172581", + "name": "ROEŞTI" + }, + { + "siruta": "113466", + "name": "ROGOVA" + }, + { + "siruta": "74949", + "name": "ROJIŞTE" + }, + { + "siruta": "38811", + "name": "ROMA" + }, + { + "siruta": "120860", + "name": "ROMAN" + }, + { + "siruta": "142426", + "name": "ROMÂNAŞI" + }, + { + "siruta": "38848", + "name": "ROMÂNEŞTI" + }, + { + "siruta": "98738", + "name": "ROMÂNEŞTI" + }, + { + "siruta": "124073", + "name": "ROMÂNI" + }, + { + "siruta": "43787", + "name": "ROMANU" + }, + { + "siruta": "90994", + "name": "ROMOS" + }, + { + "siruta": "34360", + "name": "ROMULI" + }, + { + "siruta": "108614", + "name": "RONA DE JOS" + }, + { + "siruta": "108632", + "name": "RONA DE SUS" + }, + { + "siruta": "100344", + "name": "ROŞCANI" + }, + { + "siruta": "94312", + "name": "ROSEŢI" + }, + { + "siruta": "145408", + "name": "ROŞIA" + }, + { + "siruta": "30844", + "name": "ROŞIA" + }, + { + "siruta": "81497", + "name": "ROŞIA DE AMARADIA" + }, + { + "siruta": "6930", + "name": "ROŞIA DE SECAŞ" + }, + { + "siruta": "6761", + "name": "ROŞIA MONTANĂ" + }, + { + "siruta": "165817", + "name": "ROŞIEŞTI" + }, + { + "siruta": "172698", + "name": "ROŞIILE" + }, + { + "siruta": "179828", + "name": "ROŞIORI" + }, + { + "siruta": "43812", + "name": "ROŞIORI" + }, + { + "siruta": "32187", + "name": "ROŞIORI" + }, + { + "siruta": "24999", + "name": "ROŞIORI" + }, + { + "siruta": "151870", + "name": "ROŞIORI DE VEDE" + }, + { + "siruta": "128560", + "name": "ROTUNDA" + }, + { + "siruta": "82895", + "name": "ROVINARI" + }, + { + "siruta": "108669", + "name": "ROZAVLEA" + }, + { + "siruta": "124117", + "name": "ROZNOV" + }, + { + "siruta": "18527", + "name": "RUCĂR" + }, + { + "siruta": "177557", + "name": "RUGINEŞTI" + }, + { + "siruta": "125105", + "name": "RUGINOASA" + }, + { + "siruta": "98774", + "name": "RUGINOASA" + }, + { + "siruta": "172812", + "name": "RUNCU" + }, + { + "siruta": "68716", + "name": "RUNCU" + }, + { + "siruta": "81576", + "name": "RUNCU" + }, + { + "siruta": "179944", + "name": "RUNCU SALVEI" + }, + { + "siruta": "40394", + "name": "RUPEA" + }, + { + "siruta": "142499", + "name": "RUS" + }, + { + "siruta": "128588", + "name": "RUSĂNEŞTI" + }, + { + "siruta": "53728", + "name": "RUSCA MONTANĂ" + }, + { + "siruta": "108696", + "name": "RUSCOVA" + }, + { + "siruta": "49046", + "name": "RUŞEŢU" + }, + { + "siruta": "119153", + "name": "RUŞII-MUNŢI" + }, + { + "siruta": "124206", + "name": "SĂBĂOANI" + }, + { + "siruta": "179775", + "name": "SĂBĂRENI" + }, + { + "siruta": "30871", + "name": "SĂCĂDAT" + }, + { + "siruta": "108794", + "name": "SĂCĂLĂŞENI" + }, + { + "siruta": "158564", + "name": "SĂCĂLAZ" + }, + { + "siruta": "138770", + "name": "SĂCĂŞENI" + }, + { + "siruta": "85467", + "name": "SĂCEL" + }, + { + "siruta": "108874", + "name": "SĂCEL" + }, + { + "siruta": "40438", + "name": "SĂCELE" + }, + { + "siruta": "62878", + "name": "SĂCELE" + }, + { + "siruta": "81754", + "name": "SĂCELU" + }, + { + "siruta": "153972", + "name": "SĂCENI" + }, + { + "siruta": "158449", + "name": "SACOŞU TURCESC" + }, + { + "siruta": "53755", + "name": "SACU" + }, + { + "siruta": "30915", + "name": "SĂCUENI" + }, + { + "siruta": "59283", + "name": "SĂCUIEU" + }, + { + "siruta": "73996", + "name": "SADOVA" + }, + { + "siruta": "150178", + "name": "SADOVA" + }, + { + "siruta": "145471", + "name": "SADU" + }, + { + "siruta": "155145", + "name": "SAELELE" + }, + { + "siruta": "142612", + "name": "SÂG" + }, + { + "siruta": "158779", + "name": "ŞAG" + }, + { + "siruta": "49073", + "name": "SĂGEATA" + }, + { + "siruta": "124153", + "name": "SAGNA" + }, + { + "siruta": "12144", + "name": "ŞAGU" + }, + { + "siruta": "49153", + "name": "SĂHĂTENI" + }, + { + "siruta": "30988", + "name": "SĂLACEA" + }, + { + "siruta": "31011", + "name": "SĂLARD" + }, + { + "siruta": "91116", + "name": "SĂLAŞU DE SUS" + }, + { + "siruta": "142550", + "name": "SĂLĂŢIG" + }, + { + "siruta": "172894", + "name": "SĂLĂTRUCEL" + }, + { + "siruta": "18554", + "name": "SĂLĂTRUCU" + }, + { + "siruta": "146370", + "name": "SALCEA" + }, + { + "siruta": "113493", + "name": "SALCIA" + }, + { + "siruta": "135128", + "name": "SALCIA" + }, + { + "siruta": "153936", + "name": "SALCIA" + }, + { + "siruta": "43867", + "name": "SALCIA TUDOR" + }, + { + "siruta": "135146", + "name": "SĂLCIILE" + }, + { + "siruta": "68789", + "name": "SĂLCIOARA" + }, + { + "siruta": "94330", + "name": "SĂLCIOARA" + }, + { + "siruta": "6976", + "name": "SĂLCIUA" + }, + { + "siruta": "74028", + "name": "SĂLCUŢA" + }, + { + "siruta": "63318", + "name": "SALIGNY" + }, + { + "siruta": "145499", + "name": "SĂLIŞTE" + }, + { + "siruta": "7044", + "name": "SĂLIŞTEA" + }, + { + "siruta": "108892", + "name": "SĂLIŞTEA DE SUS" + }, + { + "siruta": "26975", + "name": "SALONTA" + }, + { + "siruta": "108918", + "name": "SĂLSIG" + }, + { + "siruta": "34397", + "name": "SALVA" + }, + { + "siruta": "81656", + "name": "SAMARINEŞTI" + }, + { + "siruta": "31057", + "name": "SÂMBĂTA" + }, + { + "siruta": "42464", + "name": "SAMBATA DE SUS" + }, + { + "siruta": "128882", + "name": "SÂMBUREŞTI" + }, + { + "siruta": "142854", + "name": "ŞAMŞUD" + }, + { + "siruta": "158653", + "name": "SÂNANDREI" + }, + { + "siruta": "7348", + "name": "SÂNCEL" + }, + { + "siruta": "85680", + "name": "SÂNCRĂIENI" + }, + { + "siruta": "59434", + "name": "SÂNCRAIU" + }, + { + "siruta": "114382", + "name": "SÂNCRAIU DE MUREŞ" + }, + { + "siruta": "85760", + "name": "SÂNDOMINIC" + }, + { + "siruta": "159464", + "name": "ŞANDRA" + }, + { + "siruta": "25148", + "name": "SĂNDULENI" + }, + { + "siruta": "55311", + "name": "SĂNDULEŞTI" + }, + { + "siruta": "114417", + "name": "SÂNGEORGIU DE MUREŞ" + }, + { + "siruta": "119331", + "name": "SÂNGEORGIU DE PĂDURE" + }, + { + "siruta": "32599", + "name": "SÂNGEORZ-BĂI" + }, + { + "siruta": "119386", + "name": "SÂNGER" + }, + { + "siruta": "135244", + "name": "SÂNGERU" + }, + { + "siruta": "28610", + "name": "SÂNIOB" + }, + { + "siruta": "138663", + "name": "SANISLĂU" + }, + { + "siruta": "26582", + "name": "SÂNMARTIN" + }, + { + "siruta": "85788", + "name": "SÂNMARTIN" + }, + { + "siruta": "59498", + "name": "SÂNMĂRTIN" + }, + { + "siruta": "142676", + "name": "SÂNMIHAIU ALMAŞULUI" + }, + { + "siruta": "34477", + "name": "SÂNMIHAIU DE CÂMPIE" + }, + { + "siruta": "158699", + "name": "SÂNMIHAIU ROMÂN" + }, + { + "siruta": "155528", + "name": "SÂNNICOLAU MARE" + }, + { + "siruta": "32179", + "name": "SÂNNICOLAU ROMÂN" + }, + { + "siruta": "119466", + "name": "SÂNPAUL" + }, + { + "siruta": "59586", + "name": "SÂNPAUL" + }, + { + "siruta": "41925", + "name": "SÂNPETRU" + }, + { + "siruta": "119527", + "name": "SÂNPETRU DE CÂMPIE" + }, + { + "siruta": "158733", + "name": "SÂNPETRU MARE" + }, + { + "siruta": "85840", + "name": "SÂNSIMION" + }, + { + "siruta": "34618", + "name": "ŞANŢ" + }, + { + "siruta": "38893", + "name": "SANTA MARE" + }, + { + "siruta": "91232", + "name": "SÂNTĂMĂRIA-ORLEA" + }, + { + "siruta": "12091", + "name": "SÂNTANA" + }, + { + "siruta": "114453", + "name": "SÂNTANA DE MUREŞ" + }, + { + "siruta": "26653", + "name": "SÂNTANDREI" + }, + { + "siruta": "138734", + "name": "SANTĂU" + }, + { + "siruta": "7384", + "name": "SÂNTIMBRU" + }, + { + "siruta": "86519", + "name": "SÂNTIMBRU" + }, + { + "siruta": "64826", + "name": "SÂNZIENI" + }, + { + "siruta": "108945", + "name": "SĂPÂNŢA" + }, + { + "siruta": "18581", + "name": "SĂPATA" + }, + { + "siruta": "49206", + "name": "SĂPOCA" + }, + { + "siruta": "62823", + "name": "SARAIU" + }, + { + "siruta": "106620", + "name": "SARASĂU" + }, + { + "siruta": "26320", + "name": "SĂRATA" + }, + { + "siruta": "120496", + "name": "SĂRĂŢENI" + }, + { + "siruta": "180019", + "name": "SĂRĂŢENI" + }, + { + "siruta": "159455", + "name": "SARAVALE" + }, + { + "siruta": "154308", + "name": "SÂRBENI" + }, + { + "siruta": "31128", + "name": "SÂRBI" + }, + { + "siruta": "130366", + "name": "SÂRBII - MĂGURA" + }, + { + "siruta": "161179", + "name": "SARICHIOI" + }, + { + "siruta": "85528", + "name": "SĂRMAŞ" + }, + { + "siruta": "142881", + "name": "ŞĂRMĂŞAG" + }, + { + "siruta": "119242", + "name": "SARMAŞU" + }, + { + "siruta": "91054", + "name": "SARMIZEGETUSA" + }, + { + "siruta": "150445", + "name": "ŞARU DORNEI" + }, + { + "siruta": "49233", + "name": "SĂRULEŞTI" + }, + { + "siruta": "104886", + "name": "SĂRULEŞTI" + }, + { + "siruta": "53791", + "name": "SASCA MONTANĂ" + }, + { + "siruta": "119206", + "name": "SASCHIZ" + }, + { + "siruta": "7099", + "name": "SĂSCIORI" + }, + { + "siruta": "25068", + "name": "SASCUT" + }, + { + "siruta": "158528", + "name": "SATCHINEZ" + }, + { + "siruta": "86501", + "name": "SATU MARE" + }, + { + "siruta": "150196", + "name": "SATU MARE" + }, + { + "siruta": "136483", + "name": "SATU MARE" + }, + { + "siruta": "108712", + "name": "SATULUNG" + }, + { + "siruta": "138805", + "name": "SĂUCA" + }, + { + "siruta": "25228", + "name": "SĂUCEŞTI" + }, + { + "siruta": "81816", + "name": "SĂULEŞTI" + }, + { + "siruta": "119750", + "name": "ŞĂULIA" + }, + { + "siruta": "59327", + "name": "SĂVĂDISLA" + }, + { + "siruta": "11842", + "name": "SĂVÂRŞIN" + }, + { + "siruta": "94376", + "name": "SĂVENI" + }, + { + "siruta": "36060", + "name": "SĂVENI" + }, + { + "siruta": "120824", + "name": "SĂVINEŞTI" + }, + { + "siruta": "74073", + "name": "SCĂEŞTI" + }, + { + "siruta": "94429", + "name": "SCÂNTEIA" + }, + { + "siruta": "98916", + "name": "SCÂNTEIA" + }, + { + "siruta": "77126", + "name": "SCÂNTEIEŞTI" + }, + { + "siruta": "128613", + "name": "SCĂRIŞOARA" + }, + { + "siruta": "7197", + "name": "SCĂRIŞOARA" + }, + { + "siruta": "146432", + "name": "ŞCHEIA" + }, + { + "siruta": "99290", + "name": "ŞCHEIA" + }, + { + "siruta": "81987", + "name": "SCHELA" + }, + { + "siruta": "77153", + "name": "SCHELA" + }, + { + "siruta": "104975", + "name": "SCHITU" + }, + { + "siruta": "128659", + "name": "SCHITU" + }, + { + "siruta": "98827", + "name": "SCHITU DUCA" + }, + { + "siruta": "18670", + "name": "SCHITU GOLEŞTI" + }, + { + "siruta": "81861", + "name": "SCOARŢA" + }, + { + "siruta": "98998", + "name": "SCOBINŢI" + }, + { + "siruta": "128711", + "name": "SCORNICEŞTI" + }, + { + "siruta": "43929", + "name": "SCORŢARU NOU" + }, + { + "siruta": "135164", + "name": "SCORŢENI" + }, + { + "siruta": "25291", + "name": "SCORŢENI" + }, + { + "siruta": "49313", + "name": "SCORŢOASA" + }, + { + "siruta": "154013", + "name": "SCRIOAŞTEA" + }, + { + "siruta": "172947", + "name": "SCUNDU" + }, + { + "siruta": "154068", + "name": "SCURTU MARE" + }, + { + "siruta": "49439", + "name": "SCUTELNICI" + }, + { + "siruta": "128864", + "name": "SEACA" + }, + { + "siruta": "154139", + "name": "SEACA" + }, + { + "siruta": "74108", + "name": "SEACA DE CÂMP" + }, + { + "siruta": "74135", + "name": "SEACA DE PĂDURE" + }, + { + "siruta": "1874", + "name": "SEBEŞ" + }, + { + "siruta": "9690", + "name": "SEBIŞ" + }, + { + "siruta": "135226", + "name": "SECĂRIA" + }, + { + "siruta": "158608", + "name": "SECAŞ" + }, + { + "siruta": "179141", + "name": "SECTOR 1" + }, + { + "siruta": "179150", + "name": "SECTOR 2" + }, + { + "siruta": "179169", + "name": "SECTOR 3" + }, + { + "siruta": "179178", + "name": "SECTOR 4" + }, + { + "siruta": "179187", + "name": "SECTOR 5" + }, + { + "siruta": "179196", + "name": "SECTOR 6" + }, + { + "siruta": "74171", + "name": "SECU" + }, + { + "siruta": "85582", + "name": "SECUIENI" + }, + { + "siruta": "25362", + "name": "SECUIENI" + }, + { + "siruta": "124233", + "name": "SECUIENI" + }, + { + "siruta": "11940", + "name": "SECUSIGIU" + }, + { + "siruta": "70502", + "name": "SEGARCEA" + }, + { + "siruta": "154184", + "name": "SEGARCEA-VALE" + }, + { + "siruta": "145667", + "name": "ŞEICA MARE" + }, + { + "siruta": "145738", + "name": "ŞEICA MICĂ" + }, + { + "siruta": "62903", + "name": "SEIMENI" + }, + { + "siruta": "108963", + "name": "SEINI" + }, + { + "siruta": "12206", + "name": "ŞEITIN" + }, + { + "siruta": "68887", + "name": "ŞELARU" + }, + { + "siruta": "11995", + "name": "SELEUŞ" + }, + { + "siruta": "143557", + "name": "ŞELIMBĂR" + }, + { + "siruta": "12037", + "name": "SEMLAC" + }, + { + "siruta": "75114", + "name": "ŞENDRENI" + }, + { + "siruta": "39122", + "name": "ŞENDRICENI" + }, + { + "siruta": "12224", + "name": "ŞEPREUŞ" + }, + { + "siruta": "129246", + "name": "ŞERBĂNEŞTI" + }, + { + "siruta": "151460", + "name": "ŞERBĂUŢI" + }, + { + "siruta": "41818", + "name": "ŞERCAIA" + }, + { + "siruta": "94456", + "name": "SFÂNTU GHEORGHE" + }, + { + "siruta": "63394", + "name": "SFÂNTU GHEORGHE" + }, + { + "siruta": "161231", + "name": "SFÂNTU GHEORGHE" + }, + { + "siruta": "154166", + "name": "SFINŢEŞTI" + }, + { + "siruta": "143450", + "name": "SIBIU" + }, + { + "siruta": "7810", + "name": "ŞIBOT" + }, + { + "siruta": "59416", + "name": "SIC" + }, + { + "siruta": "53853", + "name": "SICHEVIŢA" + }, + { + "siruta": "12242", + "name": "ŞICULA" + }, + { + "siruta": "85626", + "name": "SICULENI" + }, + { + "siruta": "34645", + "name": "ŞIEU" + }, + { + "siruta": "179613", + "name": "ŞIEU" + }, + { + "siruta": "34690", + "name": "ŞIEU-MĂGHERUŞ" + }, + { + "siruta": "34770", + "name": "ŞIEU-ODORHEI" + }, + { + "siruta": "34850", + "name": "ŞIEUŢ" + }, + { + "siruta": "106559", + "name": "SIGHETU MARMAŢIEI" + }, + { + "siruta": "114514", + "name": "SIGHIŞOARA" + }, + { + "siruta": "177600", + "name": "SIHLEA" + }, + { + "siruta": "12288", + "name": "ŞILINDIA" + }, + { + "siruta": "154228", + "name": "SILIŞTEA" + }, + { + "siruta": "43992", + "name": "SILIŞTEA" + }, + { + "siruta": "62949", + "name": "SILIŞTEA" + }, + { + "siruta": "74224", + "name": "SILIŞTEA CRUCII" + }, + { + "siruta": "154282", + "name": "SILIŞTEA-GUMEŞTI" + }, + { + "siruta": "34422", + "name": "SILIVAŞU DE CÂMPIE" + }, + { + "siruta": "12340", + "name": "ŞIMAND" + }, + { + "siruta": "87665", + "name": "SIMERIA" + }, + { + "siruta": "31333", + "name": "ŞIMIAN" + }, + { + "siruta": "109826", + "name": "ŞIMIAN" + }, + { + "siruta": "150221", + "name": "SIMINICEA" + }, + { + "siruta": "179695", + "name": "ŞIMIŞNA" + }, + { + "siruta": "139884", + "name": "ŞIMLEU SILVANIEI" + }, + { + "siruta": "70174", + "name": "ŞIMNICU DE SUS" + }, + { + "siruta": "85984", + "name": "ŞIMONEŞTI" + }, + { + "siruta": "131540", + "name": "SINAIA" + }, + { + "siruta": "41854", + "name": "ŞINCA" + }, + { + "siruta": "42449", + "name": "ŞINCA NOUĂ" + }, + { + "siruta": "119803", + "name": "ŞINCAI" + }, + { + "siruta": "172992", + "name": "SINEŞTI" + }, + { + "siruta": "99058", + "name": "SINEŞTI" + }, + { + "siruta": "105026", + "name": "SINEŞTI" + }, + { + "siruta": "105106", + "name": "SINGURENI" + }, + { + "siruta": "12055", + "name": "SINTEA MARE" + }, + { + "siruta": "34903", + "name": "ŞINTEREAG" + }, + { + "siruta": "31379", + "name": "ŞINTEU" + }, + { + "siruta": "99370", + "name": "ŞIPOTE" + }, + { + "siruta": "146655", + "name": "SIRET" + }, + { + "siruta": "99101", + "name": "SIREŢEL" + }, + { + "siruta": "12368", + "name": "ŞIRIA" + }, + { + "siruta": "173686", + "name": "ŞIRINEASA" + }, + { + "siruta": "49484", + "name": "SIRIU" + }, + { + "siruta": "135431", + "name": "ŞIRNA" + }, + { + "siruta": "109096", + "name": "ŞISEŞTI" + }, + { + "siruta": "113625", + "name": "ŞIŞEŞTI" + }, + { + "siruta": "12402", + "name": "ŞIŞTAROVĂŢ" + }, + { + "siruta": "63688", + "name": "SITA BUZĂULUI" + }, + { + "siruta": "131577", + "name": "SLĂNIC" + }, + { + "siruta": "20910", + "name": "SLĂNIC-MOLDOVA" + }, + { + "siruta": "150258", + "name": "SLATINA" + }, + { + "siruta": "125347", + "name": "SLATINA" + }, + { + "siruta": "54056", + "name": "SLATINA-TIMIŞ" + }, + { + "siruta": "125374", + "name": "SLĂTIOARA" + }, + { + "siruta": "173061", + "name": "SLĂTIOARA" + }, + { + "siruta": "161259", + "name": "SLAVA CERCHEZĂ" + }, + { + "siruta": "145603", + "name": "SLIMNIC" + }, + { + "siruta": "82047", + "name": "SLIVILEŞTI" + }, + { + "siruta": "100549", + "name": "SLOBOZIA" + }, + { + "siruta": "18741", + "name": "SLOBOZIA" + }, + { + "siruta": "92658", + "name": "SLOBOZIA" + }, + { + "siruta": "177655", + "name": "SLOBOZIA BRADULUI" + }, + { + "siruta": "177726", + "name": "SLOBOZIA CIORĂŞTI" + }, + { + "siruta": "77180", + "name": "SLOBOZIA CONACHI" + }, + { + "siruta": "154344", + "name": "SLOBOZIA MÂNDRA" + }, + { + "siruta": "105142", + "name": "SLOBOZIA MOARĂ" + }, + { + "siruta": "161286", + "name": "SMÂRDAN" + }, + { + "siruta": "77224", + "name": "SMÂRDAN" + }, + { + "siruta": "154380", + "name": "SMÂRDIOASA" + }, + { + "siruta": "49545", + "name": "SMEENI" + }, + { + "siruta": "77260", + "name": "SMULŢI" + }, + { + "siruta": "105160", + "name": "SNAGOV" + }, + { + "siruta": "41943", + "name": "ŞOARŞ" + }, + { + "siruta": "12126", + "name": "SOCODOR" + }, + { + "siruta": "54109", + "name": "SOCOL" + }, + { + "siruta": "138869", + "name": "SOCOND" + }, + { + "siruta": "9360", + "name": "ŞOFRONEA" + }, + { + "siruta": "105222", + "name": "SOHATU" + }, + { + "siruta": "7446", + "name": "SOHODOL" + }, + { + "siruta": "135501", + "name": "ŞOIMARI" + }, + { + "siruta": "31422", + "name": "ŞOIMI" + }, + { + "siruta": "91330", + "name": "ŞOIMUŞ" + }, + { + "siruta": "146708", + "name": "SOLCA" + }, + { + "siruta": "105384", + "name": "ŞOLDANU" + }, + { + "siruta": "165899", + "name": "SOLEŞTI" + }, + { + "siruta": "25488", + "name": "SOLONŢ" + }, + { + "siruta": "119590", + "name": "SOLOVĂSTRU" + }, + { + "siruta": "109176", + "name": "ŞOMCUTA MARE" + }, + { + "siruta": "142710", + "name": "SOMEŞ-ODORHEI" + }, + { + "siruta": "161302", + "name": "SOMOVA" + }, + { + "siruta": "7865", + "name": "ŞONA" + }, + { + "siruta": "130384", + "name": "ŞOPÂRLIŢA" + }, + { + "siruta": "74242", + "name": "SOPOT" + }, + { + "siruta": "54163", + "name": "ŞOPOTU NOU" + }, + { + "siruta": "65477", + "name": "ŞOTÂNGA" + }, + { + "siruta": "135547", + "name": "ŞOTRILE" + }, + { + "siruta": "113698", + "name": "ŞOVARNA" + }, + { + "siruta": "114854", + "name": "SOVATA" + }, + { + "siruta": "177762", + "name": "SOVEJA" + }, + { + "siruta": "105259", + "name": "SPANŢOV" + }, + { + "siruta": "34547", + "name": "SPERMEZEU" + }, + { + "siruta": "128962", + "name": "SPINENI" + }, + { + "siruta": "31208", + "name": "SPINUŞ" + }, + { + "siruta": "129040", + "name": "SPRÂNCENATA" + }, + { + "siruta": "7945", + "name": "ŞPRING" + }, + { + "siruta": "178965", + "name": "SPULBER" + }, + { + "siruta": "18778", + "name": "STÂLPENI" + }, + { + "siruta": "49625", + "name": "STÂLPU" + }, + { + "siruta": "119625", + "name": "STÂNCENI" + }, + { + "siruta": "44060", + "name": "STĂNCUŢA" + }, + { + "siruta": "173132", + "name": "STĂNEŞTI" + }, + { + "siruta": "82136", + "name": "STĂNEŞTI" + }, + { + "siruta": "105295", + "name": "STĂNEŞTI" + }, + { + "siruta": "113518", + "name": "STÂNGĂCEAUA" + }, + { + "siruta": "165979", + "name": "STĂNILEŞTI" + }, + { + "siruta": "25521", + "name": "STĂNIŞEŞTI" + }, + { + "siruta": "124331", + "name": "STĂNIŢA" + }, + { + "siruta": "135315", + "name": "STARCHIOJD" + }, + { + "siruta": "35884", + "name": "STĂUCENI" + }, + { + "siruta": "129282", + "name": "ŞTEFAN CEL MARE" + }, + { + "siruta": "19114", + "name": "ŞTEFAN CEL MARE" + }, + { + "siruta": "20670", + "name": "ŞTEFAN CEL MARE" + }, + { + "siruta": "166057", + "name": "ŞTEFAN CEL MARE" + }, + { + "siruta": "124411", + "name": "ŞTEFAN CEL MARE" + }, + { + "siruta": "94562", + "name": "ŞTEFAN CEL MARE" + }, + { + "siruta": "94580", + "name": "ŞTEFAN VODĂ" + }, + { + "siruta": "173748", + "name": "ŞTEFĂNEŞTI" + }, + { + "siruta": "39168", + "name": "ŞTEFĂNEŞTI" + }, + { + "siruta": "13392", + "name": "ŞTEFĂNEŞTI" + }, + { + "siruta": "105419", + "name": "ŞTEFĂNEŞTII DE JOS" + }, + { + "siruta": "135618", + "name": "ŞTEFEŞTI" + }, + { + "siruta": "26840", + "name": "ŞTEI" + }, + { + "siruta": "82243", + "name": "STEJARI" + }, + { + "siruta": "154415", + "name": "STEJARU" + }, + { + "siruta": "161348", + "name": "STEJARU" + }, + { + "siruta": "94492", + "name": "STELNICA" + }, + { + "siruta": "39220", + "name": "ŞTIUBIENI" + }, + { + "siruta": "158804", + "name": "ŞTIUCA" + }, + { + "siruta": "129095", + "name": "STOENEŞTI" + }, + { + "siruta": "105348", + "name": "STOENEŞTI" + }, + { + "siruta": "18858", + "name": "STOENEŞTI" + }, + { + "siruta": "173230", + "name": "STOENEŞTI" + }, + { + "siruta": "129111", + "name": "STOICĂNEŞTI" + }, + { + "siruta": "173374", + "name": "STOILEŞTI" + }, + { + "siruta": "82314", + "name": "STOINA" + }, + { + "siruta": "99165", + "name": "STOLNICENI-PRĂJESCU" + }, + { + "siruta": "18938", + "name": "STOLNICI" + }, + { + "siruta": "154497", + "name": "ŞTOROBĂNEASA" + }, + { + "siruta": "150294", + "name": "STRAJA" + }, + { + "siruta": "109005", + "name": "STRÂMTURA" + }, + { + "siruta": "177799", + "name": "STRĂOANE" + }, + { + "siruta": "110116", + "name": "STREHAIA" + }, + { + "siruta": "129139", + "name": "STREJEŞTI" + }, + { + "siruta": "7767", + "name": "STREMŢ" + }, + { + "siruta": "173533", + "name": "STROEŞTI" + }, + { + "siruta": "150310", + "name": "STROIEŞTI" + }, + { + "siruta": "25629", + "name": "STRUGARI" + }, + { + "siruta": "99209", + "name": "STRUNGA" + }, + { + "siruta": "129184", + "name": "STUDINA" + }, + { + "siruta": "150356", + "name": "STULPICANI" + }, + { + "siruta": "59657", + "name": "SUATU" + }, + { + "siruta": "85877", + "name": "SUBCETATE" + }, + { + "siruta": "146263", + "name": "SUCEAVA" + }, + { + "siruta": "77288", + "name": "SUCEVENI" + }, + { + "siruta": "150418", + "name": "SUCEVIŢA" + }, + { + "siruta": "109041", + "name": "SUCIU DE SUS" + }, + { + "siruta": "94535", + "name": "SUDIŢI" + }, + { + "siruta": "8014", + "name": "ŞUGAG" + }, + { + "siruta": "154460", + "name": "SUHAIA" + }, + { + "siruta": "38982", + "name": "SUHARĂU" + }, + { + "siruta": "77601", + "name": "SUHURLUI" + }, + { + "siruta": "19141", + "name": "ŞUICI" + }, + { + "siruta": "166137", + "name": "ŞULETEA" + }, + { + "siruta": "159767", + "name": "SULINA" + }, + { + "siruta": "39051", + "name": "SULIŢA" + }, + { + "siruta": "31510", + "name": "ŞUNCUIUŞ" + }, + { + "siruta": "119661", + "name": "SUPLAC" + }, + { + "siruta": "31262", + "name": "SUPLACU DE BARCĂU" + }, + { + "siruta": "138921", + "name": "SUPUR" + }, + { + "siruta": "145765", + "name": "ŞURA MARE" + }, + { + "siruta": "145792", + "name": "ŞURA MICĂ" + }, + { + "siruta": "177842", + "name": "SURAIA" + }, + { + "siruta": "135404", + "name": "SURANI" + }, + { + "siruta": "44113", + "name": "SURDILA-GĂISEANCA" + }, + { + "siruta": "42771", + "name": "SURDILA-GRECI" + }, + { + "siruta": "142774", + "name": "SURDUC" + }, + { + "siruta": "173793", + "name": "ŞUŞANI" + }, + { + "siruta": "19007", + "name": "SUSENI" + }, + { + "siruta": "85920", + "name": "SUSENI" + }, + { + "siruta": "119723", + "name": "SUSENI" + }, + { + "siruta": "173597", + "name": "SUTEŞTI" + }, + { + "siruta": "44140", + "name": "ŞUŢEŞTI" + }, + { + "siruta": "113607", + "name": "SVINIŢA" + }, + { + "siruta": "166235", + "name": "TĂCUTA" + }, + { + "siruta": "59826", + "name": "ŢAGA" + }, + { + "siruta": "135654", + "name": "TALEA" + }, + { + "siruta": "145827", + "name": "TĂLMACIU" + }, + { + "siruta": "154521", + "name": "TALPA" + }, + { + "siruta": "74956", + "name": "TĂLPAŞ" + }, + { + "siruta": "105455", + "name": "TĂMĂDĂU MARE" + }, + { + "siruta": "124634", + "name": "TĂMĂŞENI" + }, + { + "siruta": "32153", + "name": "TĂMĂŞEU" + }, + { + "siruta": "25692", + "name": "TAMAŞI" + }, + { + "siruta": "178046", + "name": "TÂMBOEŞTI" + }, + { + "siruta": "113732", + "name": "TÂMNA" + }, + { + "siruta": "166182", + "name": "TANACU" + }, + { + "siruta": "177879", + "name": "TĂNĂSOAIA" + }, + { + "siruta": "92765", + "name": "ŢĂNDĂREI" + }, + { + "siruta": "99441", + "name": "TANSA" + }, + { + "siruta": "82680", + "name": "ŢÂNŢĂRENI" + }, + { + "siruta": "31609", + "name": "TĂRCAIA" + }, + { + "siruta": "124493", + "name": "TARCĂU" + }, + { + "siruta": "31565", + "name": "TARCEA" + }, + { + "siruta": "65342", + "name": "TÂRGOVIŞTE" + }, + { + "siruta": "130892", + "name": "TÂRGŞORU VECHI" + }, + { + "siruta": "75472", + "name": "TÂRGU BUJOR" + }, + { + "siruta": "78329", + "name": "TÂRGU CĂRBUNEŞTI" + }, + { + "siruta": "77812", + "name": "TÂRGU JIU" + }, + { + "siruta": "106817", + "name": "TÂRGU LĂPUŞ" + }, + { + "siruta": "114319", + "name": "TÂRGU MUREŞ" + }, + { + "siruta": "121055", + "name": "TÂRGU NEAMŢ" + }, + { + "siruta": "20965", + "name": "TÂRGU OCNA" + }, + { + "siruta": "63740", + "name": "TÂRGU SECUIESC" + }, + { + "siruta": "25825", + "name": "TÂRGU TROTUŞ" + }, + { + "siruta": "62985", + "name": "TÂRGUŞOR" + }, + { + "siruta": "35152", + "name": "TÂRLIŞUA" + }, + { + "siruta": "42003", + "name": "TĂRLUNGENI" + }, + { + "siruta": "139009", + "name": "TARNA MARE" + }, + { + "siruta": "143646", + "name": "TÂRNAVA" + }, + { + "siruta": "114925", + "name": "TÂRNĂVENI" + }, + { + "siruta": "54350", + "name": "TÂRNOVA" + }, + { + "siruta": "12509", + "name": "TÂRNOVA" + }, + { + "siruta": "139143", + "name": "TÂRŞOLŢ" + }, + { + "siruta": "105534", + "name": "TĂRTĂŞEŞTI" + }, + { + "siruta": "124563", + "name": "TAŞCA" + }, + { + "siruta": "136642", + "name": "TĂŞNAD" + }, + { + "siruta": "68921", + "name": "TĂTĂRANI" + }, + { + "siruta": "166315", + "name": "TĂTĂRĂNI" + }, + { + "siruta": "177986", + "name": "TĂTĂRANU" + }, + { + "siruta": "25745", + "name": "TĂTĂRĂŞTI" + }, + { + "siruta": "154585", + "name": "TĂTĂRĂŞTII DE JOS" + }, + { + "siruta": "154665", + "name": "TĂTĂRĂŞTII DE SUS" + }, + { + "siruta": "135681", + "name": "TĂTARU" + }, + { + "siruta": "99478", + "name": "TĂTĂRUŞI" + }, + { + "siruta": "129317", + "name": "TĂTULEŞTI" + }, + { + "siruta": "119858", + "name": "TĂURENI" + }, + { + "siruta": "12457", + "name": "TAUŢ" + }, + { + "siruta": "31654", + "name": "TĂUTEU" + }, + { + "siruta": "106461", + "name": "TĂUŢII MĂGHERĂUŞ" + }, + { + "siruta": "124616", + "name": "TAZLĂU" + }, + { + "siruta": "34985", + "name": "TEACA" + }, + { + "siruta": "74322", + "name": "TEASC" + }, + { + "siruta": "60534", + "name": "TECHIRGHIOL" + }, + { + "siruta": "75203", + "name": "TECUCI" + }, + { + "siruta": "135725", + "name": "TEIŞANI" + }, + { + "siruta": "19212", + "name": "TEIU" + }, + { + "siruta": "8096", + "name": "TEIUŞ" + }, + { + "siruta": "35054", + "name": "TELCIU" + }, + { + "siruta": "135789", + "name": "TELEGA" + }, + { + "siruta": "82396", + "name": "TELEŞTI" + }, + { + "siruta": "42058", + "name": "TELIU" + }, + { + "siruta": "86936", + "name": "TELIUCU INFERIOR" + }, + { + "siruta": "77377", + "name": "ŢEPU" + }, + { + "siruta": "139054", + "name": "TEREBEŞTI" + }, + { + "siruta": "54270", + "name": "TEREGOVA" + }, + { + "siruta": "158859", + "name": "TEREMIA MARE" + }, + { + "siruta": "74359", + "name": "TERPEZIŢA" + }, + { + "siruta": "74411", + "name": "TESLUI" + }, + { + "siruta": "129380", + "name": "TESLUI" + }, + { + "siruta": "31878", + "name": "ŢEŢCHEA" + }, + { + "siruta": "173855", + "name": "TETOIU" + }, + { + "siruta": "129460", + "name": "TIA MARE" + }, + { + "siruta": "99673", + "name": "ŢIBANA" + }, + { + "siruta": "99780", + "name": "ŢIBĂNEŞTI" + }, + { + "siruta": "124803", + "name": "ŢIBUCANI" + }, + { + "siruta": "44177", + "name": "TICHILEŞTI" + }, + { + "siruta": "78454", + "name": "ŢICLENI" + }, + { + "siruta": "42076", + "name": "TICUŞU" + }, + { + "siruta": "54305", + "name": "TICVANIU MARE" + }, + { + "siruta": "178180", + "name": "ŢIFEŞTI" + }, + { + "siruta": "99879", + "name": "ŢIGĂNĂŞI" + }, + { + "siruta": "154834", + "name": "ŢIGĂNEŞTI" + }, + { + "siruta": "19249", + "name": "TIGVENI" + }, + { + "siruta": "35090", + "name": "TIHA BÂRGĂULUI" + }, + { + "siruta": "31716", + "name": "TILEAGD" + }, + { + "siruta": "145907", + "name": "TILIŞCA" + }, + { + "siruta": "124661", + "name": "TIMIŞEŞTI" + }, + { + "siruta": "155243", + "name": "TIMIŞOARA" + }, + { + "siruta": "31789", + "name": "TINCA" + }, + { + "siruta": "135850", + "name": "TINOSU" + }, + { + "siruta": "49849", + "name": "ŢINTEŞTI" + }, + { + "siruta": "139107", + "name": "TIREAM" + }, + { + "siruta": "49643", + "name": "TISĂU" + }, + { + "siruta": "82430", + "name": "TISMANA" + }, + { + "siruta": "174496", + "name": "TITEŞTI" + }, + { + "siruta": "19338", + "name": "ŢIŢEŞTI" + }, + { + "siruta": "66081", + "name": "TITU" + }, + { + "siruta": "32201", + "name": "TOBOLIU" + }, + { + "siruta": "39266", + "name": "TODIRENI" + }, + { + "siruta": "150524", + "name": "TODIREŞTI" + }, + { + "siruta": "99539", + "name": "TODIREŞTI" + }, + { + "siruta": "166413", + "name": "TODIREŞTI" + }, + { + "siruta": "158895", + "name": "TOMEŞTI" + }, + { + "siruta": "91447", + "name": "TOMEŞTI" + }, + { + "siruta": "86453", + "name": "TOMEŞTI" + }, + { + "siruta": "95293", + "name": "TOMEŞTI" + }, + { + "siruta": "159473", + "name": "TOMNATIC" + }, + { + "siruta": "135896", + "name": "TOMŞANI" + }, + { + "siruta": "173935", + "name": "TOMŞANI" + }, + { + "siruta": "63045", + "name": "TOPALU" + }, + { + "siruta": "129503", + "name": "TOPANA" + }, + { + "siruta": "54387", + "name": "TOPLEŢ" + }, + { + "siruta": "49769", + "name": "TOPLICENI" + }, + { + "siruta": "83632", + "name": "TOPLIŢA" + }, + { + "siruta": "91535", + "name": "TOPLIŢA" + }, + { + "siruta": "161384", + "name": "TOPOLOG" + }, + { + "siruta": "158966", + "name": "TOPOLOVĂŢU MARE" + }, + { + "siruta": "13757", + "name": "TOPOLOVENI" + }, + { + "siruta": "154709", + "name": "TOPORU" + }, + { + "siruta": "63072", + "name": "TOPRAISAR" + }, + { + "siruta": "159035", + "name": "TORMAC" + }, + { + "siruta": "63189", + "name": "TORTOMAN" + }, + { + "siruta": "91624", + "name": "TOTEŞTI" + }, + { + "siruta": "154736", + "name": "TRAIAN" + }, + { + "siruta": "129567", + "name": "TRAIAN" + }, + { + "siruta": "25861", + "name": "TRAIAN" + }, + { + "siruta": "44202", + "name": "TRAIAN" + }, + { + "siruta": "179702", + "name": "TRAIAN" + }, + { + "siruta": "159071", + "name": "TRAIAN VUIA" + }, + { + "siruta": "179631", + "name": "TREZNEA" + }, + { + "siruta": "99600", + "name": "TRIFEŞTI" + }, + { + "siruta": "124723", + "name": "TRIFEŞTI" + }, + { + "siruta": "59693", + "name": "TRITENII DE JOS" + }, + { + "siruta": "154754", + "name": "TRIVALEA-MOŞTENI" + }, + { + "siruta": "154790", + "name": "TROIANUL" + }, + { + "siruta": "39328", + "name": "TRUŞEŞTI" + }, + { + "siruta": "44257", + "name": "TUDOR VLADIMIRESCU" + }, + { + "siruta": "77313", + "name": "TUDOR VLADIMIRESCU" + }, + { + "siruta": "39391", + "name": "TUDORA" + }, + { + "siruta": "129585", + "name": "TUFENI" + }, + { + "siruta": "44300", + "name": "TUFEŞTI" + }, + { + "siruta": "74509", + "name": "ŢUGLUI" + }, + { + "siruta": "31841", + "name": "TULCA" + }, + { + "siruta": "159614", + "name": "TULCEA" + }, + { + "siruta": "86133", + "name": "TULGHEŞ" + }, + { + "siruta": "178117", + "name": "TULNICI" + }, + { + "siruta": "77331", + "name": "TULUCEŞTI" + }, + { + "siruta": "105570", + "name": "TUNARI" + }, + { + "siruta": "124750", + "name": "TUPILAŢI" + }, + { + "siruta": "82555", + "name": "TURBUREA" + }, + { + "siruta": "82617", + "name": "TURCENI" + }, + { + "siruta": "78089", + "name": "TURCINEŞTI" + }, + { + "siruta": "161464", + "name": "TURCOAIA" + }, + { + "siruta": "55259", + "name": "TURDA" + }, + { + "siruta": "91688", + "name": "TURDAŞ" + }, + { + "siruta": "59764", + "name": "TURENI" + }, + { + "siruta": "64871", + "name": "TURIA" + }, + { + "siruta": "151683", + "name": "TURNU MAGURELE" + }, + { + "siruta": "145934", + "name": "TURNU ROŞU" + }, + { + "siruta": "54412", + "name": "TURNU RUIENI" + }, + { + "siruta": "139170", + "name": "TURŢ" + }, + { + "siruta": "139214", + "name": "TURULUNG" + }, + { + "siruta": "86188", + "name": "TUŞNAD" + }, + { + "siruta": "99922", + "name": "ŢUŢORA" + }, + { + "siruta": "166529", + "name": "TUTOVA" + }, + { + "siruta": "60721", + "name": "TUZLA" + }, + { + "siruta": "42101", + "name": "UCEA" + }, + { + "siruta": "19392", + "name": "UDA" + }, + { + "siruta": "155154", + "name": "UDA-CLOCOCIOV" + }, + { + "siruta": "150588", + "name": "UDEŞTI" + }, + { + "siruta": "31921", + "name": "UILEACU DE BEIUŞ" + }, + { + "siruta": "159142", + "name": "UIVAR" + }, + { + "siruta": "86222", + "name": "ULIEŞ" + }, + { + "siruta": "68976", + "name": "ULIEŞTI" + }, + { + "siruta": "150702", + "name": "ULMA" + }, + { + "siruta": "105605", + "name": "ULMENI" + }, + { + "siruta": "109265", + "name": "ULMENI" + }, + { + "siruta": "49894", + "name": "ULMENI" + }, + { + "siruta": "105623", + "name": "ULMI" + }, + { + "siruta": "65501", + "name": "ULMI" + }, + { + "siruta": "94606", + "name": "ULMU" + }, + { + "siruta": "44328", + "name": "ULMU" + }, + { + "siruta": "77402", + "name": "UMBRĂREŞTI" + }, + { + "siruta": "19560", + "name": "UNGHENI" + }, + { + "siruta": "119894", + "name": "UNGHENI" + }, + { + "siruta": "96003", + "name": "UNGHENI" + }, + { + "siruta": "42156", + "name": "UNGRA" + }, + { + "siruta": "59880", + "name": "UNGURAŞ" + }, + { + "siruta": "25932", + "name": "UNGURENI" + }, + { + "siruta": "39417", + "name": "UNGURENI" + }, + { + "siruta": "50549", + "name": "UNGURIU" + }, + { + "siruta": "94651", + "name": "UNIREA" + }, + { + "siruta": "8158", + "name": "UNIREA" + }, + { + "siruta": "44355", + "name": "UNIREA" + }, + { + "siruta": "74536", + "name": "UNIREA" + }, + { + "siruta": "39532", + "name": "UNŢENI" + }, + { + "siruta": "82733", + "name": "URDARI" + }, + { + "siruta": "124849", + "name": "URECHENI" + }, + { + "siruta": "26029", + "name": "URECHEŞTI" + }, + { + "siruta": "178279", + "name": "URECHEŞTI" + }, + { + "siruta": "87139", + "name": "URICANI" + }, + { + "siruta": "35269", + "name": "URIU" + }, + { + "siruta": "131620", + "name": "URLAŢI" + }, + { + "siruta": "35312", + "name": "URMENIŞ" + }, + { + "siruta": "129629", + "name": "URZICA" + }, + { + "siruta": "100683", + "name": "URZICENI" + }, + { + "siruta": "139250", + "name": "URZICENI" + }, + { + "siruta": "74554", + "name": "URZICUŢA" + }, + { + "siruta": "10765", + "name": "USUSĂU" + }, + { + "siruta": "161543", + "name": "VĂCĂRENI" + }, + { + "siruta": "69250", + "name": "VĂCĂREŞTI" + }, + { + "siruta": "39612", + "name": "VĂCULEŞTI" + }, + { + "siruta": "59942", + "name": "VAD" + }, + { + "siruta": "129718", + "name": "VĂDASTRA" + }, + { + "siruta": "129745", + "name": "VĂDĂSTRIŢA" + }, + { + "siruta": "44391", + "name": "VĂDENI" + }, + { + "siruta": "31976", + "name": "VADU CRIŞULUI" + }, + { + "siruta": "106648", + "name": "VADU IZEI" + }, + { + "siruta": "150766", + "name": "VADU MOLDOVEI" + }, + { + "siruta": "8229", + "name": "VADU MOŢILOR" + }, + { + "siruta": "49956", + "name": "VADU PAŞII" + }, + { + "siruta": "136269", + "name": "VADU SĂPAT" + }, + { + "siruta": "82779", + "name": "VĂGIULEŞTI" + }, + { + "siruta": "174021", + "name": "VAIDEENI" + }, + { + "siruta": "136198", + "name": "VÂLCĂNEŞTI" + }, + { + "siruta": "159482", + "name": "VALCANI" + }, + { + "siruta": "142952", + "name": "VALCĂU DE JOS" + }, + { + "siruta": "129987", + "name": "VÂLCELE" + }, + { + "siruta": "64942", + "name": "VÂLCELE" + }, + { + "siruta": "94731", + "name": "VÂLCELELE" + }, + { + "siruta": "50399", + "name": "VÂLCELELE" + }, + { + "siruta": "105712", + "name": "VALEA ARGOVEI" + }, + { + "siruta": "135949", + "name": "VALEA CĂLUGĂREASCĂ" + }, + { + "siruta": "109354", + "name": "VALEA CHIOARULUI" + }, + { + "siruta": "94688", + "name": "VALEA CIORII" + }, + { + "siruta": "64906", + "name": "VALEA CRIŞULUI" + }, + { + "siruta": "19631", + "name": "VALEA DANULUI" + }, + { + "siruta": "136107", + "name": "VALEA DOFTANEI" + }, + { + "siruta": "105776", + "name": "VALEA DRAGULUI" + }, + { + "siruta": "19695", + "name": "VALEA IAŞULUI" + }, + { + "siruta": "60026", + "name": "VALEA IERII" + }, + { + "siruta": "119974", + "name": "VALEA LARGĂ" + }, + { + "siruta": "32027", + "name": "VALEA LUI MIHAI" + }, + { + "siruta": "69063", + "name": "VALEA LUNGĂ" + }, + { + "siruta": "8354", + "name": "VALEA LUNGĂ" + }, + { + "siruta": "100353", + "name": "VALEA LUPULUI" + }, + { + "siruta": "105794", + "name": "VALEA MĂCRIŞULUI" + }, + { + "siruta": "174085", + "name": "VALEA MARE" + }, + { + "siruta": "69170", + "name": "VALEA MARE" + }, + { + "siruta": "65099", + "name": "VALEA MARE" + }, + { + "siruta": "129656", + "name": "VALEA MARE" + }, + { + "siruta": "13524", + "name": "VALEA MARE PRAVĂŢ" + }, + { + "siruta": "77475", + "name": "VALEA MĂRULUI" + }, + { + "siruta": "150891", + "name": "VALEA MOLDOVEI" + }, + { + "siruta": "161482", + "name": "VALEA NUCARILOR" + }, + { + "siruta": "50022", + "name": "VALEA RÂMNICULUI" + }, + { + "siruta": "50068", + "name": "VALEA SALCIEI" + }, + { + "siruta": "178313", + "name": "VALEA SĂRII" + }, + { + "siruta": "99968", + "name": "VALEA SEACĂ" + }, + { + "siruta": "26083", + "name": "VALEA SEACĂ" + }, + { + "siruta": "74581", + "name": "VALEA STANCIULUI" + }, + { + "siruta": "161561", + "name": "VALEA TEILOR" + }, + { + "siruta": "124885", + "name": "VALEA URSULUI" + }, + { + "siruta": "145961", + "name": "VALEA VIILOR" + }, + { + "siruta": "139287", + "name": "VALEA VINULUI" + }, + { + "siruta": "129763", + "name": "VĂLENI" + }, + { + "siruta": "166636", + "name": "VĂLENI" + }, + { + "siruta": "125123", + "name": "VĂLENI" + }, + { + "siruta": "69303", + "name": "VĂLENI-DÂMBOVIŢA" + }, + { + "siruta": "131817", + "name": "VĂLENII DE MUNTE" + }, + { + "siruta": "91937", + "name": "VĂLIŞOARA" + }, + { + "siruta": "54485", + "name": "VĂLIUG" + }, + { + "siruta": "63125", + "name": "VALU LUI TRAIAN" + }, + { + "siruta": "150935", + "name": "VAMA" + }, + { + "siruta": "139330", + "name": "VAMA" + }, + { + "siruta": "42183", + "name": "VAMA BUZĂULUI" + }, + { + "siruta": "113849", + "name": "VÂNĂTORI" + }, + { + "siruta": "75150", + "name": "VÂNĂTORI" + }, + { + "siruta": "100086", + "name": "VÂNĂTORI" + }, + { + "siruta": "178607", + "name": "VÂNĂTORI" + }, + { + "siruta": "120254", + "name": "VÂNĂTORI" + }, + { + "siruta": "125016", + "name": "VÂNĂTORI-NEAMŢ" + }, + { + "siruta": "105972", + "name": "VÂNĂTORII MICI" + }, + { + "siruta": "110232", + "name": "VÂNJU MARE" + }, + { + "siruta": "113894", + "name": "VÂNJULEŢ" + }, + { + "siruta": "54500", + "name": "VĂRĂDIA" + }, + { + "siruta": "12572", + "name": "VĂRĂDIA DE MUREŞ" + }, + { + "siruta": "105874", + "name": "VĂRĂŞTI" + }, + { + "siruta": "136134", + "name": "VĂRBILĂU" + }, + { + "siruta": "32090", + "name": "VÂRCIOROG" + }, + { + "siruta": "39694", + "name": "VÂRFU CÂMPULUI" + }, + { + "siruta": "69447", + "name": "VÂRFURI" + }, + { + "siruta": "12689", + "name": "VÂRFURILE" + }, + { + "siruta": "120076", + "name": "VĂRGATA" + }, + { + "siruta": "64997", + "name": "VÂRGHIŞ" + }, + { + "siruta": "159213", + "name": "VARIAŞ" + }, + { + "siruta": "77509", + "name": "VÂRLEZI" + }, + { + "siruta": "86311", + "name": "VĂRŞAG" + }, + { + "siruta": "143021", + "name": "VÂRŞOLŢ" + }, + { + "siruta": "178689", + "name": "VÂRTEŞCOIU" + }, + { + "siruta": "154932", + "name": "VÂRTOAPE" + }, + { + "siruta": "74732", + "name": "VÂRTOP" + }, + { + "siruta": "74750", + "name": "VÂRVORU DE JOS" + }, + { + "siruta": "27007", + "name": "VAŞCĂU" + }, + { + "siruta": "105829", + "name": "VASILAŢI" + }, + { + "siruta": "161945", + "name": "VASLUI" + }, + { + "siruta": "91795", + "name": "VAŢA DE JOS" + }, + { + "siruta": "120138", + "name": "VĂTAVA" + }, + { + "siruta": "146744", + "name": "VATRA DORNEI" + }, + { + "siruta": "150980", + "name": "VATRA MOLDOVIŢEI" + }, + { + "siruta": "105909", + "name": "VEDEA" + }, + { + "siruta": "19793", + "name": "VEDEA" + }, + { + "siruta": "154852", + "name": "VEDEA" + }, + { + "siruta": "74616", + "name": "VELA" + }, + { + "siruta": "74705", + "name": "VERBIŢA" + }, + { + "siruta": "151022", + "name": "VEREŞTI" + }, + { + "siruta": "129816", + "name": "VERGULEASA" + }, + { + "siruta": "54537", + "name": "VERMEŞ" + }, + { + "siruta": "50102", + "name": "VERNEŞTI" + }, + { + "siruta": "120174", + "name": "VEŢCA" + }, + { + "siruta": "91982", + "name": "VEŢEL" + }, + { + "siruta": "139358", + "name": "VETIŞ" + }, + { + "siruta": "166672", + "name": "VETRIŞOAIA" + }, + { + "siruta": "151077", + "name": "VICOVU DE JOS" + }, + { + "siruta": "151095", + "name": "VICOVU DE SUS" + }, + { + "siruta": "159259", + "name": "VICTOR VLAD DELAMARINA" + }, + { + "siruta": "44435", + "name": "VICTORIA" + }, + { + "siruta": "40465", + "name": "VICTORIA" + }, + { + "siruta": "100004", + "name": "VICTORIA" + }, + { + "siruta": "151905", + "name": "VIDELE" + }, + { + "siruta": "105936", + "name": "VIDRA" + }, + { + "siruta": "178377", + "name": "VIDRA" + }, + { + "siruta": "8425", + "name": "VIDRA" + }, + { + "siruta": "139394", + "name": "VIILE SATU MARE" + }, + { + "siruta": "120218", + "name": "VIIŞOARA" + }, + { + "siruta": "166707", + "name": "VIIŞOARA" + }, + { + "siruta": "32045", + "name": "VIIŞOARA" + }, + { + "siruta": "39658", + "name": "VIIŞOARA" + }, + { + "siruta": "154914", + "name": "VIIŞOARA" + }, + { + "siruta": "60062", + "name": "VIIŞOARA" + }, + { + "siruta": "109425", + "name": "VIMA MICĂ" + }, + { + "siruta": "166770", + "name": "VINDEREI" + }, + { + "siruta": "12643", + "name": "VINGA" + }, + { + "siruta": "50228", + "name": "VINTILĂ VODĂ" + }, + { + "siruta": "178475", + "name": "VINTILEASCA" + }, + { + "siruta": "8826", + "name": "VINŢU DE JOS" + }, + { + "siruta": "50326", + "name": "VIPEREŞTI" + }, + { + "siruta": "44462", + "name": "VIŞANI" + }, + { + "siruta": "109504", + "name": "VIŞEU DE JOS" + }, + { + "siruta": "106979", + "name": "VIŞEU DE SUS" + }, + { + "siruta": "129898", + "name": "VIŞINA" + }, + { + "siruta": "69330", + "name": "VIŞINA" + }, + { + "siruta": "130375", + "name": "VIŞINA NOUĂ" + }, + { + "siruta": "69394", + "name": "VIŞINEŞTI" + }, + { + "siruta": "42236", + "name": "VIŞTEA" + }, + { + "siruta": "153776", + "name": "VITĂNEŞTI" + }, + { + "siruta": "129914", + "name": "VITOMIREŞTI" + }, + { + "siruta": "178545", + "name": "VIZANTEA-LIVEZI" + }, + { + "siruta": "44505", + "name": "VIZIRU" + }, + { + "siruta": "94768", + "name": "VLAD ŢEPEŞ" + }, + { + "siruta": "113929", + "name": "VLĂDAIA" + }, + { + "siruta": "94795", + "name": "VLĂDENI" + }, + { + "siruta": "179711", + "name": "VLĂDENI" + }, + { + "siruta": "39738", + "name": "VLĂDENI" + }, + { + "siruta": "100148", + "name": "VLĂDENI" + }, + { + "siruta": "19999", + "name": "VLĂDEŞTI" + }, + { + "siruta": "77536", + "name": "VLĂDEŞTI" + }, + { + "siruta": "174156", + "name": "VLĂDEŞTI" + }, + { + "siruta": "130026", + "name": "VLĂDILA" + }, + { + "siruta": "82831", + "name": "VLADIMIR" + }, + { + "siruta": "9397", + "name": "VLADIMIRESCU" + }, + { + "siruta": "83749", + "name": "VLĂHIŢA" + }, + { + "siruta": "39792", + "name": "VLĂSINEŞTI" + }, + { + "siruta": "174218", + "name": "VOICEŞTI" + }, + { + "siruta": "42307", + "name": "VOILA" + }, + { + "siruta": "174254", + "name": "VOINEASA" + }, + { + "siruta": "130062", + "name": "VOINEASA" + }, + { + "siruta": "69526", + "name": "VOINEŞTI" + }, + { + "siruta": "166869", + "name": "VOINEŞTI" + }, + { + "siruta": "100219", + "name": "VOINEŞTI" + }, + { + "siruta": "159339", + "name": "VOITEG" + }, + { + "siruta": "151558", + "name": "VOITINEL" + }, + { + "siruta": "120316", + "name": "VOIVODENI" + }, + { + "siruta": "113974", + "name": "VOLOIAC" + }, + { + "siruta": "151120", + "name": "VOLOVĂŢ" + }, + { + "siruta": "179551", + "name": "VOLUNTARI" + }, + { + "siruta": "39836", + "name": "VORNICENI" + }, + { + "siruta": "39872", + "name": "VORONA" + }, + { + "siruta": "92097", + "name": "VORŢA" + }, + { + "siruta": "86339", + "name": "VOŞLĂBENI" + }, + { + "siruta": "178750", + "name": "VRÂNCIOAIA" + }, + { + "siruta": "54573", + "name": "VRANI" + }, + { + "siruta": "114079", + "name": "VRATA" + }, + { + "siruta": "87175", + "name": "VULCAN" + }, + { + "siruta": "42398", + "name": "VULCAN" + }, + { + "siruta": "69615", + "name": "VULCANA-BĂI" + }, + { + "siruta": "179640", + "name": "VULCANA-PANDELE" + }, + { + "siruta": "130124", + "name": "VULPENI" + }, + { + "siruta": "26118", + "name": "VULTURENI" + }, + { + "siruta": "60099", + "name": "VULTURENI" + }, + { + "siruta": "130231", + "name": "VULTUREŞTI" + }, + { + "siruta": "20055", + "name": "VULTUREŞTI" + }, + { + "siruta": "166985", + "name": "VULTUREŞTI" + }, + { + "siruta": "151157", + "name": "VULTUREŞTI" + }, + { + "siruta": "178821", + "name": "VULTURU" + }, + { + "siruta": "63170", + "name": "VULTURU" + }, + { + "siruta": "145998", + "name": "VURPĂR" + }, + { + "siruta": "167035", + "name": "VUTCANI" + }, + { + "siruta": "65048", + "name": "ZĂBALA" + }, + { + "siruta": "12778", + "name": "ZĂBRANI" + }, + { + "siruta": "12938", + "name": "ZĂDĂRENI" + }, + { + "siruta": "120343", + "name": "ZAGĂR" + }, + { + "siruta": "65011", + "name": "ZAGON" + }, + { + "siruta": "35429", + "name": "ZAGRA" + }, + { + "siruta": "139704", + "name": "ZALĂU" + }, + { + "siruta": "143067", + "name": "ZALHA" + }, + { + "siruta": "92177", + "name": "ZAM" + }, + { + "siruta": "154978", + "name": "ZÂMBREASCA" + }, + { + "siruta": "151246", + "name": "ZAMOSTEA" + }, + { + "siruta": "125061", + "name": "ZĂNEŞTI" + }, + { + "siruta": "167071", + "name": "ZĂPODENI" + }, + { + "siruta": "12812", + "name": "ZĂRAND" + }, + { + "siruta": "50415", + "name": "ZĂRNEŞTI" + }, + { + "siruta": "40492", + "name": "ZĂRNEŞTI" + }, + { + "siruta": "174290", + "name": "ZĂTRENI" + }, + { + "siruta": "120370", + "name": "ZAU DE CÂMPIE" + }, + { + "siruta": "44532", + "name": "ZĂVOAIA" + }, + { + "siruta": "54617", + "name": "ZĂVOI" + }, + { + "siruta": "26289", + "name": "ZEMEŞ" + }, + { + "siruta": "12849", + "name": "ZERIND" + }, + { + "siruta": "86366", + "name": "ZETEA" + }, + { + "siruta": "50479", + "name": "ZIDURI" + }, + { + "siruta": "12876", + "name": "ZIMANDU NOU" + }, + { + "siruta": "143147", + "name": "ZIMBOR" + }, + { + "siruta": "151978", + "name": "ZIMNICEA" + }, + { + "siruta": "1936", + "name": "ZLATNA" + }, + { + "siruta": "167179", + "name": "ZORLENI" + }, + { + "siruta": "54699", + "name": "ZORLENŢU MARE" + }, + { + "siruta": "151344", + "name": "ZVORIŞTEA" + } +] \ No newline at end of file diff --git a/src/app/api/eterra/export-bundle/route.ts b/src/app/api/eterra/export-bundle/route.ts new file mode 100644 index 0000000..366daeb --- /dev/null +++ b/src/app/api/eterra/export-bundle/route.ts @@ -0,0 +1,881 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import JSZip from "jszip"; +import { EterraClient } from "@/modules/parcel-sync/services/eterra-client"; +import { findLayerById } from "@/modules/parcel-sync/services/eterra-layers"; +import { esriToGeojson } from "@/modules/parcel-sync/services/esri-geojson"; +import { getEpsg3844Wkt } from "@/modules/parcel-sync/services/reproject"; +import { buildGpkg } from "@/modules/parcel-sync/services/gpkg-export"; +import { + clearProgress, + setProgress, +} from "@/modules/parcel-sync/services/progress-store"; + +export const runtime = "nodejs"; +export const dynamic = "force-dynamic"; + +type ExportBundleRequest = { + username?: string; + password?: string; + siruta?: string | number; + jobId?: string; + mode?: "base" | "magic"; +}; + +const validate = (body: ExportBundleRequest) => { + const username = String(body.username ?? "").trim(); + const password = String(body.password ?? "").trim(); + const siruta = String(body.siruta ?? "").trim(); + const jobId = body.jobId ? String(body.jobId).trim() : undefined; + const mode = body.mode === "magic" ? "magic" : "base"; + + if (!username) throw new Error("Email is required"); + if (!password) throw new Error("Password is required"); + if (!/^\d+$/.test(siruta)) throw new Error("SIRUTA must be numeric"); + + return { username, password, siruta, jobId, mode }; +}; + +const sleep = (ms: number) => + new Promise((resolve) => setTimeout(resolve, ms)); + +const scheduleClear = (jobId?: string) => { + if (!jobId) return; + setTimeout(() => clearProgress(jobId), 60_000); +}; + +const isRetryable = (error: unknown) => { + const err = error as { response?: { status?: number }; code?: string }; + const status = err?.response?.status ?? 0; + if ([429, 500, 502, 503, 504].includes(status)) return true; + return err?.code === "ECONNRESET" || err?.code === "ETIMEDOUT"; +}; + +const formatNumber = (value: number) => + Number.isFinite(value) ? value.toFixed(2).replace(/\.00$/, "") : ""; + +const normalizeId = (value: unknown) => { + if (value === null || value === undefined) return ""; + const text = String(value).trim(); + if (!text) return ""; + return text.replace(/\.0$/, ""); +}; + +const normalizeCadRef = (value: unknown) => + normalizeId(value).replace(/\s+/g, "").toUpperCase(); + +const baseCadRef = (value: unknown) => { + const ref = normalizeCadRef(value); + if (!ref) return ""; + return ref.includes("-") ? ref.split("-")[0]! : ref; +}; + +const makeWorkspaceKey = (workspaceId: unknown, immovableId: unknown) => { + const ws = normalizeId(workspaceId); + const im = normalizeId(immovableId); + if (!ws || !im) return ""; + return `${ws}:${im}`; +}; + +export async function POST(req: Request) { + let jobId: string | undefined; + let message: string | undefined; + let phase = "Initializare"; + let note: string | undefined; + let status: "running" | "done" | "error" = "running"; + let downloaded = 0; + let total: number | undefined; + let completedWeight = 0; + let currentWeight = 0; + let phaseTotal: number | undefined; + let phaseCurrent: number | undefined; + + const pushProgress = () => { + if (!jobId) return; + setProgress({ + jobId, + downloaded, + total, + status, + phase, + note, + message, + phaseCurrent, + phaseTotal, + }); + }; + + const updateOverall = (fraction = 0) => { + const overall = completedWeight + currentWeight * fraction; + const clipped = Math.min(100, Math.max(0, overall)); + downloaded = Number(clipped.toFixed(1)); + total = 100; + pushProgress(); + }; + + const setPhaseState = ( + next: string, + weight: number, + nextTotal?: number, + ) => { + phase = next; + currentWeight = weight; + phaseTotal = nextTotal; + phaseCurrent = nextTotal ? 0 : undefined; + note = undefined; + updateOverall(0); + }; + + const updatePhaseProgress = (value: number, nextTotal?: number) => { + if (typeof nextTotal === "number") phaseTotal = nextTotal; + if (phaseTotal && phaseTotal > 0) { + phaseCurrent = value; + updateOverall(Math.min(1, value / phaseTotal)); + } else { + phaseCurrent = undefined; + updateOverall(0); + } + }; + + const finishPhase = () => { + completedWeight += currentWeight; + currentWeight = 0; + phaseTotal = undefined; + phaseCurrent = undefined; + note = undefined; + updateOverall(0); + }; + + const withHeartbeat = async (task: () => Promise) => { + let tick = 0.1; + updatePhaseProgress(tick, 1); + const interval = setInterval(() => { + tick = Math.min(0.9, tick + 0.05); + updatePhaseProgress(tick, 1); + }, 1200); + try { + return await task(); + } finally { + clearInterval(interval); + } + }; + + try { + const body = (await req.json()) as ExportBundleRequest; + const validated = validate(body); + jobId = validated.jobId; + pushProgress(); + + const terenuriLayer = findLayerById("TERENURI_ACTIVE"); + const cladiriLayer = findLayerById("CLADIRI_ACTIVE"); + if (!terenuriLayer || !cladiriLayer) + throw new Error("Missing layer configuration"); + + const weights = + validated.mode === "magic" + ? { + auth: 3, + count: 2, + terenuri: 23, + cladiri: 13, + detalii: 34, + gpkgT: 8, + gpkgC: 7, + gpkgM: 5, + zip: 5, + } + : { + auth: 3, + count: 2, + terenuri: 40, + cladiri: 22, + detalii: 0, + gpkgT: 10, + gpkgC: 10, + gpkgM: 0, + zip: 13, + }; + + /* Auth */ + setPhaseState("Autentificare", weights.auth, 1); + const client = await EterraClient.create( + validated.username, + validated.password, + { timeoutMs: 120_000 }, + ); + updatePhaseProgress(1, 1); + finishPhase(); + + /* Count */ + const safeCount = async (layerId: "terenuri" | "cladiri") => { + try { + return await client.countLayer( + layerId === "terenuri" ? terenuriLayer : cladiriLayer, + validated.siruta, + ); + } catch (error) { + const msg = + error instanceof Error ? error.message : "Unexpected server error"; + if (msg.toLowerCase().includes("count unavailable")) return undefined; + throw error; + } + }; + + setPhaseState("Numarare", weights.count, 2); + const terenuriCount = await safeCount("terenuri"); + updatePhaseProgress(1, 2); + const cladiriCount = await safeCount("cladiri"); + updatePhaseProgress(2, 2); + finishPhase(); + + const calcPageSize = (cnt?: number) => { + if (!cnt || cnt <= 0) return 1000; + if (cnt <= 200) return Math.max(50, Math.ceil(cnt / 2)); + return Math.min(1000, Math.max(200, Math.ceil(cnt / 8))); + }; + + /* Download terenuri */ + setPhaseState("Descarcare terenuri", weights.terenuri, terenuriCount); + const terenuriFeatures = await client.fetchAllLayer( + terenuriLayer, + validated.siruta, + { + total: terenuriCount, + pageSize: calcPageSize(terenuriCount), + delayMs: 250, + onProgress: (count, totalCount) => + updatePhaseProgress(count, totalCount), + }, + ); + finishPhase(); + + /* Download cladiri */ + setPhaseState("Descarcare cladiri", weights.cladiri, cladiriCount); + const cladiriFeatures = await client.fetchAllLayer( + cladiriLayer, + validated.siruta, + { + total: cladiriCount, + pageSize: calcPageSize(cladiriCount), + delayMs: 250, + onProgress: (count, totalCount) => + updatePhaseProgress(count, totalCount), + }, + ); + finishPhase(); + + const terenuriGeo = esriToGeojson(terenuriFeatures); + const cladiriGeo = esriToGeojson(cladiriFeatures); + const srsWkt = getEpsg3844Wkt(); + const terenuriFields = await client.getLayerFieldNames(terenuriLayer); + const cladiriFields = await client.getLayerFieldNames(cladiriLayer); + + let terenuriGpkg: Buffer | null = null; + let cladiriGpkg: Buffer | null = null; + let magicGpkg: Buffer | null = null; + let csvContent: string | null = null; + let hasBuildingCount = 0; + let legalBuildingCount = 0; + + if (validated.mode === "magic") { + /* ── Magic mode: enrich parcels ─────────────────────────── */ + setPhaseState("Detalii parcele", weights.detalii, terenuriCount); + const immAppsCache = new Map(); + const folCache = new Map(); + + let lastRequest = 0; + const minInterval = 250; + const throttled = async (fn: () => Promise) => { + let attempt = 0; + while (true) { + const now = Date.now(); + const wait = Math.max(0, lastRequest + minInterval - now); + if (wait > 0) { + note = `Throttling ${Math.ceil(wait)}ms`; + pushProgress(); + await sleep(wait); + } + try { + const result = await fn(); + lastRequest = Date.now(); + note = undefined; + pushProgress(); + return result; + } catch (error) { + if (!isRetryable(error) || attempt >= 2) throw error; + attempt += 1; + const backoff = Math.min(5000, 1000 * attempt); + note = `Backoff ${backoff}ms (retry ${attempt})`; + pushProgress(); + await sleep(backoff); + } + } + }; + + const pickApplication = (entries: any[], applicationId?: number) => { + if (!entries.length) return null; + if (applicationId) { + const match = entries.find( + (entry: any) => entry?.applicationId === applicationId, + ); + if (match) return match; + } + return ( + entries + .filter((entry: any) => entry?.dataCerere) + .sort( + (a: any, b: any) => (b.dataCerere ?? 0) - (a.dataCerere ?? 0), + )[0] ?? entries[0] + ); + }; + + const normalizeIntravilan = (values: string[]) => { + const normalized = values + .map((v) => String(v ?? "").trim().toLowerCase()) + .filter(Boolean); + const unique = new Set(normalized); + if (!unique.size) return "-"; + if (unique.size === 1) + return unique.has("da") ? "Da" : unique.has("nu") ? "Nu" : "Mixt"; + return "Mixt"; + }; + + const formatCategories = (entries: any[]) => { + const map = new Map(); + for (const entry of entries) { + const key = String(entry?.categorieFolosinta ?? "").trim(); + if (!key) continue; + const area = Number(entry?.suprafata ?? 0); + map.set( + key, + (map.get(key) ?? 0) + (Number.isFinite(area) ? area : 0), + ); + } + return Array.from(map.entries()) + .map(([k, a]) => `${k}:${formatNumber(a)}`) + .join("; "); + }; + + const formatAddress = (item?: any) => { + const address = item?.immovableAddresses?.[0]?.address ?? null; + if (!address) return "-"; + const parts: string[] = []; + if (address.addressDescription) + parts.push(address.addressDescription); + if (address.street) parts.push(`Str. ${address.street}`); + if (address.buildingNo) parts.push(`Nr. ${address.buildingNo}`); + if (address.locality?.name) parts.push(address.locality.name); + return parts.length ? parts.join(", ") : "-"; + }; + + /* Building cross-ref map */ + const buildingMap = new Map< + string, + { has: boolean; legal: boolean } + >(); + for (const feature of cladiriFeatures) { + const attrs = feature.attributes ?? {}; + const immovableId = + attrs.IMMOVABLE_ID ?? attrs.IMOVABLE_ID ?? null; + const workspaceId = attrs.WORKSPACE_ID ?? null; + const baseRef = baseCadRef( + attrs.NATIONAL_CADASTRAL_REFERENCE ?? "", + ); + const isLegal = + Number(attrs.IS_LEGAL ?? 0) === 1 || + String(attrs.IS_LEGAL ?? "").toLowerCase() === "true"; + const add = (key: string) => { + if (!key) return; + const existing = buildingMap.get(key) ?? { + has: false, + legal: false, + }; + existing.has = true; + if (isLegal) existing.legal = true; + buildingMap.set(key, existing); + }; + const immKey = normalizeId(immovableId); + const wKey = makeWorkspaceKey(workspaceId, immovableId); + if (immKey) add(immKey); + if (wKey) add(wKey); + if (baseRef) add(baseRef); + } + + /* Fetch immovable list */ + const immovableListById = new Map(); + const immovableListByCad = new Map(); + const docByImmovable = new Map(); + const ownersByLandbook = new Map>(); + + const addOwner = (landbook: string, name: string) => { + if (!landbook || !name) return; + const existing = + ownersByLandbook.get(landbook) ?? new Set(); + existing.add(name); + ownersByLandbook.set(landbook, existing); + }; + + let listPage = 0; + let listTotalPages = 1; + let includeInscrisCF = true; + while (listPage < listTotalPages) { + const listResponse = await throttled(() => + client.fetchImmovableListByAdminUnit( + 65, + validated.siruta, + listPage, + 200, + includeInscrisCF, + ), + ); + if ( + listPage === 0 && + !(listResponse?.content ?? []).length && + includeInscrisCF + ) { + includeInscrisCF = false; + listPage = 0; + listTotalPages = 1; + continue; + } + listTotalPages = + typeof listResponse?.totalPages === "number" + ? listResponse.totalPages + : listTotalPages; + (listResponse?.content ?? []).forEach((item: any) => { + const idKey = normalizeId(item?.immovablePk); + if (idKey) immovableListById.set(idKey, item); + const cadKey = normalizeCadRef( + item?.identifierDetails ?? "", + ); + if (cadKey) immovableListByCad.set(cadKey, item); + }); + listPage += 1; + } + + /* Fetch documentation data */ + const immovableIds = Array.from(immovableListById.keys()); + const docBatchSize = 50; + for (let i = 0; i < immovableIds.length; i += docBatchSize) { + const batch = immovableIds.slice(i, i + docBatchSize); + const docResponse = await throttled(() => + client.fetchDocumentationData(65, batch), + ); + (docResponse?.immovables ?? []).forEach((item: any) => { + const idKey = normalizeId(item?.immovablePk); + if (idKey) docByImmovable.set(idKey, item); + }); + (docResponse?.partTwoRegs ?? []).forEach((item: any) => { + if ( + String(item?.nodeType ?? "").toUpperCase() === "P" && + item?.landbookIE + ) { + const name = String(item?.nodeName ?? "").trim(); + if (name) addOwner(String(item.landbookIE), name); + } + }); + } + + /* Build CSV + detail map */ + const csvRows: string[] = []; + const headers = [ + "OBJECTID", + "IMMOVABLE_ID", + "APPLICATION_ID", + "NATIONAL_CADASTRAL_REFERENCE", + "NR_CAD", + "AREA_VALUE", + "NR_CF", + "NR_CF_VECHI", + "NR_TOPO", + "ADRESA", + "PROPRIETARI", + "SUPRAFATA_2D", + "SUPRAFATA_R", + "SOLICITANT", + "INTRAVILAN", + "CATEGORIE_FOLOSINTA", + "HAS_BUILDING", + "BUILD_LEGAL", + ]; + csvRows.push(headers.join(",")); + + const detailsByObjectId = new Map< + string, + Record + >(); + + for (let index = 0; index < terenuriFeatures.length; index += 1) { + const feature = terenuriFeatures[index]!; + const attrs = feature.attributes ?? {}; + const objectId = attrs.OBJECTID ?? ""; + const immovableId = attrs.IMMOVABLE_ID ?? ""; + const workspaceId = attrs.WORKSPACE_ID ?? ""; + const applicationId = (attrs.APPLICATION_ID as number) ?? null; + + let solicitant = "-"; + let intravilan = "-"; + let categorie = "-"; + let proprietari = "-"; + let nrCF = "-"; + let nrCFVechi = "-"; + let nrTopo = "-"; + let addressText = "-"; + + if (immovableId && workspaceId) { + const appKey = `${workspaceId}:${immovableId}`; + let apps = immAppsCache.get(appKey); + if (!apps) { + apps = await throttled(() => + client.fetchImmAppsByImmovable( + immovableId as string | number, + workspaceId as string | number, + ), + ); + immAppsCache.set(appKey, apps); + } + const chosen = pickApplication( + apps, + Number(applicationId ?? 0), + ); + const appId = + chosen?.applicationId ?? + (applicationId ? Number(applicationId) : null); + solicitant = + chosen?.solicitant ?? chosen?.deponent ?? solicitant; + + if (appId) { + const folKey = `${workspaceId}:${immovableId}:${appId}`; + let fol = folCache.get(folKey); + if (!fol) { + fol = await throttled(() => + client.fetchParcelFolosinte( + workspaceId as string | number, + immovableId as string | number, + appId, + ), + ); + folCache.set(folKey, fol); + } + intravilan = normalizeIntravilan( + fol.map((item: any) => item?.intravilan ?? ""), + ); + categorie = formatCategories(fol); + } + } + + const cadRefRaw = (attrs.NATIONAL_CADASTRAL_REFERENCE ?? + "") as string; + const cadRef = normalizeCadRef(cadRefRaw); + const immKey = normalizeId(immovableId); + const listItem = + (immKey ? immovableListById.get(immKey) : undefined) ?? + (cadRef ? immovableListByCad.get(cadRef) : undefined); + const docKey = listItem?.immovablePk + ? normalizeId(listItem.immovablePk) + : ""; + const docItem = docKey + ? docByImmovable.get(docKey) + : undefined; + const landbookIE = docItem?.landbookIE ?? ""; + const owners = + landbookIE && ownersByLandbook.get(String(landbookIE)) + ? Array.from( + ownersByLandbook.get(String(landbookIE)) ?? [], + ) + : []; + const ownersByCad = + cadRefRaw && ownersByLandbook.get(String(cadRefRaw)) + ? Array.from( + ownersByLandbook.get(String(cadRefRaw)) ?? [], + ) + : []; + proprietari = + Array.from(new Set([...owners, ...ownersByCad])).join( + "; ", + ) || proprietari; + + nrCF = + docItem?.landbookIE || + listItem?.paperLbNo || + listItem?.paperCadNo || + nrCF; + const nrCFVechiRaw = + listItem?.paperLbNo || listItem?.paperCadNo || ""; + nrCFVechi = + docItem?.landbookIE && nrCFVechiRaw !== nrCF + ? nrCFVechiRaw + : nrCFVechi; + nrTopo = + listItem?.topNo || + docItem?.topNo || + listItem?.paperCadNo || + nrTopo; + addressText = listItem + ? formatAddress(listItem) + : addressText; + + const parcelRef = baseCadRef(cadRefRaw); + const wKey = makeWorkspaceKey(workspaceId, immovableId); + const build = + (immKey ? buildingMap.get(immKey) : undefined) ?? + (wKey ? buildingMap.get(wKey) : undefined) ?? + (parcelRef ? buildingMap.get(parcelRef) : undefined) ?? { + has: false, + legal: false, + }; + const hasBuilding = build.has ? 1 : 0; + const buildLegal = build.has ? (build.legal ? 1 : 0) : 0; + if (hasBuilding) hasBuildingCount += 1; + if (buildLegal === 1) legalBuildingCount += 1; + + const areaValue = + typeof attrs.AREA_VALUE === "number" ? attrs.AREA_VALUE : null; + const detailRecord = { + NR_CAD: cadRefRaw, + NR_CF: nrCF, + NR_CF_VECHI: nrCFVechi, + NR_TOPO: nrTopo, + ADRESA: addressText, + PROPRIETARI: proprietari, + SUPRAFATA_2D: + areaValue !== null ? Number(areaValue.toFixed(2)) : "", + SUPRAFATA_R: + areaValue !== null ? Math.round(areaValue) : "", + SOLICITANT: solicitant, + INTRAVILAN: intravilan, + CATEGORIE_FOLOSINTA: categorie, + HAS_BUILDING: hasBuilding, + BUILD_LEGAL: buildLegal, + }; + detailsByObjectId.set(String(objectId), detailRecord); + + const row = [ + objectId, + immovableId, + applicationId ?? "", + attrs.NATIONAL_CADASTRAL_REFERENCE ?? "", + cadRefRaw, + attrs.AREA_VALUE ?? "", + nrCF, + nrCFVechi, + nrTopo, + `"${String(addressText).replace(/"/g, '""')}"`, + `"${String(proprietari).replace(/"/g, '""')}"`, + areaValue !== null ? areaValue.toFixed(2) : "", + areaValue !== null ? Math.round(areaValue) : "", + `"${String(solicitant).replace(/"/g, '""')}"`, + intravilan, + `"${String(categorie).replace(/"/g, '""')}"`, + hasBuilding, + buildLegal, + ]; + csvRows.push(row.join(",")); + + if (index % 10 === 0) + updatePhaseProgress(index + 1, terenuriCount); + } + + updatePhaseProgress(terenuriFeatures.length, terenuriCount); + finishPhase(); + + csvContent = csvRows.join("\n"); + + /* GPKG terenuri */ + setPhaseState("GPKG terenuri", weights.gpkgT, 1); + terenuriGpkg = await withHeartbeat(() => + buildGpkg({ + srsId: 3844, + srsWkt, + layers: [ + { + name: "TERENURI_ACTIVE", + fields: terenuriFields, + features: terenuriGeo.features, + }, + ], + }), + ); + updatePhaseProgress(1, 1); + finishPhase(); + + /* GPKG cladiri */ + setPhaseState("GPKG cladiri", weights.gpkgC, 1); + cladiriGpkg = await withHeartbeat(() => + buildGpkg({ + srsId: 3844, + srsWkt, + layers: [ + { + name: "CLADIRI_ACTIVE", + fields: cladiriFields, + features: cladiriGeo.features, + }, + ], + }), + ); + updatePhaseProgress(1, 1); + finishPhase(); + + /* GPKG magic */ + setPhaseState("GPKG magic", weights.gpkgM, 1); + const magicFields = Array.from( + new Set([ + ...terenuriFields, + "NR_CAD", + "NR_CF", + "NR_CF_VECHI", + "NR_TOPO", + "ADRESA", + "PROPRIETARI", + "SUPRAFATA_2D", + "SUPRAFATA_R", + "SOLICITANT", + "INTRAVILAN", + "CATEGORIE_FOLOSINTA", + "HAS_BUILDING", + "BUILD_LEGAL", + ]), + ); + const magicFeatures = terenuriGeo.features.map((feature) => { + const objectId = String( + feature.properties?.OBJECTID ?? "", + ); + const extra = detailsByObjectId.get(objectId) ?? {}; + return { + ...feature, + properties: { ...feature.properties, ...extra }, + }; + }); + magicGpkg = await withHeartbeat(() => + buildGpkg({ + srsId: 3844, + srsWkt, + layers: [ + { + name: "TERENURI_MAGIC", + fields: magicFields, + features: magicFeatures, + }, + ], + }), + ); + updatePhaseProgress(1, 1); + finishPhase(); + } else { + /* ── Base mode ──────────────────────────────────────────── */ + setPhaseState("GPKG terenuri", weights.gpkgT, 1); + terenuriGpkg = await withHeartbeat(() => + buildGpkg({ + srsId: 3844, + srsWkt, + layers: [ + { + name: "TERENURI_ACTIVE", + fields: terenuriFields, + features: terenuriGeo.features, + }, + ], + }), + ); + updatePhaseProgress(1, 1); + finishPhase(); + + setPhaseState("GPKG cladiri", weights.gpkgC, 1); + cladiriGpkg = await withHeartbeat(() => + buildGpkg({ + srsId: 3844, + srsWkt, + layers: [ + { + name: "CLADIRI_ACTIVE", + fields: cladiriFields, + features: cladiriGeo.features, + }, + ], + }), + ); + updatePhaseProgress(1, 1); + finishPhase(); + } + + /* ZIP */ + setPhaseState("Comprimare ZIP", weights.zip, 1); + const zip = new JSZip(); + if (!terenuriGpkg || !cladiriGpkg) + throw new Error("Failed to build GeoPackage files"); + zip.file("terenuri.gpkg", terenuriGpkg); + zip.file("cladiri.gpkg", cladiriGpkg); + + const report: Record = { + siruta: validated.siruta, + generatedAt: new Date().toISOString(), + terenuri: { + count: terenuriFeatures.length, + expected: terenuriCount ?? null, + }, + cladiri: { + count: cladiriFeatures.length, + expected: cladiriCount ?? null, + }, + }; + if (validated.mode === "magic" && magicGpkg && csvContent) { + zip.file("terenuri_magic.gpkg", magicGpkg); + zip.file("terenuri_complet.csv", csvContent); + report.magic = { + csvRows: csvContent.split("\n").length - 1, + hasBuildingCount, + legalBuildingCount, + }; + } + zip.file("export_report.json", JSON.stringify(report, null, 2)); + const zipBuffer = await withHeartbeat(() => + zip.generateAsync({ type: "nodebuffer", compression: "STORE" }), + ); + updatePhaseProgress(1, 1); + finishPhase(); + + /* Done */ + const terenuriLabel = + typeof terenuriCount === "number" + ? `${terenuriFeatures.length}/${terenuriCount}` + : `${terenuriFeatures.length}/?`; + const cladiriLabel = + typeof cladiriCount === "number" + ? `${cladiriFeatures.length}/${cladiriCount}` + : `${cladiriFeatures.length}/?`; + message = `Finalizat 100% · Terenuri ${terenuriLabel} · Cladiri ${cladiriLabel}`; + status = "done"; + phase = "Finalizat"; + note = undefined; + pushProgress(); + scheduleClear(jobId); + + const filename = + validated.mode === "magic" + ? `eterra_uat_${validated.siruta}_magic.zip` + : `eterra_uat_${validated.siruta}_terenuri_cladiri.zip`; + return new Response(new Uint8Array(zipBuffer), { + headers: { + "Content-Type": "application/zip", + "Content-Disposition": `attachment; filename="${filename}"`, + }, + }); + } catch (error) { + const errMessage = + error instanceof Error ? error.message : "Unexpected server error"; + status = "error"; + message = errMessage; + note = undefined; + pushProgress(); + scheduleClear(jobId); + const lower = errMessage.toLowerCase(); + const statusCode = + lower.includes("login failed") || lower.includes("session") + ? 401 + : 400; + return new Response(JSON.stringify({ error: errMessage }), { + status: statusCode, + headers: { "Content-Type": "application/json" }, + }); + } +} diff --git a/src/app/api/eterra/export-layer-gpkg/route.ts b/src/app/api/eterra/export-layer-gpkg/route.ts new file mode 100644 index 0000000..97b5c46 --- /dev/null +++ b/src/app/api/eterra/export-layer-gpkg/route.ts @@ -0,0 +1,285 @@ +import { EterraClient } from "@/modules/parcel-sync/services/eterra-client"; +import { findLayerById } from "@/modules/parcel-sync/services/eterra-layers"; +import { esriToGeojson } from "@/modules/parcel-sync/services/esri-geojson"; +import { getEpsg3844Wkt } from "@/modules/parcel-sync/services/reproject"; +import { buildGpkg } from "@/modules/parcel-sync/services/gpkg-export"; +import { fetchUatGeometry } from "@/modules/parcel-sync/services/uat-geometry"; +import { + clearProgress, + setProgress, +} from "@/modules/parcel-sync/services/progress-store"; + +export const runtime = "nodejs"; +export const dynamic = "force-dynamic"; + +type ExportLayerRequest = { + username?: string; + password?: string; + siruta?: string | number; + layerId?: string; + jobId?: string; +}; + +const validate = (body: ExportLayerRequest) => { + const username = String(body.username ?? "").trim(); + const password = String(body.password ?? "").trim(); + const siruta = String(body.siruta ?? "").trim(); + const layerId = String(body.layerId ?? "").trim(); + const jobId = body.jobId ? String(body.jobId).trim() : undefined; + + if (!username) throw new Error("Email is required"); + if (!password) throw new Error("Password is required"); + if (!/^\d+$/.test(siruta)) throw new Error("SIRUTA must be numeric"); + if (!layerId) throw new Error("Layer ID missing"); + + return { username, password, siruta, layerId, jobId }; +}; + +const scheduleClear = (jobId?: string) => { + if (!jobId) return; + setTimeout(() => clearProgress(jobId), 60_000); +}; + +export async function POST(req: Request) { + let jobId: string | undefined; + let message: string | undefined; + let phase = "Initializare"; + let note: string | undefined; + let status: "running" | "done" | "error" = "running"; + let downloaded = 0; + let total: number | undefined; + let completedWeight = 0; + let currentWeight = 0; + let phaseTotal: number | undefined; + let phaseCurrent: number | undefined; + + const pushProgress = () => { + if (!jobId) return; + setProgress({ + jobId, + downloaded, + total, + status, + phase, + note, + message, + phaseCurrent, + phaseTotal, + }); + }; + + const updateOverall = (fraction = 0) => { + const overall = completedWeight + currentWeight * fraction; + downloaded = Number(Math.min(100, Math.max(0, overall)).toFixed(1)); + total = 100; + pushProgress(); + }; + + const setPhaseState = ( + next: string, + weight: number, + nextTotal?: number, + ) => { + phase = next; + currentWeight = weight; + phaseTotal = nextTotal; + phaseCurrent = nextTotal ? 0 : undefined; + note = undefined; + updateOverall(0); + }; + + const updatePhaseProgress = (value: number, nextTotal?: number) => { + if (typeof nextTotal === "number") phaseTotal = nextTotal; + if (phaseTotal && phaseTotal > 0) { + phaseCurrent = value; + updateOverall(Math.min(1, value / phaseTotal)); + } else { + phaseCurrent = undefined; + updateOverall(0); + } + }; + + const finishPhase = () => { + completedWeight += currentWeight; + currentWeight = 0; + phaseTotal = undefined; + phaseCurrent = undefined; + note = undefined; + updateOverall(0); + }; + + const withHeartbeat = async (task: () => Promise) => { + let tick = 0.1; + updatePhaseProgress(tick, 1); + const interval = setInterval(() => { + tick = Math.min(0.9, tick + 0.05); + updatePhaseProgress(tick, 1); + }, 1200); + try { + return await task(); + } finally { + clearInterval(interval); + } + }; + + try { + const body = (await req.json()) as ExportLayerRequest; + const validated = validate(body); + jobId = validated.jobId; + pushProgress(); + + const layer = findLayerById(validated.layerId); + if (!layer) throw new Error("Layer not configured"); + + const weights = { + auth: 5, + count: 5, + download: 70, + gpkg: 15, + finalize: 5, + }; + + /* Auth */ + setPhaseState("Autentificare", weights.auth, 1); + const client = await EterraClient.create( + validated.username, + validated.password, + { timeoutMs: 120_000 }, + ); + updatePhaseProgress(1, 1); + finishPhase(); + + /* Count */ + let geometry; + setPhaseState("Numarare", weights.count, 2); + let count: number | undefined; + try { + if (layer.spatialFilter) { + geometry = await fetchUatGeometry(client, validated.siruta); + count = await client.countLayerByGeometry(layer, geometry); + } else { + count = await client.countLayer(layer, validated.siruta); + } + } catch (error) { + const msg = + error instanceof Error ? error.message : "Count error"; + if (!msg.toLowerCase().includes("count unavailable")) throw error; + } + updatePhaseProgress(2, 2); + finishPhase(); + + if (layer.spatialFilter && !geometry) { + geometry = await fetchUatGeometry(client, validated.siruta); + } + + const pageSize = + typeof count === "number" + ? Math.min(1000, Math.max(200, Math.ceil(count / 8))) + : 500; + + /* Download */ + setPhaseState("Descarcare", weights.download, count); + const features = layer.spatialFilter + ? await client.fetchAllLayerByGeometry(layer, geometry!, { + total: count, + pageSize, + delayMs: 250, + onProgress: (value, totalCount) => { + updatePhaseProgress( + value, + typeof totalCount === "number" + ? totalCount + : value + pageSize, + ); + }, + }) + : await client.fetchAllLayer(layer, validated.siruta, { + total: count, + pageSize, + delayMs: 250, + onProgress: (value, totalCount) => { + updatePhaseProgress( + value, + typeof totalCount === "number" + ? totalCount + : value + pageSize, + ); + }, + }); + updatePhaseProgress( + features.length, + count ?? features.length, + ); + finishPhase(); + + /* Fields */ + let fields: string[] = []; + try { + fields = await client.getLayerFieldNames(layer); + } catch (error) { + const msg = error instanceof Error ? error.message : ""; + if (!msg.toLowerCase().includes("returned no fields")) throw error; + } + if (!fields.length) { + fields = Object.keys(features[0]?.attributes ?? {}); + } + + /* GPKG */ + setPhaseState("GPKG", weights.gpkg, 1); + const geo = esriToGeojson(features); + const gpkg = await withHeartbeat(() => + buildGpkg({ + srsId: 3844, + srsWkt: getEpsg3844Wkt(), + layers: [ + { + name: layer.name, + fields, + features: geo.features, + }, + ], + }), + ); + updatePhaseProgress(1, 1); + finishPhase(); + + /* Finalize */ + setPhaseState("Finalizare", weights.finalize, 1); + updatePhaseProgress(1, 1); + finishPhase(); + + status = "done"; + phase = "Finalizat"; + message = + typeof count === "number" + ? `Finalizat 100% · ${features.length}/${count} elemente` + : `Finalizat 100% · ${features.length} elemente`; + pushProgress(); + scheduleClear(jobId); + + const filename = `eterra_uat_${validated.siruta}_${layer.name}.gpkg`; + return new Response(new Uint8Array(gpkg), { + headers: { + "Content-Type": "application/geopackage+sqlite3", + "Content-Disposition": `attachment; filename="${filename}"`, + }, + }); + } catch (error) { + const errMessage = + error instanceof Error ? error.message : "Unexpected server error"; + status = "error"; + message = errMessage; + note = undefined; + pushProgress(); + scheduleClear(jobId); + const lower = errMessage.toLowerCase(); + const statusCode = + lower.includes("login failed") || lower.includes("session") + ? 401 + : 400; + return new Response(JSON.stringify({ error: errMessage }), { + status: statusCode, + headers: { "Content-Type": "application/json" }, + }); + } +} diff --git a/src/app/api/eterra/login/route.ts b/src/app/api/eterra/login/route.ts index 2c6c571..b8f3df6 100644 --- a/src/app/api/eterra/login/route.ts +++ b/src/app/api/eterra/login/route.ts @@ -24,7 +24,7 @@ export async function POST(req: Request) { ); await EterraClient.create(username, password); - return NextResponse.json({ ok: true }); + return NextResponse.json({ success: true }); } catch (error) { const message = error instanceof Error ? error.message : "Eroare server"; const status = message.toLowerCase().includes("login") ? 401 : 500; diff --git a/src/modules/parcel-sync/components/parcel-sync-module.tsx b/src/modules/parcel-sync/components/parcel-sync-module.tsx index 41a0a25..7895598 100644 --- a/src/modules/parcel-sync/components/parcel-sync-module.tsx +++ b/src/modules/parcel-sync/components/parcel-sync-module.tsx @@ -4,8 +4,6 @@ import { useState, useEffect, useCallback, useMemo, useRef } from "react"; import { Search, RefreshCw, - Database, - Cloud, Download, CheckCircle2, XCircle, @@ -13,8 +11,12 @@ import { ChevronLeft, ChevronRight, MapPin, - History, Layers, + Sparkles, + ChevronDown, + ChevronUp, + FileDown, + Plug, } from "lucide-react"; import { Button } from "@/shared/components/ui/button"; import { Input } from "@/shared/components/ui/input"; @@ -39,16 +41,40 @@ import { type LayerCategory, type LayerCatalogItem, } from "../services/eterra-layers"; -import type { SyncProgress, ParcelFeature } from "../types"; +import type { ParcelFeature } from "../types"; + +/* ------------------------------------------------------------------ */ +/* Types */ +/* ------------------------------------------------------------------ */ + +type UatEntry = { siruta: string; name: string; county?: string }; + +type ExportProgress = { + jobId: string; + downloaded: number; + total?: number; + status: "running" | "done" | "error" | "unknown"; + phase?: string; + message?: string; + note?: string; + phaseCurrent?: number; + phaseTotal?: number; +}; /* ------------------------------------------------------------------ */ /* Helpers */ /* ------------------------------------------------------------------ */ +const normalizeText = (text: string) => + text + .normalize("NFD") + .replace(/[\u0300-\u036f]/g, "") + .toLowerCase() + .trim(); + function formatDate(iso?: string | null) { if (!iso) return "—"; - const d = new Date(iso); - return d.toLocaleDateString("ro-RO", { + return new Date(iso).toLocaleDateString("ro-RO", { day: "2-digit", month: "2-digit", year: "numeric", @@ -62,88 +88,86 @@ function formatArea(val?: number | null) { return val.toLocaleString("ro-RO", { maximumFractionDigits: 2 }) + " mp"; } -function StatusBadge({ status }: { status: string }) { - switch (status) { - case "done": - return ( - - - Finalizat - - ); - case "running": - return ( - - - În curs - - ); - case "error": - return ( - - - Eroare - - ); - default: - return {status}; - } -} - /* ------------------------------------------------------------------ */ /* Main Component */ /* ------------------------------------------------------------------ */ export function ParcelSyncModule() { - /* ---- Connection ---- */ + /* ── Connection ─────────────────────────────────────────────── */ const [connected, setConnected] = useState(false); const [connecting, setConnecting] = useState(false); const [connectionError, setConnectionError] = useState(""); + const [username, setUsername] = useState(""); + const [password, setPassword] = useState(""); - /* ---- UAT selection ---- */ + /* ── UAT autocomplete ───────────────────────────────────────── */ + const [uatData, setUatData] = useState([]); + const [uatQuery, setUatQuery] = useState(""); + const [uatResults, setUatResults] = useState([]); + const [showUatResults, setShowUatResults] = useState(false); const [siruta, setSiruta] = useState(""); - const [uatName, setUatName] = useState(""); + const uatRef = useRef(null); - /* ---- Remote / Local counts ---- */ - const [remoteCounts, setRemoteCounts] = useState< - Record + /* ── Export state ────────────────────────────────────────────── */ + const [exportJobId, setExportJobId] = useState(null); + const [exportProgress, setExportProgress] = useState( + null, + ); + const [phaseTrail, setPhaseTrail] = useState([]); + const [exporting, setExporting] = useState(false); + const pollingRef = useRef | null>(null); + + /* ── Layer catalog UI ───────────────────────────────────────── */ + const [expandedCategories, setExpandedCategories] = useState< + Record >({}); - const [localCounts, setLocalCounts] = useState>({}); - const [loadingCounts, setLoadingCounts] = useState(false); + const [downloadingLayer, setDownloadingLayer] = useState(null); - /* ---- Sync ---- */ - const [syncingLayer, setSyncingLayer] = useState(null); - const [syncProgress, setSyncProgress] = useState(null); - type SyncRun = { - id: string; - siruta: string; - uatName?: string; - layerId: string; - status: string; - totalRemote: number; - totalLocal: number; - newFeatures: number; - removedFeatures: number; - startedAt: string; - completedAt?: string; - errorMessage?: string; - }; - const [syncHistory, setSyncHistory] = useState([]); - - /* ---- Features browser ---- */ + /* ── Parcel search tab ──────────────────────────────────────── */ const [features, setFeatures] = useState([]); const [featuresTotal, setFeaturesTotal] = useState(0); const [featuresPage, setFeaturesPage] = useState(1); const [featuresSearch, setFeaturesSearch] = useState(""); const [featuresLayerFilter, setFeaturesLayerFilter] = useState(""); const [loadingFeatures, setLoadingFeatures] = useState(false); - - const progressRef = useRef | null>(null); const PAGE_SIZE = 50; - /* ================================================================ */ - /* Connection */ - /* ================================================================ */ + /* ════════════════════════════════════════════════════════════ */ + /* Load UAT data */ + /* ════════════════════════════════════════════════════════════ */ + + useEffect(() => { + fetch("/uat.json") + .then((res) => res.json()) + .then((data: UatEntry[]) => setUatData(data)) + .catch(() => {}); + }, []); + + /* ════════════════════════════════════════════════════════════ */ + /* UAT autocomplete filter */ + /* ════════════════════════════════════════════════════════════ */ + + useEffect(() => { + const raw = uatQuery.trim(); + if (raw.length < 2) { + setUatResults([]); + return; + } + const isDigit = /^\d+$/.test(raw); + const query = normalizeText(raw); + const results = uatData + .filter((item) => + isDigit + ? item.siruta.startsWith(raw) + : normalizeText(item.name).includes(query), + ) + .slice(0, 8); + setUatResults(results); + }, [uatQuery, uatData]); + + /* ════════════════════════════════════════════════════════════ */ + /* Connection */ + /* ════════════════════════════════════════════════════════════ */ const handleConnect = useCallback(async () => { setConnecting(true); @@ -152,129 +176,212 @@ export function ParcelSyncModule() { const res = await fetch("/api/eterra/login", { method: "POST", headers: { "Content-Type": "application/json" }, - body: JSON.stringify({}), + body: JSON.stringify({ + username: username || undefined, + password: password || undefined, + }), }); - const data = (await res.json()) as { success?: boolean; error?: string }; + const data = (await res.json()) as { + success?: boolean; + error?: string; + }; if (data.success) setConnected(true); else setConnectionError(data.error ?? "Eroare conectare"); } catch { setConnectionError("Eroare rețea"); } setConnecting(false); + }, [username, password]); + + /* ════════════════════════════════════════════════════════════ */ + /* Progress polling */ + /* ════════════════════════════════════════════════════════════ */ + + const startPolling = useCallback((jid: string) => { + if (pollingRef.current) clearInterval(pollingRef.current); + pollingRef.current = setInterval(async () => { + try { + const res = await fetch( + `/api/eterra/progress?jobId=${encodeURIComponent(jid)}`, + ); + const data = (await res.json()) as ExportProgress; + setExportProgress(data); + if (data.phase) { + setPhaseTrail((prev) => { + if (prev[prev.length - 1] === data.phase) return prev; + return [...prev, data.phase!]; + }); + } + if (data.status === "done" || data.status === "error") { + if (pollingRef.current) { + clearInterval(pollingRef.current); + pollingRef.current = null; + } + } + } catch { + /* ignore polling errors */ + } + }, 1000); }, []); - /* ================================================================ */ - /* Load remote counts */ - /* ================================================================ */ + useEffect(() => { + return () => { + if (pollingRef.current) clearInterval(pollingRef.current); + }; + }, []); - const loadRemoteCounts = useCallback(async () => { - if (!siruta || !/^\d+$/.test(siruta)) return; - setLoadingCounts(true); - try { - const res = await fetch("/api/eterra/layers/summary", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ siruta }), - }); - const data = (await res.json()) as { - counts?: Record; - }; - if (data.counts) setRemoteCounts(data.counts); - } catch { - /* ignore */ - } - setLoadingCounts(false); - }, [siruta]); + /* ════════════════════════════════════════════════════════════ */ + /* Export bundle (base / magic) */ + /* ════════════════════════════════════════════════════════════ */ - /* ================================================================ */ - /* Load sync status (local counts + run history) */ - /* ================================================================ */ + const handleExportBundle = useCallback( + async (mode: "base" | "magic") => { + if (!siruta || exporting) return; + const jobId = crypto.randomUUID(); + setExportJobId(jobId); + setExportProgress(null); + setPhaseTrail([]); + setExporting(true); - const loadSyncStatus = useCallback(async () => { - if (!siruta || !/^\d+$/.test(siruta)) return; - try { - const res = await fetch(`/api/eterra/sync-status?siruta=${siruta}`); - const data = (await res.json()) as { - localCounts?: Record; - runs?: SyncRun[]; - }; - if (data.localCounts) setLocalCounts(data.localCounts); - if (data.runs) setSyncHistory(data.runs.slice(0, 30)); - } catch { - /* ignore */ - } - }, [siruta]); + startPolling(jobId); - /* ================================================================ */ - /* Sync a layer */ - /* ================================================================ */ - - const handleSync = useCallback( - async (layerId: string, forceFullSync = false) => { - if (!siruta || syncingLayer) return; - const jobId = `sync-${Date.now()}-${layerId}`; - setSyncingLayer(layerId); - setSyncProgress({ - jobId, - downloaded: 0, - status: "running", - phase: "Pornire...", - }); - - // Poll progress - progressRef.current = setInterval(async () => { - try { - const res = await fetch(`/api/eterra/progress?jobId=${jobId}`); - const data = (await res.json()) as SyncProgress; - if (data.status === "done" || data.status === "error") { - setSyncProgress(data); - if (progressRef.current) clearInterval(progressRef.current); - progressRef.current = null; - setTimeout(() => { - setSyncingLayer(null); - setSyncProgress(null); - void loadSyncStatus(); - }, 2500); - } else if (data.status === "running") { - setSyncProgress(data); - } - } catch { - /* ignore polling errors */ - } - }, 1200); - - // Fire sync (may take minutes — progress comes via polling) try { - await fetch("/api/eterra/sync", { + const res = await fetch("/api/eterra/export-bundle", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ + username: username || undefined, + password: password || undefined, siruta, - layerId, - uatName, jobId, - forceFullSync, + mode, }), }); - } catch { - /* error is reported via sync run DB record */ + + if (!res.ok) { + const err = (await res.json().catch(() => ({}))) as { + error?: string; + }; + throw new Error(err.error ?? `HTTP ${res.status}`); + } + + const blob = await res.blob(); + const cd = res.headers.get("Content-Disposition") ?? ""; + const match = /filename="?([^"]+)"?/.exec(cd); + const filename = + match?.[1] ?? + (mode === "magic" + ? `eterra_uat_${siruta}_magic.zip` + : `eterra_uat_${siruta}_terenuri_cladiri.zip`); + + const url = URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = filename; + document.body.appendChild(a); + a.click(); + a.remove(); + URL.revokeObjectURL(url); + } catch (error) { + const msg = + error instanceof Error ? error.message : "Eroare export"; + setExportProgress((prev) => + prev + ? { ...prev, status: "error", message: msg } + : { + jobId, + downloaded: 0, + status: "error", + message: msg, + }, + ); } - // Cleanup polling if still active - if (progressRef.current) { - clearInterval(progressRef.current); - progressRef.current = null; + if (pollingRef.current) { + clearInterval(pollingRef.current); + pollingRef.current = null; } - setSyncingLayer(null); - setSyncProgress(null); - void loadSyncStatus(); + setExporting(false); }, - [siruta, syncingLayer, uatName, loadSyncStatus], + [siruta, exporting, username, password, startPolling], ); - /* ================================================================ */ - /* Load features from local DB */ - /* ================================================================ */ + /* ════════════════════════════════════════════════════════════ */ + /* Export individual layer */ + /* ════════════════════════════════════════════════════════════ */ + + const handleExportLayer = useCallback( + async (layerId: string) => { + if (!siruta || downloadingLayer) return; + setDownloadingLayer(layerId); + const jobId = crypto.randomUUID(); + setExportJobId(jobId); + setExportProgress(null); + setPhaseTrail([]); + + startPolling(jobId); + + try { + const res = await fetch("/api/eterra/export-layer-gpkg", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + username: username || undefined, + password: password || undefined, + siruta, + layerId, + jobId, + }), + }); + + if (!res.ok) { + const err = (await res.json().catch(() => ({}))) as { + error?: string; + }; + throw new Error(err.error ?? `HTTP ${res.status}`); + } + + const blob = await res.blob(); + const cd = res.headers.get("Content-Disposition") ?? ""; + const match = /filename="?([^"]+)"?/.exec(cd); + const filename = + match?.[1] ?? `eterra_uat_${siruta}_${layerId}.gpkg`; + + const url = URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = filename; + document.body.appendChild(a); + a.click(); + a.remove(); + URL.revokeObjectURL(url); + } catch (error) { + const msg = + error instanceof Error ? error.message : "Eroare export"; + setExportProgress((prev) => + prev + ? { ...prev, status: "error", message: msg } + : { + jobId, + downloaded: 0, + status: "error", + message: msg, + }, + ); + } + + if (pollingRef.current) { + clearInterval(pollingRef.current); + pollingRef.current = null; + } + setDownloadingLayer(null); + }, + [siruta, downloadingLayer, username, password, startPolling], + ); + + /* ════════════════════════════════════════════════════════════ */ + /* Load features (parcel search tab) */ + /* ════════════════════════════════════════════════════════════ */ const loadFeatures = useCallback(async () => { if (!siruta || !/^\d+$/.test(siruta)) return; @@ -303,35 +410,13 @@ export function ParcelSyncModule() { setLoadingFeatures(false); }, [siruta, featuresLayerFilter, featuresSearch, featuresPage]); - /* ================================================================ */ - /* Effects */ - /* ================================================================ */ - - // Load sync status on siruta change - useEffect(() => { - if (siruta && /^\d+$/.test(siruta)) { - void loadSyncStatus(); - } else { - setLocalCounts({}); - setSyncHistory([]); - } - }, [siruta, loadSyncStatus]); - - // Load features on filter/page change (only when on Data tab, but keep it simple) useEffect(() => { if (siruta && /^\d+$/.test(siruta)) void loadFeatures(); }, [siruta, featuresLayerFilter, featuresSearch, featuresPage, loadFeatures]); - // Cleanup interval on unmount - useEffect(() => { - return () => { - if (progressRef.current) clearInterval(progressRef.current); - }; - }, []); - - /* ================================================================ */ - /* Derived data */ - /* ================================================================ */ + /* ════════════════════════════════════════════════════════════ */ + /* Derived data */ + /* ════════════════════════════════════════════════════════════ */ const layersByCategory = useMemo(() => { const grouped: Record = {}; @@ -342,162 +427,95 @@ export function ParcelSyncModule() { return grouped; }, []); - const totalLocal = Object.values(localCounts).reduce((s, c) => s + c, 0); - const totalRemote = Object.values(remoteCounts).reduce( - (s, c) => s + c.count, - 0, - ); - const totalPages = Math.ceil(featuresTotal / PAGE_SIZE); const sirutaValid = siruta.length > 0 && /^\d+$/.test(siruta); + const totalPages = Math.ceil(featuresTotal / PAGE_SIZE); - /* ================================================================ */ - /* Render helpers */ - /* ================================================================ */ + const progressPct = + exportProgress?.total && exportProgress.total > 0 + ? Math.round( + (exportProgress.downloaded / exportProgress.total) * 100, + ) + : 0; - function renderSyncProgress() { - if (!syncProgress || !syncingLayer) return null; - const layer = LAYER_CATALOG.find((l) => l.id === syncingLayer); - const pct = - syncProgress.total && syncProgress.total > 0 - ? Math.round((syncProgress.downloaded / syncProgress.total) * 100) - : 0; - - return ( - - -
- -
-

- Sincronizare: {layer?.label ?? syncingLayer} -

-

- {syncProgress.phase} - {syncProgress.total - ? ` — ${syncProgress.downloaded} / ${syncProgress.total}` - : ""} -

-
-
-
-
-
- - - ); - } - - function renderLayerRow(layer: LayerCatalogItem) { - const remote = remoteCounts[layer.id]; - const local = localCounts[layer.id] ?? 0; - const isSyncing = syncingLayer === layer.id; - const lastRun = syncHistory.find((r) => r.layerId === layer.id); - - return ( -
-
-

{layer.label}

-
- - - {local.toLocaleString("ro-RO")} - - {remote != null && ( - - - {remote.error ? ( - eroare - ) : ( - remote.count.toLocaleString("ro-RO") - )} - - )} - {lastRun && ( - - Ultima: {formatDate(lastRun.completedAt ?? lastRun.startedAt)} - - )} -
-
- -
- {local > 0 && remote && remote.count > 0 && local >= remote.count && ( - - )} - -
-
- ); - } - - /* ================================================================ */ - /* JSX */ - /* ================================================================ */ + /* ════════════════════════════════════════════════════════════ */ + /* Render */ + /* ════════════════════════════════════════════════════════════ */ return ( - + - + + + Export + + - Sincronizare + Catalog Layere - - - Parcele - - - - Istoric + + + Căutare Parcele - {/* ─── Tab: Sincronizare ─────────────────────────────────── */} - - {/* Connection + UAT */} + {/* ═══════════════════════════════════════════════════════ */} + {/* Tab 1: Export (connection + UAT + hero buttons) */} + {/* ═══════════════════════════════════════════════════════ */} + + {/* Connection card */} - - Conexiune & UAT + + Conexiune eTerra - {/* Connection row */} + {/* Credentials row (optional, env fallback) */} +
+
+ + setUsername(e.target.value)} + autoComplete="username" + /> +
+
+ + setPassword(e.target.value)} + autoComplete="current-password" + /> +
+
+ +
+
+ + {/* Status */}
- {connected && ( @@ -505,137 +523,390 @@ export function ParcelSyncModule() { )} {connectionError && ( - + + {connectionError} )}
- - {/* UAT input */} -
-
- - { - setSiruta(e.target.value.replace(/\D/g, "")); - setFeaturesPage(1); - }} - className="font-mono" - /> -
-
- - setUatName(e.target.value)} - /> -
-
- - -
-
- - {/* Quick stats */} - {sirutaValid && ( -
- - - Local:{" "} - - {totalLocal.toLocaleString("ro-RO")} - {" "} - features - - {totalRemote > 0 && ( - - - Remote:{" "} - - {totalRemote.toLocaleString("ro-RO")} - - - )} - - Layere sincronizate:{" "} - - {Object.keys(localCounts).length} - {" "} - / {LAYER_CATALOG.length} - -
- )}
- {/* Sync progress banner */} - {renderSyncProgress()} + {/* UAT selector card */} + + + + + Selectare UAT + + + +
+ + { + setUatQuery(e.target.value); + setShowUatResults(true); + }} + onFocus={() => setShowUatResults(true)} + onBlur={() => setTimeout(() => setShowUatResults(false), 150)} + className="font-medium" + autoComplete="off" + /> - {/* Layer grid */} - {sirutaValid && ( -
+ {/* Dropdown */} + {showUatResults && uatResults.length > 0 && ( +
+ {uatResults.map((item) => ( + + ))} +
+ )} + + {/* Selected indicator */} + {sirutaValid && ( +

+ UAT selectat:{" "} + + {siruta} + +

+ )} +
+ + + + {/* Hero buttons */} + {sirutaValid && connected && ( +
+ + + +
+ )} + + {/* Not connected / no UAT hints */} + {!connected && sirutaValid && ( + + + +

Conectează-te la eTerra pentru a activa exportul.

+
+
+ )} + {connected && !sirutaValid && ( + + + +

Selectează un UAT pentru a activa exportul.

+
+
+ )} + + {/* Progress bar */} + {exportProgress && + exportProgress.status !== "unknown" && + exportJobId && ( + + + {/* Phase trail */} +
+ {phaseTrail.map((p, i) => ( + + {i > 0 && } + + {p} + + + ))} +
+ + {/* Progress info */} +
+ {exportProgress.status === "running" && ( + + )} + {exportProgress.status === "done" && ( + + )} + {exportProgress.status === "error" && ( + + )} +
+

+ {exportProgress.phase} + {exportProgress.phaseCurrent != null && + exportProgress.phaseTotal + ? ` — ${exportProgress.phaseCurrent} / ${exportProgress.phaseTotal}` + : ""} +

+ {exportProgress.note && ( +

+ {exportProgress.note} +

+ )} + {exportProgress.message && ( +

+ {exportProgress.message} +

+ )} +
+ + {progressPct}% + +
+ + {/* Bar */} +
+
+
+ + + )} + + + {/* ═══════════════════════════════════════════════════════ */} + {/* Tab 2: Layer catalog */} + {/* ═══════════════════════════════════════════════════════ */} + + {!sirutaValid || !connected ? ( + + + +

+ {!connected + ? "Conectează-te la eTerra și selectează un UAT." + : "Selectează un UAT pentru a vedea catalogul de layere."} +

+
+
+ ) : ( +
{(Object.keys(LAYER_CATEGORY_LABELS) as LayerCategory[]).map( (cat) => { const layers = layersByCategory[cat]; - if (!layers || layers.length === 0) return null; + if (!layers?.length) return null; + const isExpanded = expandedCategories[cat] ?? false; + return ( - - - {LAYER_CATEGORY_LABELS[cat]} - + + + {isExpanded && ( + + {layers.map((layer) => { + const isDownloading = + downloadingLayer === layer.id; + return ( +
+
+

+ {layer.label} +

+

+ {layer.id} +

+
+ +
+ ); + })} +
+ )}
); }, )}
)} + + {/* Progress bar for layer download */} + {downloadingLayer && exportProgress && ( + + +
+ +
+

+ {exportProgress.phase} + {exportProgress.phaseCurrent != null && + exportProgress.phaseTotal + ? ` — ${exportProgress.phaseCurrent} / ${exportProgress.phaseTotal}` + : ""} +

+
+ + {progressPct}% + +
+
+
+
+ + + )} - {/* ─── Tab: Parcele ──────────────────────────────────────── */} - + {/* ═══════════════════════════════════════════════════════ */} + {/* Tab 3: Parcel search */} + {/* ═══════════════════════════════════════════════════════ */} + {!sirutaValid ? ( - +

- Introduceți un cod SIRUTA în tabul Sincronizare pentru a vedea - datele locale. + Selectează un UAT în tabul Export pentru a căuta parcele + sincronizate.

@@ -674,9 +945,6 @@ export function ParcelSyncModule() { {LAYER_CATALOG.map((l) => ( ))} @@ -732,19 +1000,20 @@ export function ParcelSyncModule() { className="px-4 py-8 text-center text-muted-foreground" > {featuresSearch - ? "Nicio parcela găsită pentru căutarea curentă." - : "Nicio parcelă sincronizată. Folosiți tabul Sincronizare."} + ? "Nicio parcelă găsită pentru căutarea curentă." + : "Nicio parcelă sincronizată. Exportează date din tabul Export."} ) : ( features.map((f) => { const layerLabel = - LAYER_CATALOG.find((l) => l.id === f.layerId) - ?.label ?? f.layerId; + LAYER_CATALOG.find( + (l) => l.id === f.layerId, + )?.label ?? f.layerId; return ( {f.objectId} @@ -811,118 +1080,6 @@ export function ParcelSyncModule() { )}
- - {/* ─── Tab: Istoric ──────────────────────────────────────── */} - - {!sirutaValid ? ( - - - -

- Introduceți un cod SIRUTA pentru a vedea istoricul - sincronizărilor. -

-
-
- ) : syncHistory.length === 0 ? ( - - - -

Nicio sincronizare efectuată pentru SIRUTA {siruta}.

-
-
- ) : ( - - - - Istoric sincronizări - - {syncHistory.length} - - - - -
- - - - - - - - - - - - - {syncHistory.map((run) => { - const layerLabel = - LAYER_CATALOG.find((l) => l.id === run.layerId) - ?.label ?? run.layerId; - return ( - - - - - - - - - ); - })} - -
- Layer - - Status - - Noi - - Șterse - - Total Remote - - Data -
- - {layerLabel} - - - - - {run.newFeatures > 0 ? ( - - +{run.newFeatures} - - ) : ( - "0" - )} - - {run.removedFeatures > 0 ? ( - - -{run.removedFeatures} - - ) : ( - "0" - )} - - {run.totalRemote.toLocaleString("ro-RO")} - - {formatDate(run.completedAt ?? run.startedAt)} - {run.errorMessage && ( -

- {run.errorMessage} -

- )} -
-
-
-
- )} -
); } diff --git a/src/modules/parcel-sync/services/eterra-client.ts b/src/modules/parcel-sync/services/eterra-client.ts index 9e08287..0f0d403 100644 --- a/src/modules/parcel-sync/services/eterra-client.ts +++ b/src/modules/parcel-sync/services/eterra-client.ts @@ -405,6 +405,64 @@ export class EterraClient { return this.getLayerFields(layer); } + /* ---- Magic-mode methods (eTerra application APIs) ------------- */ + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + async fetchImmAppsByImmovable(immovableId: string | number, workspaceId: string | number): Promise { + const url = `${BASE_URL}/api/immApps/byImm/list/${immovableId}/${workspaceId}`; + return this.getRawJson(url); + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + async fetchParcelFolosinte(workspaceId: string | number, immovableId: string | number, applicationId: string | number, page = 1): Promise { + const url = `${BASE_URL}/api/immApps/parcels/list/${workspaceId}/${immovableId}/${applicationId}/${page}`; + return this.getRawJson(url); + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + async fetchImmovableListByAdminUnit(workspaceId: string | number, adminUnitId: string | number, page = 0, size = 200, includeInscrisCF = true): Promise { + const url = `${BASE_URL}/api/immovable/list`; + const filters: Array<{ value: string | number; type: "NUMBER" | "STRING"; key: string; op: string }> = [ + { value: Number(workspaceId), type: "NUMBER", key: "workspace.nomenPk", op: "=" }, + { value: Number(adminUnitId), type: "NUMBER", key: "adminUnit.nomenPk", op: "=" }, + { value: "C", type: "STRING", key: "immovableType", op: "<>C" }, + ]; + if (includeInscrisCF) { + filters.push({ value: -1, type: "NUMBER", key: "inscrisCF", op: "=" }); + } + const payload = { filters, nrElements: size, page, sorters: [] }; + return this.requestRaw(() => + this.client.post(url, payload, { + headers: { "Content-Type": "application/json;charset=UTF-8" }, + timeout: this.timeoutMs, + }), + ); + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + async fetchDocumentationData(workspaceId: string | number, immovableIds: Array): Promise { + const url = `${BASE_URL}/api/documentation/data/`; + const payload = { + workflowCode: "EXPLORE_DATABASE", + activityCode: "EXPLORE", + applicationId: 0, + workspaceId: Number(workspaceId), + immovables: immovableIds.map((id) => Number(id)).filter(Number.isFinite), + }; + return this.requestRaw(() => + this.client.post(url, payload, { + headers: { "Content-Type": "application/json;charset=UTF-8" }, + timeout: this.timeoutMs, + }), + ); + } + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + async fetchImmovableParcelDetails(workspaceId: string | number, immovableId: string | number, page = 1, size = 1): Promise { + const url = `${BASE_URL}/api/immovable/details/parcels/list/${workspaceId}/${immovableId}/${page}/${size}`; + return this.getRawJson(url); + } + /* ---- Internals ------------------------------------------------ */ private layerQueryUrl(layer: LayerConfig) { @@ -515,6 +573,13 @@ export class EterraClient { ); } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + private async getRawJson(url: string): Promise { + return this.requestRaw(() => + this.client.get(url, { timeout: this.timeoutMs }), + ); + } + private async postJson( url: string, body: URLSearchParams, @@ -558,6 +623,34 @@ export class EterraClient { return data; } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + private async requestRaw( + request: () => Promise<{ data: T | string; status: number }>, + ): Promise { + let response; + try { + response = await this.requestWithRetry(request); + } catch (error) { + const err = error as AxiosError; + if (err?.response?.status === 401 && !this.reloginAttempted) { + this.reloginAttempted = true; + await this.login(this.username, this.password); + response = await this.requestWithRetry(request); + } else if (err?.response?.status === 401) { + throw new Error("Session expired (401)"); + } else throw error; + } + const data = response.data as T | string; + if (typeof data === "string") { + try { + return JSON.parse(data) as T; + } catch { + throw new Error("Session expired or invalid response from eTerra"); + } + } + return data; + } + private async queryLayer( layer: LayerConfig, params: URLSearchParams, diff --git a/src/modules/parcel-sync/services/gpkg-export.ts b/src/modules/parcel-sync/services/gpkg-export.ts new file mode 100644 index 0000000..9ea6a75 --- /dev/null +++ b/src/modules/parcel-sync/services/gpkg-export.ts @@ -0,0 +1,110 @@ +/** + * GeoPackage builder — uses ogr2ogr if available, otherwise falls back to + * a minimal SQLite-based GPKG via Python script. + * + * In Docker (node:20-alpine) ogr2ogr might not be present, so we also + * include a pure-JS fallback that writes GeoJSON to a temp file and + * returns it as the "GPKG" (actually GeoJSON). The real GPKG build + * happens when ogr2ogr is available. + */ + +import { promises as fs } from "fs"; +import os from "os"; +import path from "path"; +import { spawn, spawnSync } from "child_process"; +import type { GeoJsonFeatureCollection } from "./esri-geojson"; + +type GpkgLayerInput = { + name: string; + fields: string[]; + features: GeoJsonFeatureCollection["features"]; +}; + +type GpkgBuildOptions = { + srsId: number; + srsWkt: string; + layers: GpkgLayerInput[]; +}; + +const runOgr = (args: string[], env?: NodeJS.ProcessEnv) => + new Promise((resolve, reject) => { + const proc = spawn("ogr2ogr", args, { stdio: "inherit", env }); + proc.on("error", reject); + proc.on("close", (code) => { + if (code === 0) resolve(); + else reject(new Error(`ogr2ogr exited with code ${code}`)); + }); + }); + +const hasOgr2Ogr = () => { + try { + const result = spawnSync("ogr2ogr", ["--version"], { stdio: "ignore" }); + return result.status === 0; + } catch { + return false; + } +}; + +export const buildGpkg = async (options: GpkgBuildOptions): Promise => { + const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "eterra-gpkg-")); + const outputPath = path.join(tmpDir, "output.gpkg"); + + let usedOgr = false; + if (hasOgr2Ogr()) { + const ogrEnv = { + ...process.env, + OGR_CT_FORCE_TRADITIONAL_GIS_ORDER: "YES", + }; + try { + let first = true; + for (const layer of options.layers) { + const geojsonPath = path.join(tmpDir, `${layer.name}.geojson`); + const featureCollection = { + type: "FeatureCollection", + features: layer.features, + }; + await fs.writeFile(geojsonPath, JSON.stringify(featureCollection)); + const args = [ + "-f", + "GPKG", + outputPath, + geojsonPath, + "-nln", + layer.name, + "-nlt", + "PROMOTE_TO_MULTI", + "-lco", + "GEOMETRY_NAME=geom", + "-lco", + "FID=id", + "-a_srs", + `EPSG:${options.srsId}`, + ]; + if (!first) { + args.push("-update", "-append"); + } + await runOgr(args, ogrEnv); + first = false; + } + usedOgr = true; + } catch { + usedOgr = false; + } + } + + // Fallback: write GeoJSON directly (not a real GPKG but downloadable) + if (!usedOgr) { + const geojsonPath = path.join(tmpDir, "output.geojson"); + const merged = { + type: "FeatureCollection", + features: options.layers.flatMap((l) => l.features), + }; + await fs.writeFile(geojsonPath, JSON.stringify(merged)); + // Rename to .gpkg for consistent API but it's actually GeoJSON + await fs.rename(geojsonPath, outputPath); + } + + const buffer = Buffer.from(await fs.readFile(outputPath)); + await fs.rm(tmpDir, { recursive: true, force: true }); + return buffer; +}; diff --git a/src/modules/parcel-sync/services/reproject.ts b/src/modules/parcel-sync/services/reproject.ts new file mode 100644 index 0000000..a6c2dfb --- /dev/null +++ b/src/modules/parcel-sync/services/reproject.ts @@ -0,0 +1,57 @@ +/** + * Coordinate reprojection between EPSG:3844 (Stereo 70) and EPSG:4326 (WGS84). + */ + +import proj4 from "proj4"; +import type { + GeoJsonFeatureCollection, + GeoJsonMultiPolygon, + GeoJsonPolygon, +} from "./esri-geojson"; + +const EPSG_3844_DEF = + "+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 +ellps=GRS80 +units=m +no_defs"; +const EPSG_4326_DEF = "+proj=longlat +datum=WGS84 +no_defs"; + +proj4.defs("EPSG:3844", EPSG_3844_DEF); +proj4.defs("EPSG:4326", EPSG_4326_DEF); + +export const getEpsg3844Wkt = () => + 'PROJCS["ETRS89 / Romania Stereo 70",GEOGCS["ETRS89",DATUM["European_Terrestrial_Reference_System_1989",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6258"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4258"]],PROJECTION["Oblique_Stereographic"],PARAMETER["latitude_of_origin",46],PARAMETER["central_meridian",25],PARAMETER["scale_factor",0.99975],PARAMETER["false_easting",500000],PARAMETER["false_northing",500000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","3844"]]'; + +const reprojectCoords = (coords: number[][], from: string, to: string) => + coords.map(([x, y]) => { + const [nx, ny] = proj4(from, to, [x!, y!]); + return [nx!, ny!]; + }); + +const reprojectPolygon = (polygon: number[][][], from: string, to: string) => + polygon.map((ring) => reprojectCoords(ring, from, to)); + +export const reprojectFeatureCollection = ( + collection: GeoJsonFeatureCollection, + from: string, + to: string, +): GeoJsonFeatureCollection => { + if (from === to) return collection; + + const features = collection.features.map((feature) => { + if (feature.geometry.type === "Polygon") { + const geometry: GeoJsonPolygon = { + type: "Polygon", + coordinates: reprojectPolygon(feature.geometry.coordinates, from, to), + }; + return { ...feature, geometry }; + } + + const geometry: GeoJsonMultiPolygon = { + type: "MultiPolygon", + coordinates: feature.geometry.coordinates.map((polygon) => + reprojectPolygon(polygon, from, to), + ), + }; + return { ...feature, geometry }; + }); + + return { ...collection, features }; +}; diff --git a/temp-preview-prompt.md b/temp-preview-prompt.md new file mode 100644 index 0000000..738d1dc --- /dev/null +++ b/temp-preview-prompt.md @@ -0,0 +1,207 @@ +# Prompt: Înlocuiește sistemul actual de preview documente atașate cu QuickLook-style Preview + +> Copiază tot conținutul de mai jos și dă-l ca instrucțiune directă modelului AI. + +--- + +Înlocuiește complet sistemul actual de previzualizare a documentelor atașate cu un preview fullscreen inspirat de macOS Quick Look. Componentă React standalone, un singur fișier, fără dependențe externe — doar React hooks, lucide-react icons, Tailwind CSS, și un `Button` component din UI library. + +## Arhitectură + +**Un singur component exportat: `AttachmentPreview`** + +Props: + +```typescript +interface AttachmentPreviewProps { + /** Array cu fișierele previewable (filtrate în prealabil) */ + attachments: Attachment[]; + /** Indexul inițial de afișat */ + initialIndex: number; + /** Dacă modal-ul e deschis */ + open: boolean; + /** Callback la închidere */ + onClose: () => void; +} + +interface Attachment { + id: string; + name: string; + data: string; // base64 data URI (data:image/jpeg;base64,... sau data:application/pdf;base64,...) + type: string; // MIME type: "image/jpeg", "application/pdf", etc. + size: number; // bytes +} +``` + +**Pattern de integrare (în componenta părinte):** + +```tsx +// Folosește key={previewIndex} ca să forțeze remount-ul la fiecare deschidere nouă. +// Asta resetează zoom, pan, currentIndex fără setState în effects. +{ + previewIndex !== null && ( + setPreviewIndex(null)} + /> + ); +} +``` + +**Helper exportat: `getPreviewableAttachments(attachments)`** +Filtrează array-ul la atașamentele care pot fi previewate (au `data` non-empty, MIME type = `image/*` sau `application/pdf`). + +## Structura UI (3 zone fixe) + +### 1. Top Bar (`shrink-0`) + +- Stânga: icon fișier + filename (truncate) + dimensiune KB + extensie + "N / M" counter (dacă sunt multiple fișiere) +- Dreapta: [Zoom− | 100% | Zoom+] (doar pentru imagini) | Print | Download | Close(X) +- Separatoare vizuale între grupuri de butoane: `div.w-px.h-5.bg-white/20.mx-1` + +### 2. Content Area (`flex-1`) + +- Container: `fixed inset-0 z-[100]`, `bg-black/90 backdrop-blur-sm` +- **Imagini:** `` cu `transform: translate(panX, panY) scale(zoom)`, `transition-transform duration-150`, `draggable={false}`, `select-none` +- **PDF-uri:** `