zod-ir 1.3.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +59 -42
- package/dist/index.d.mts +40 -10
- package/dist/index.d.ts +40 -10
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +13 -11
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -29,13 +29,15 @@
|
|
|
29
29
|
- ✅ **National Code:** Validates using the official checksum algorithm.
|
|
30
30
|
- 🏢 **Shenase Melli:** Validates Legal Person ID (Company ID).
|
|
31
31
|
- 💳 **Bank Card:** Validates 16-digit card numbers (Luhn algorithm).
|
|
32
|
+
- 🚗 **License Plate:** Validates Iranian car plates and **Detects City/Province**.
|
|
33
|
+
- 🧾 **Bill & Payment ID:** Validates Utility Bills (Water, Electricity, Gas, etc.) and **Calculates Amount**.
|
|
32
34
|
- 📱 **Mobile Number:** Validates `09xx`, `+989xx`, `9xx`.
|
|
33
35
|
- 🏦 **Sheba (IBAN):** Validates structure and checksum (ISO 7064).
|
|
34
36
|
- ✈️ **Passport:** Validates Iranian Passport numbers.
|
|
35
37
|
- 📮 **Postal Code:** Validates 10-digit Iranian postal codes.
|
|
36
38
|
- ☎️ **Landline:** Validates fixed line numbers with area codes.
|
|
37
|
-
- 🔄 **Auto-fix Digits:** Automatically converts Persian/Arabic digits and characters (ي, ك) to standard
|
|
38
|
-
- 🎨 **Metadata Extraction:** Extract **Bank Name/Color**
|
|
39
|
+
- 🔄 **Auto-fix Digits:** Automatically converts Persian/Arabic digits and characters (ي, ك) to standard English.
|
|
40
|
+
- 🎨 **Metadata Extraction:** Extract **Bank Name/Color/Logo**, **Operator**, **Bill Type**, and **Plate Location**.
|
|
39
41
|
- 🌍 **Bilingual:** Built-in error messages in **Persian** and **English**.
|
|
40
42
|
|
|
41
43
|
---
|
|
@@ -45,6 +47,8 @@
|
|
|
45
47
|
```bash
|
|
46
48
|
npm install zod zod-ir
|
|
47
49
|
# or
|
|
50
|
+
pnpm add zod zod-ir
|
|
51
|
+
# or
|
|
48
52
|
yarn add zod zod-ir
|
|
49
53
|
```
|
|
50
54
|
|
|
@@ -57,11 +61,11 @@ yarn add zod zod-ir
|
|
|
57
61
|
import { z } from "zod";
|
|
58
62
|
import {
|
|
59
63
|
zMelliCode,
|
|
60
|
-
zShenaseMelli,
|
|
61
64
|
zIranianMobile,
|
|
62
65
|
zCardNumber,
|
|
63
|
-
|
|
64
|
-
|
|
66
|
+
zBillId,
|
|
67
|
+
zPaymentId,
|
|
68
|
+
zPlateNumber,
|
|
65
69
|
preprocessNumber,
|
|
66
70
|
} from "zod-ir";
|
|
67
71
|
|
|
@@ -69,57 +73,55 @@ const UserSchema = z.object({
|
|
|
69
73
|
// 1. National Code with Auto-Fix (Converts ۱۲۳ -> 123)
|
|
70
74
|
nationalCode: preprocessNumber(zMelliCode()),
|
|
71
75
|
|
|
72
|
-
// 2.
|
|
73
|
-
companyId: zShenaseMelli({ message: "شناسه ملی نامعتبر است" }),
|
|
74
|
-
|
|
75
|
-
// 3. Mobile (Strict Mode: Must start with 0)
|
|
76
|
+
// 2. Mobile (Strict Mode: Must start with 0)
|
|
76
77
|
mobile: zIranianMobile({ strictZero: true }),
|
|
77
78
|
|
|
78
|
-
//
|
|
79
|
+
// 3. Bank Card
|
|
79
80
|
card: zCardNumber(),
|
|
80
81
|
|
|
81
|
-
//
|
|
82
|
-
|
|
82
|
+
// 4. Car Plate (e.g., 12B345-11 or ۱۲ب۳۴۵-۱۱)
|
|
83
|
+
plate: zPlateNumber(),
|
|
83
84
|
|
|
84
|
-
//
|
|
85
|
-
|
|
85
|
+
// 5. Bill & Payment ID
|
|
86
|
+
billId: zBillId(),
|
|
87
|
+
paymentId: zPaymentId(),
|
|
86
88
|
});
|
|
87
|
-
|
|
88
|
-
// Example Usage
|
|
89
|
-
try {
|
|
90
|
-
const result = UserSchema.parse({
|
|
91
|
-
nationalCode: "۱۲۳۴۵۶۷۸۹۱", // User typed in Farsi
|
|
92
|
-
companyId: "10100448712",
|
|
93
|
-
mobile: "09121234567",
|
|
94
|
-
card: "6362147010005732",
|
|
95
|
-
iban: "IR330620000000202901868005",
|
|
96
|
-
passport: "A12345678",
|
|
97
|
-
});
|
|
98
|
-
console.log("Valid Data:", result);
|
|
99
|
-
} catch (err) {
|
|
100
|
-
console.log(err);
|
|
101
|
-
}
|
|
102
89
|
```
|
|
103
90
|
|
|
104
91
|
2. Extracting Metadata (New ✨)
|
|
105
|
-
You can extract useful information like Bank Name,
|
|
92
|
+
You can extract useful information like Bank Name, Color, Bill Type, Amount, or Plate Location.
|
|
106
93
|
|
|
107
94
|
```typescript
|
|
108
|
-
import {
|
|
95
|
+
import {
|
|
96
|
+
getBankInfo,
|
|
97
|
+
getMobileOperator,
|
|
98
|
+
getBillInfo,
|
|
99
|
+
getPlateInfo,
|
|
100
|
+
} from "zod-ir";
|
|
109
101
|
|
|
110
|
-
//
|
|
102
|
+
// 🏦 Bank Info
|
|
111
103
|
const bank = getBankInfo("6037991155667788");
|
|
112
104
|
if (bank) {
|
|
113
105
|
console.log(bank.name); // "Melli"
|
|
114
106
|
console.log(bank.label); // "ملی"
|
|
115
107
|
console.log(bank.color); // "#EF3F3E" (Great for UI backgrounds!)
|
|
116
|
-
console.log(bank.
|
|
108
|
+
console.log(bank.logo); // URL to bank logo
|
|
117
109
|
}
|
|
118
110
|
|
|
119
|
-
//
|
|
120
|
-
const
|
|
121
|
-
if (
|
|
122
|
-
console.log(
|
|
111
|
+
// 🚗 Plate Info
|
|
112
|
+
const plate = getPlateInfo("64م322-23");
|
|
113
|
+
if (plate) {
|
|
114
|
+
console.log(plate.province); // "اصفهان"
|
|
115
|
+
console.log(plate.city); // "نایین"
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// 🧾 Bill Info (Water, Electricity, Gas...)
|
|
119
|
+
// Returns bill type, validity, and calculates amount from payment ID
|
|
120
|
+
const bill = getBillInfo("9006117002129", "60240335");
|
|
121
|
+
if (bill) {
|
|
122
|
+
console.log(bill.type.label); // "برق"
|
|
123
|
+
console.log(bill.formattedAmount); // "602,000" (Rials)
|
|
124
|
+
console.log(bill.isValid); // true
|
|
123
125
|
}
|
|
124
126
|
```
|
|
125
127
|
|
|
@@ -171,6 +173,9 @@ export default function MyForm() {
|
|
|
171
173
|
| `zPassport` | Validates Iranian Passport numbers. |
|
|
172
174
|
| `zPostalCode` | Validates 10-digit Iranian postal codes. |
|
|
173
175
|
| `zLandline` | Validates landline phone numbers with area codes. |
|
|
176
|
+
| `zBillId` | Validates Bill ID (Shenase Ghabz). |
|
|
177
|
+
| `zPaymentId` | Validates Payment ID (Shenase Pardakht). |
|
|
178
|
+
| `zPlateNumber` | Validates Vehicle License Plate. |
|
|
174
179
|
| `preprocessNumber` | Utility: Wraps any validator to convert Persian digits to English. |
|
|
175
180
|
|
|
176
181
|
#### Options Interface
|
|
@@ -185,11 +190,23 @@ All validators accept an optional configuration object to customize behavior.
|
|
|
185
190
|
|
|
186
191
|
## Metadata Helpers (New)
|
|
187
192
|
|
|
188
|
-
| Function
|
|
189
|
-
|
|
|
190
|
-
| `getBankInfo(card)`
|
|
191
|
-
| `getMobileOperator(mobile)`
|
|
192
|
-
| `
|
|
193
|
+
| Function | Return Type | Description |
|
|
194
|
+
| :--------------------------- | :------------------------------------------- | ------------------------------------------------------------------------------ |
|
|
195
|
+
| `getBankInfo(card)` | `{ name, label, color, logo, formatted }` | Returns bank details including **Logo URL** from card number.number. |
|
|
196
|
+
| `getMobileOperator(mobile)` | `{ name, label, logo }` | Returns operator (MCI, Irancell...) including **Logo URL** from mobile number. |
|
|
197
|
+
| `getBillInfo(billId, payId)` | `{ type, amount, formattedAmount, isValid }` | Bill type (Water/Gas...), calculates amount. number. |
|
|
198
|
+
| `getPlateInfo(plate)` | `{ province, city }` | Province and City of the plate. number. |
|
|
199
|
+
| `verifyAndNormalize(str)` | `string` | Converts Persian/Arabic digits & chars (ي, ك) to standard English. |
|
|
200
|
+
|
|
201
|
+
## Contributing
|
|
202
|
+
|
|
203
|
+
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.
|
|
204
|
+
|
|
205
|
+
This project uses PNPM. To get started, clone the repo and run:
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
pnpm install
|
|
209
|
+
```
|
|
193
210
|
|
|
194
211
|
## Credits 🙏
|
|
195
212
|
|
package/dist/index.d.mts
CHANGED
|
@@ -15,6 +15,27 @@ type OperatorInfo = {
|
|
|
15
15
|
logo: string;
|
|
16
16
|
} | null;
|
|
17
17
|
declare function getMobileOperator(mobile: string): OperatorInfo;
|
|
18
|
+
declare function isBillIdValid(billId: string): boolean;
|
|
19
|
+
declare function isPaymentIdValid(paymentId: string, billId: string): boolean;
|
|
20
|
+
type BillInfo = {
|
|
21
|
+
type: {
|
|
22
|
+
label: string;
|
|
23
|
+
slug: string;
|
|
24
|
+
color: string;
|
|
25
|
+
logo: string;
|
|
26
|
+
};
|
|
27
|
+
amount: number;
|
|
28
|
+
formattedAmount: string;
|
|
29
|
+
isValid: boolean;
|
|
30
|
+
} | null;
|
|
31
|
+
declare function getBillInfo(billId: string, paymentId?: string): BillInfo;
|
|
32
|
+
type PlateInfo = {
|
|
33
|
+
province: string;
|
|
34
|
+
city: string;
|
|
35
|
+
isValid: boolean;
|
|
36
|
+
} | null;
|
|
37
|
+
declare function getPlateInfo(plate: string): PlateInfo;
|
|
38
|
+
declare function isPlateNumber(plate: string): boolean;
|
|
18
39
|
declare function isMelliCode(code: string): boolean;
|
|
19
40
|
declare function isShenaseMelli(code: string): boolean;
|
|
20
41
|
declare function isPassport(code: string): boolean;
|
|
@@ -37,6 +58,9 @@ declare const ERROR_MESSAGES: {
|
|
|
37
58
|
readonly sheba: "شماره شبا نامعتبر است";
|
|
38
59
|
readonly postalCode: "کد پستی نامعتبر است";
|
|
39
60
|
readonly landline: "شماره تلفن ثابت نامعتبر است";
|
|
61
|
+
readonly billId: "شناسه قبض نامعتبر است";
|
|
62
|
+
readonly paymentId: "شناسه پرداخت نامعتبر است";
|
|
63
|
+
readonly plateNumber: "پلاک خودرو نامعتبر است";
|
|
40
64
|
};
|
|
41
65
|
readonly en: {
|
|
42
66
|
readonly melliCode: "Invalid national code";
|
|
@@ -47,6 +71,9 @@ declare const ERROR_MESSAGES: {
|
|
|
47
71
|
readonly sheba: "Invalid Sheba (IBAN) number";
|
|
48
72
|
readonly postalCode: "Invalid postal code";
|
|
49
73
|
readonly landline: "Invalid landline number";
|
|
74
|
+
readonly billId: "Invalid Bill ID";
|
|
75
|
+
readonly paymentId: "Invalid Payment ID";
|
|
76
|
+
readonly plateNumber: "Invalid License Plate";
|
|
50
77
|
};
|
|
51
78
|
};
|
|
52
79
|
type Language = keyof typeof ERROR_MESSAGES;
|
|
@@ -55,17 +82,20 @@ interface BaseOptions {
|
|
|
55
82
|
locale?: Language;
|
|
56
83
|
}
|
|
57
84
|
|
|
58
|
-
declare const zMelliCode: (options?: BaseOptions) => z.ZodString
|
|
59
|
-
declare const zShenaseMelli: (options?: BaseOptions) => z.ZodString
|
|
60
|
-
declare const zPassport: (options?: BaseOptions) => z.ZodString
|
|
61
|
-
declare const zCardNumber: (options?: BaseOptions) => z.ZodString
|
|
85
|
+
declare const zMelliCode: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
86
|
+
declare const zShenaseMelli: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
87
|
+
declare const zPassport: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
88
|
+
declare const zCardNumber: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
62
89
|
interface MobileOptions extends BaseOptions {
|
|
63
90
|
strictZero?: boolean | "optional";
|
|
64
91
|
}
|
|
65
|
-
declare const zIranianMobile: (options?: MobileOptions) => z.ZodString
|
|
66
|
-
declare const zSheba: (options?: BaseOptions) => z.ZodString
|
|
67
|
-
declare const zPostalCode: (options?: BaseOptions) => z.ZodString
|
|
68
|
-
declare const zLandline: (options?: BaseOptions) => z.ZodString
|
|
69
|
-
declare const
|
|
92
|
+
declare const zIranianMobile: (options?: MobileOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
93
|
+
declare const zSheba: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
94
|
+
declare const zPostalCode: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
95
|
+
declare const zLandline: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
96
|
+
declare const zBillId: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
97
|
+
declare const zPaymentId: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
98
|
+
declare const zPlateNumber: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
99
|
+
declare const preprocessNumber: (schema: z.ZodTypeAny) => z.ZodEffects<z.ZodTypeAny, any, unknown>;
|
|
70
100
|
|
|
71
|
-
export { getBankInfo, getMobileOperator, isCardNumber, isIranianMobile, isLandline, isMelliCode, isPassport, isPostalCode, isSheba, isShenaseMelli, preprocessNumber, verifyAndNormalize, zCardNumber, zIranianMobile, zLandline, zMelliCode, zPassport, zPostalCode, zSheba, zShenaseMelli };
|
|
101
|
+
export { type BankInfo, type BaseOptions, type BillInfo, type OperatorInfo, type PlateInfo, getBankInfo, getBillInfo, getMobileOperator, getPlateInfo, isBillIdValid, isCardNumber, isIranianMobile, isLandline, isMelliCode, isPassport, isPaymentIdValid, isPlateNumber, isPostalCode, isSheba, isShenaseMelli, preprocessNumber, verifyAndNormalize, zBillId, zCardNumber, zIranianMobile, zLandline, zMelliCode, zPassport, zPaymentId, zPlateNumber, zPostalCode, zSheba, zShenaseMelli };
|
package/dist/index.d.ts
CHANGED
|
@@ -15,6 +15,27 @@ type OperatorInfo = {
|
|
|
15
15
|
logo: string;
|
|
16
16
|
} | null;
|
|
17
17
|
declare function getMobileOperator(mobile: string): OperatorInfo;
|
|
18
|
+
declare function isBillIdValid(billId: string): boolean;
|
|
19
|
+
declare function isPaymentIdValid(paymentId: string, billId: string): boolean;
|
|
20
|
+
type BillInfo = {
|
|
21
|
+
type: {
|
|
22
|
+
label: string;
|
|
23
|
+
slug: string;
|
|
24
|
+
color: string;
|
|
25
|
+
logo: string;
|
|
26
|
+
};
|
|
27
|
+
amount: number;
|
|
28
|
+
formattedAmount: string;
|
|
29
|
+
isValid: boolean;
|
|
30
|
+
} | null;
|
|
31
|
+
declare function getBillInfo(billId: string, paymentId?: string): BillInfo;
|
|
32
|
+
type PlateInfo = {
|
|
33
|
+
province: string;
|
|
34
|
+
city: string;
|
|
35
|
+
isValid: boolean;
|
|
36
|
+
} | null;
|
|
37
|
+
declare function getPlateInfo(plate: string): PlateInfo;
|
|
38
|
+
declare function isPlateNumber(plate: string): boolean;
|
|
18
39
|
declare function isMelliCode(code: string): boolean;
|
|
19
40
|
declare function isShenaseMelli(code: string): boolean;
|
|
20
41
|
declare function isPassport(code: string): boolean;
|
|
@@ -37,6 +58,9 @@ declare const ERROR_MESSAGES: {
|
|
|
37
58
|
readonly sheba: "شماره شبا نامعتبر است";
|
|
38
59
|
readonly postalCode: "کد پستی نامعتبر است";
|
|
39
60
|
readonly landline: "شماره تلفن ثابت نامعتبر است";
|
|
61
|
+
readonly billId: "شناسه قبض نامعتبر است";
|
|
62
|
+
readonly paymentId: "شناسه پرداخت نامعتبر است";
|
|
63
|
+
readonly plateNumber: "پلاک خودرو نامعتبر است";
|
|
40
64
|
};
|
|
41
65
|
readonly en: {
|
|
42
66
|
readonly melliCode: "Invalid national code";
|
|
@@ -47,6 +71,9 @@ declare const ERROR_MESSAGES: {
|
|
|
47
71
|
readonly sheba: "Invalid Sheba (IBAN) number";
|
|
48
72
|
readonly postalCode: "Invalid postal code";
|
|
49
73
|
readonly landline: "Invalid landline number";
|
|
74
|
+
readonly billId: "Invalid Bill ID";
|
|
75
|
+
readonly paymentId: "Invalid Payment ID";
|
|
76
|
+
readonly plateNumber: "Invalid License Plate";
|
|
50
77
|
};
|
|
51
78
|
};
|
|
52
79
|
type Language = keyof typeof ERROR_MESSAGES;
|
|
@@ -55,17 +82,20 @@ interface BaseOptions {
|
|
|
55
82
|
locale?: Language;
|
|
56
83
|
}
|
|
57
84
|
|
|
58
|
-
declare const zMelliCode: (options?: BaseOptions) => z.ZodString
|
|
59
|
-
declare const zShenaseMelli: (options?: BaseOptions) => z.ZodString
|
|
60
|
-
declare const zPassport: (options?: BaseOptions) => z.ZodString
|
|
61
|
-
declare const zCardNumber: (options?: BaseOptions) => z.ZodString
|
|
85
|
+
declare const zMelliCode: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
86
|
+
declare const zShenaseMelli: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
87
|
+
declare const zPassport: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
88
|
+
declare const zCardNumber: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
62
89
|
interface MobileOptions extends BaseOptions {
|
|
63
90
|
strictZero?: boolean | "optional";
|
|
64
91
|
}
|
|
65
|
-
declare const zIranianMobile: (options?: MobileOptions) => z.ZodString
|
|
66
|
-
declare const zSheba: (options?: BaseOptions) => z.ZodString
|
|
67
|
-
declare const zPostalCode: (options?: BaseOptions) => z.ZodString
|
|
68
|
-
declare const zLandline: (options?: BaseOptions) => z.ZodString
|
|
69
|
-
declare const
|
|
92
|
+
declare const zIranianMobile: (options?: MobileOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
93
|
+
declare const zSheba: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
94
|
+
declare const zPostalCode: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
95
|
+
declare const zLandline: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
96
|
+
declare const zBillId: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
97
|
+
declare const zPaymentId: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
98
|
+
declare const zPlateNumber: (options?: BaseOptions) => z.ZodEffects<z.ZodString, string, string>;
|
|
99
|
+
declare const preprocessNumber: (schema: z.ZodTypeAny) => z.ZodEffects<z.ZodTypeAny, any, unknown>;
|
|
70
100
|
|
|
71
|
-
export { getBankInfo, getMobileOperator, isCardNumber, isIranianMobile, isLandline, isMelliCode, isPassport, isPostalCode, isSheba, isShenaseMelli, preprocessNumber, verifyAndNormalize, zCardNumber, zIranianMobile, zLandline, zMelliCode, zPassport, zPostalCode, zSheba, zShenaseMelli };
|
|
101
|
+
export { type BankInfo, type BaseOptions, type BillInfo, type OperatorInfo, type PlateInfo, getBankInfo, getBillInfo, getMobileOperator, getPlateInfo, isBillIdValid, isCardNumber, isIranianMobile, isLandline, isMelliCode, isPassport, isPaymentIdValid, isPlateNumber, isPostalCode, isSheba, isShenaseMelli, preprocessNumber, verifyAndNormalize, zBillId, zCardNumber, zIranianMobile, zLandline, zMelliCode, zPassport, zPaymentId, zPlateNumber, zPostalCode, zSheba, zShenaseMelli };
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var u=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var P=(o,e)=>{for(var n in e)u(o,n,{get:e[n],enumerable:!0})},F=(o,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of z(e))!y.call(o,t)&&t!==n&&u(o,t,{get:()=>e[t],enumerable:!(s=N(e,t))||s.enumerable});return o};var _=o=>F(u({},"__esModule",{value:!0}),o);var V={};P(V,{getBankInfo:()=>R,getMobileOperator:()=>k,isCardNumber:()=>I,isIranianMobile:()=>C,isLandline:()=>x,isMelliCode:()=>h,isPassport:()=>$,isPostalCode:()=>B,isSheba:()=>S,isShenaseMelli:()=>v,preprocessNumber:()=>H,verifyAndNormalize:()=>b,zCardNumber:()=>Z,zIranianMobile:()=>L,zLandline:()=>w,zMelliCode:()=>T,zPassport:()=>j,zPostalCode:()=>W,zSheba:()=>G,zShenaseMelli:()=>K});module.exports=_(V);var l=require("zod");var a="https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/banks",m="https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/operators",O={603799:{name:"Melli",label:"\u0645\u0644\u06CC",color:"#EF3F3E",logo:`${a}/melli.svg`},589210:{name:"Sepah",label:"\u0633\u067E\u0647",color:"#FFC600",logo:`${a}/sepah.svg`},627648:{name:"ToseeSaderat",label:"\u062A\u0648\u0633\u0639\u0647 \u0635\u0627\u062F\u0631\u0627\u062A",color:"#EDB12C",logo:`${a}/tosee-saderat.svg`},627961:{name:"SanatMadar",label:"\u0635\u0646\u0639\u062A \u0648 \u0645\u0639\u062F\u0646",color:"#B3986D",logo:`${a}/sanat-madan.svg`},603770:{name:"Keshavarzi",label:"\u06A9\u0634\u0627\u0648\u0631\u0632\u06CC",color:"#4E7A46",logo:`${a}/keshavarzi.svg`},628023:{name:"Maskan",label:"\u0645\u0633\u06A9\u0646",color:"#F05A23",logo:`${a}/maskan.svg`},627760:{name:"PostBank",label:"\u067E\u0633\u062A \u0628\u0627\u0646\u06A9",color:"#00764D",logo:`${a}/post-bank.svg`},502908:{name:"ToseeTaavon",label:"\u062A\u0648\u0633\u0639\u0647 \u062A\u0639\u0627\u0648\u0646",color:"#0064A6",logo:`${a}/tosee-taavon.svg`},627412:{name:"EghtesadNovin",label:"\u0627\u0642\u062A\u0635\u0627\u062F \u0646\u0648\u06CC\u0646",color:"#652D86",logo:`${a}/eghtesad-novin.svg`},622106:{name:"Parsian",label:"\u067E\u0627\u0631\u0633\u06CC\u0627\u0646",color:"#B3282D",logo:`${a}/parsian.svg`},502229:{name:"Pasargad",label:"\u067E\u0627\u0633\u0627\u0631\u06AF\u0627\u062F",color:"#FFC72C",logo:`${a}/pasargad.svg`},627488:{name:"Karafarin",label:"\u06A9\u0627\u0631\u0622\u0641\u0631\u06CC\u0646",color:"#3B9C56",logo:`${a}/karafarin.svg`},621986:{name:"Saman",label:"\u0633\u0627\u0645\u0627\u0646",color:"#006DB6",logo:`${a}/saman.svg`},639346:{name:"Sina",label:"\u0633\u06CC\u0646\u0627",color:"#004E8A",logo:`${a}/sina.svg`},639607:{name:"Sarmayeh",label:"\u0633\u0631\u0645\u0627\u06CC\u0647",color:"#0077B6",logo:`${a}/sarmayeh.svg`},636214:{name:"Ayandeh",label:"\u0622\u06CC\u0646\u062F\u0647",color:"#8B5F34",logo:`${a}/ayandeh.svg`},502806:{name:"Shahr",label:"\u0634\u0647\u0631",color:"#ED3438",logo:`${a}/shahr.svg`},502938:{name:"Day",label:"\u062F\u06CC",color:"#0099CC",logo:`${a}/day.svg`},603769:{name:"Saderat",label:"\u0635\u0627\u062F\u0631\u0627\u062A",color:"#1A3266",logo:`${a}/saderat.svg`},610433:{name:"Mellat",label:"\u0645\u0644\u062A",color:"#D70005",logo:`${a}/mellat.svg`},627353:{name:"Tejarat",label:"\u062A\u062C\u0627\u0631\u062A",color:"#005696",logo:`${a}/tejarat.svg`},585983:{name:"Tejarat",label:"\u062A\u062C\u0627\u0631\u062A",color:"#005696",logo:`${a}/tejarat.svg`},589463:{name:"Refah",label:"\u0631\u0641\u0627\u0647",color:"#2B3C8E",logo:`${a}/refah.svg`},627381:{name:"Ansar",label:"\u0627\u0646\u0635\u0627\u0631",color:"#F7B500",logo:`${a}/ansar.svg`},505785:{name:"IranZamin",label:"\u0627\u06CC\u0631\u0627\u0646 \u0632\u0645\u06CC\u0646",color:"#92278F",logo:`${a}/iran-zamin.svg`},505416:{name:"Gardeshgari",label:"\u06AF\u0631\u062F\u0634\u06AF\u0631\u06CC",color:"#1D3265",logo:`${a}/gardeshgari.svg`},636949:{name:"Hekmat",label:"\u062D\u06A9\u0645\u062A",color:"#5F2C83",logo:`${a}/hekmat.svg`},505801:{name:"Kosar",label:"\u06A9\u0648\u062B\u0631",color:"#C62828",logo:`${a}/kosar.svg`},606373:{name:"MehrIran",label:"\u0645\u0647\u0631 \u0627\u06CC\u0631\u0627\u0646",color:"#359E49",logo:`${a}/mehr-iran.svg`},504172:{name:"Resalat",label:"\u0631\u0633\u0627\u0644\u062A",color:"#000000",logo:`${a}/resalat.svg`},523388:{name:"Pasargad",label:"\u067E\u0627\u0633\u0627\u0631\u06AF\u0627\u062F (\u0648\u06CC\u067E\u0627\u062F)",color:"#FFC72C",logo:`${a}/pasargad.svg`},505809:{name:"Khavarmianeh",label:"\u062E\u0627\u0648\u0631\u0645\u06CC\u0627\u0646\u0647",color:"#1F2B5B",logo:`${a}/khavarmianeh.svg`}},M={MCI:{label:"\u0647\u0645\u0631\u0627\u0647 \u0627\u0648\u0644",logo:`${m}/mci.svg`,prefixes:["0910","0911","0912","0913","0914","0915","0916","0917","0918","0919","0990","0991","0992","0993","0994"]},Irancell:{label:"\u0627\u06CC\u0631\u0627\u0646\u0633\u0644",logo:`${m}/irancell.svg`,prefixes:["0930","0933","0935","0936","0937","0938","0939","0901","0902","0903","0904","0905","0941"]},Rightel:{label:"\u0631\u0627\u06CC\u062A\u0644",logo:`${m}/rightel.svg`,prefixes:["0920","0921","0922","0923"]},Shatel:{label:"\u0634\u0627\u062A\u0644 \u0645\u0648\u0628\u0627\u06CC\u0644",logo:`${m}/shatel.svg`,prefixes:["0998"]},Taliya:{label:"\u062A\u0627\u0644\u06CC\u0627",logo:`${m}/taliya.png`,prefixes:["0932"]}};function b(o){if(!o)return"";let e=1776,n=1785,s=1632,t=1641,r=1610,A=1740,c=1603,d=1705,E="";for(let f=0;f<o.length;f++){let g=o.charCodeAt(f),p=o[f];g>=e&&g<=n?p=String(g-e):g>=s&&g<=t?p=String(g-s):g===r?p=String.fromCharCode(A):g===c&&(p=String.fromCharCode(d)),E+=p}return E}function R(o){let e=b(o).replace(/[\-\s]/g,"");if(e.length<6)return null;let n=e.substring(0,6),s=O[n];return s?{...s,formatted:e.replace(/(\d{4})(?=\d)/g,"$1-")}:null}function k(o){let e=b(o),n="";if(e.startsWith("09")?n=e.substring(0,4):e.startsWith("9")?n="0"+e.substring(0,3):e.startsWith("+98")&&(n="0"+e.substring(3,6)),n.length!==4)return null;for(let[s,t]of Object.entries(M))if(t.prefixes.includes(n))return{name:s,label:t.label,logo:t.logo};return null}function h(o){if(!/^\d{10}$/.test(o)||/^(\d)\1+$/.test(o))return!1;let e=parseInt(o[9]),n=o.substring(0,9).split("").reduce((s,t,r)=>s+parseInt(t)*(10-r),0)%11;return n<2?e===n:e===11-n}function v(o){if(o.length!==11||!/^\d{11}$/.test(o))return!1;let e=parseInt(o[9]),n=parseInt(o[10]),s=[29,27,23,19,17,29,27,23,19,17],t=0;for(let c=0;c<10;c++){let d=parseInt(o[c]);t+=(d+e+2)*s[c]}let r=t%11;return(r===10?0:r)===n}function $(o){return/^[A-Za-z][0-9]{8,9}$/.test(o)}function I(o){let e=o.replace(/[\-\s]/g,"");if(!/^\d{16}$/.test(e))return!1;let n=0,s=!1;for(let t=e.length-1;t>=0;t--){let r=parseInt(e[t]);s&&(r*=2,r>9&&(r-=9)),n+=r,s=!s}return n%10===0}function C(o,{strictZero:e="optional"}={}){let n="9\\d{9}",s="";return e===!0?s=`^0${n}$`:e===!1?s=`^${n}$`:s=`^(?:0|\\+98)?${n}$`,new RegExp(s).test(o)}function S(o){let e=o.toUpperCase().replace(/[\-\s]/g,"");if(e.length!==26||!e.startsWith("IR"))return!1;let s=(e.substring(4)+e.substring(0,4)).split("").map(t=>{let r=t.charCodeAt(0);return r>=48&&r<=57?t:(r-55).toString()}).join("");try{return BigInt(s)%BigInt(97)===BigInt(1)}catch{return!1}}function B(o){return/^[1-9]\d{9}$/.test(o)}function x(o){return/^0\d{2}\d{8}$/.test(o)}var D={fa:{melliCode:"\u06A9\u062F \u0645\u0644\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",shenaseMelli:"\u0634\u0646\u0627\u0633\u0647 \u0645\u0644\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",passport:"\u0634\u0645\u0627\u0631\u0647 \u06AF\u0630\u0631\u0646\u0627\u0645\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",cardNumber:"\u0634\u0645\u0627\u0631\u0647 \u06A9\u0627\u0631\u062A \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",mobile:"\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06CC\u0644 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",sheba:"\u0634\u0645\u0627\u0631\u0647 \u0634\u0628\u0627 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",postalCode:"\u06A9\u062F \u067E\u0633\u062A\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",landline:"\u0634\u0645\u0627\u0631\u0647 \u062A\u0644\u0641\u0646 \u062B\u0627\u0628\u062A \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A"},en:{melliCode:"Invalid national code",shenaseMelli:"Invalid legal person ID (Shenase Melli)",passport:"Invalid passport number",cardNumber:"Invalid card number",mobile:"Invalid mobile number",sheba:"Invalid Sheba (IBAN) number",postalCode:"Invalid postal code",landline:"Invalid landline number"}},i=(o,e)=>{if(e?.message)return e.message;let n=e?.locale||"fa";return D[n][o]};var T=o=>l.z.string().refine(e=>h(e),{message:i("melliCode",o)}),K=o=>l.z.string().refine(e=>v(e),{message:i("shenaseMelli",o)}),j=o=>l.z.string().refine(e=>$(e),{message:i("passport",o)}),Z=o=>l.z.string().refine(e=>I(e),{message:i("cardNumber",o)}),L=o=>l.z.string().refine(e=>C(e,{strictZero:o?.strictZero}),{message:i("mobile",o)}),G=o=>l.z.string().refine(e=>S(e),{message:i("sheba",o)}),W=o=>l.z.string().refine(e=>B(e),{message:i("postalCode",o)}),w=o=>l.z.string().refine(e=>x(e),{message:i("landline",o)}),H=o=>l.z.preprocess(e=>typeof e=="string"?b(e):e,o);0&&(module.exports={getBankInfo,getMobileOperator,isCardNumber,isIranianMobile,isLandline,isMelliCode,isPassport,isPostalCode,isSheba,isShenaseMelli,preprocessNumber,verifyAndNormalize,zCardNumber,zIranianMobile,zLandline,zMelliCode,zPassport,zPostalCode,zSheba,zShenaseMelli});
|
|
1
|
+
"use strict";var h=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var K=(e,t)=>{for(var s in t)h(e,s,{get:t[s],enumerable:!0})},Z=(e,t,s,l)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of j(t))!w.call(e,i)&&i!==s&&h(e,i,{get:()=>t[i],enumerable:!(l=V(t,i))||l.enumerable});return e};var Y=e=>Z(h({},"__esModule",{value:!0}),e);var ct={};K(ct,{getBankInfo:()=>F,getBillInfo:()=>T,getMobileOperator:()=>L,getPlateInfo:()=>C,isBillIdValid:()=>I,isCardNumber:()=>O,isIranianMobile:()=>P,isLandline:()=>k,isMelliCode:()=>S,isPassport:()=>A,isPaymentIdValid:()=>$,isPlateNumber:()=>x,isPostalCode:()=>R,isSheba:()=>z,isShenaseMelli:()=>E,preprocessNumber:()=>rt,verifyAndNormalize:()=>o,zBillId:()=>st,zCardNumber:()=>J,zIranianMobile:()=>Q,zLandline:()=>et,zMelliCode:()=>H,zPassport:()=>q,zPaymentId:()=>lt,zPlateNumber:()=>it,zPostalCode:()=>tt,zSheba:()=>X,zShenaseMelli:()=>U});module.exports=Y(ct);var d=require("zod");var r="https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/banks",v="https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/operators",f="https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/bills",N={603799:{name:"Melli",label:"\u0645\u0644\u06CC",color:"#EF3F3E",logo:`${r}/melli.svg`},589210:{name:"Sepah",label:"\u0633\u067E\u0647",color:"#FFC600",logo:`${r}/sepah.svg`},627648:{name:"ToseeSaderat",label:"\u062A\u0648\u0633\u0639\u0647 \u0635\u0627\u062F\u0631\u0627\u062A",color:"#EDB12C",logo:`${r}/tosee-saderat.svg`},627961:{name:"SanatMadar",label:"\u0635\u0646\u0639\u062A \u0648 \u0645\u0639\u062F\u0646",color:"#B3986D",logo:`${r}/sanat-madan.svg`},603770:{name:"Keshavarzi",label:"\u06A9\u0634\u0627\u0648\u0631\u0632\u06CC",color:"#4E7A46",logo:`${r}/keshavarzi.svg`},628023:{name:"Maskan",label:"\u0645\u0633\u06A9\u0646",color:"#F05A23",logo:`${r}/maskan.svg`},627760:{name:"PostBank",label:"\u067E\u0633\u062A \u0628\u0627\u0646\u06A9",color:"#00764D",logo:`${r}/post-bank.svg`},502908:{name:"ToseeTaavon",label:"\u062A\u0648\u0633\u0639\u0647 \u062A\u0639\u0627\u0648\u0646",color:"#0064A6",logo:`${r}/tosee-taavon.svg`},627412:{name:"EghtesadNovin",label:"\u0627\u0642\u062A\u0635\u0627\u062F \u0646\u0648\u06CC\u0646",color:"#652D86",logo:`${r}/eghtesad-novin.svg`},622106:{name:"Parsian",label:"\u067E\u0627\u0631\u0633\u06CC\u0627\u0646",color:"#B3282D",logo:`${r}/parsian.svg`},502229:{name:"Pasargad",label:"\u067E\u0627\u0633\u0627\u0631\u06AF\u0627\u062F",color:"#FFC72C",logo:`${r}/pasargad.svg`},627488:{name:"Karafarin",label:"\u06A9\u0627\u0631\u0622\u0641\u0631\u06CC\u0646",color:"#3B9C56",logo:`${r}/karafarin.svg`},621986:{name:"Saman",label:"\u0633\u0627\u0645\u0627\u0646",color:"#006DB6",logo:`${r}/saman.svg`},639346:{name:"Sina",label:"\u0633\u06CC\u0646\u0627",color:"#004E8A",logo:`${r}/sina.svg`},639607:{name:"Sarmayeh",label:"\u0633\u0631\u0645\u0627\u06CC\u0647",color:"#0077B6",logo:`${r}/sarmayeh.svg`},636214:{name:"Ayandeh",label:"\u0622\u06CC\u0646\u062F\u0647",color:"#8B5F34",logo:`${r}/ayandeh.svg`},502806:{name:"Shahr",label:"\u0634\u0647\u0631",color:"#ED3438",logo:`${r}/shahr.svg`},502938:{name:"Day",label:"\u062F\u06CC",color:"#0099CC",logo:`${r}/day.svg`},603769:{name:"Saderat",label:"\u0635\u0627\u062F\u0631\u0627\u062A",color:"#1A3266",logo:`${r}/saderat.svg`},610433:{name:"Mellat",label:"\u0645\u0644\u062A",color:"#D70005",logo:`${r}/mellat.svg`},627353:{name:"Tejarat",label:"\u062A\u062C\u0627\u0631\u062A",color:"#005696",logo:`${r}/tejarat.svg`},585983:{name:"Tejarat",label:"\u062A\u062C\u0627\u0631\u062A",color:"#005696",logo:`${r}/tejarat.svg`},589463:{name:"Refah",label:"\u0631\u0641\u0627\u0647",color:"#2B3C8E",logo:`${r}/refah.svg`},627381:{name:"Ansar",label:"\u0627\u0646\u0635\u0627\u0631",color:"#F7B500",logo:`${r}/ansar.svg`},505785:{name:"IranZamin",label:"\u0627\u06CC\u0631\u0627\u0646 \u0632\u0645\u06CC\u0646",color:"#92278F",logo:`${r}/iran-zamin.svg`},505416:{name:"Gardeshgari",label:"\u06AF\u0631\u062F\u0634\u06AF\u0631\u06CC",color:"#1D3265",logo:`${r}/gardeshgari.svg`},636949:{name:"Hekmat",label:"\u062D\u06A9\u0645\u062A",color:"#5F2C83",logo:`${r}/hekmat.svg`},505801:{name:"Kosar",label:"\u06A9\u0648\u062B\u0631",color:"#C62828",logo:`${r}/kosar.svg`},606373:{name:"MehrIran",label:"\u0645\u0647\u0631 \u0627\u06CC\u0631\u0627\u0646",color:"#359E49",logo:`${r}/mehr-iran.svg`},504172:{name:"Resalat",label:"\u0631\u0633\u0627\u0644\u062A",color:"#000000",logo:`${r}/resalat.svg`},523388:{name:"Pasargad",label:"\u067E\u0627\u0633\u0627\u0631\u06AF\u0627\u062F (\u0648\u06CC\u067E\u0627\u062F)",color:"#FFC72C",logo:`${r}/pasargad.svg`},505809:{name:"Khavarmianeh",label:"\u062E\u0627\u0648\u0631\u0645\u06CC\u0627\u0646\u0647",color:"#1F2B5B",logo:`${r}/khavarmianeh.svg`}},M={MCI:{label:"\u0647\u0645\u0631\u0627\u0647 \u0627\u0648\u0644",logo:`${v}/mci.svg`,prefixes:["0910","0911","0912","0913","0914","0915","0916","0917","0918","0919","0990","0991","0992","0993","0994"]},Irancell:{label:"\u0627\u06CC\u0631\u0627\u0646\u0633\u0644",logo:`${v}/irancell.svg`,prefixes:["0930","0933","0935","0936","0937","0938","0939","0901","0902","0903","0904","0905","0941"]},Rightel:{label:"\u0631\u0627\u06CC\u062A\u0644",logo:`${v}/rightel.svg`,prefixes:["0920","0921","0922","0923"]},Shatel:{label:"\u0634\u0627\u062A\u0644 \u0645\u0648\u0628\u0627\u06CC\u0644",logo:`${v}/shatel.svg`,prefixes:["0998"]},Taliya:{label:"\u062A\u0627\u0644\u06CC\u0627",logo:`${v}/taliya.png`,prefixes:["0932"]}},D={1:{label:"\u0622\u0628",type:"water",color:"#00a8ff",logo:`${f}/water.svg`},2:{label:"\u0628\u0631\u0642",type:"electricity",color:"#fbc531",logo:`${f}/electricity.svg`},3:{label:"\u06AF\u0627\u0632",type:"gas",color:"#e84118",logo:`${f}/gas.svg`},4:{label:"\u062A\u0644\u0641\u0646 \u062B\u0627\u0628\u062A",type:"phone",color:"#273c75",logo:`${f}/phone.svg`},5:{label:"\u062A\u0644\u0641\u0646 \u0647\u0645\u0631\u0627\u0647",type:"mobile",color:"#8c7ae6",logo:`${f}/mobile.svg`},6:{label:"\u0639\u0648\u0627\u0631\u0636 \u0634\u0647\u0631\u062F\u0627\u0631\u06CC",type:"municipality",color:"#44bd32",logo:`${f}/municipality.svg`},9:{label:"\u062C\u0631\u0627\u06CC\u0645 \u0631\u0627\u0646\u0646\u062F\u06AF\u06CC",type:"traffic",color:"#c23616",logo:`${f}/traffic.svg`}};var _=[{province:"\u0622\u0630\u0631\u0628\u0627\u06CC\u062C\u0627\u0646 \u0634\u0631\u0642\u06CC",codes:[{code:"15",details:[{city:"\u062A\u0628\u0631\u06CC\u0632",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"25",details:[{city:"\u0627\u0647\u0631",letters:["\u0633"]},{city:"\u0622\u0630\u0631\u0634\u0647\u0631",letters:["\u06CC"]},{city:"\u0628\u0633\u062A\u0627\u0646\u200C\u0622\u0628\u0627\u062F",letters:["\u0645"]},{city:"\u0628\u0646\u0627\u0628",letters:["\u0644"]},{city:"\u062C\u0644\u0641\u0627",letters:["\u0637"]},{city:"\u0633\u0631\u0627\u0628",letters:["\u0635"]},{city:"\u0634\u0628\u0633\u062A\u0631",letters:["\u0646"]},{city:"\u06A9\u0644\u06CC\u0628\u0631",letters:["\u0648"]},{city:"\u0645\u0631\u0627\u063A\u0647",letters:["\u0628"]},{city:"\u0645\u0631\u0646\u062F",letters:["\u062C"]},{city:"\u0645\u06CC\u0627\u0646\u0647",letters:["\u062F"]},{city:"\u0647\u0631\u06CC\u0633",letters:["\u0647"]},{city:"\u0647\u0634\u062A\u0631\u0648\u062F",letters:["\u0642"]}]},{code:"35",details:[{city:"\u0627\u0633\u06A9\u0648",letters:["\u0628"]},{city:"\u0645\u0631\u0646\u062F",letters:["\u0637"]},{city:"\u0645\u0631\u0627\u063A\u0647",letters:["\u0642"]},{city:"\u062A\u0628\u0631\u06CC\u0632",letters:["\u0644","\u0645"]},{city:"\u0622\u0630\u0631\u0634\u0647\u0631",letters:["\u0635"]},{city:"\u0627\u0647\u0631",letters:["\u0646"]},{city:"\u0628\u0646\u0627\u0628",letters:["\u0633"]},{city:"\u0628\u0633\u062A\u0627\u0646 \u0622\u0628\u0627\u062F",letters:["\u06CC"]},{city:"\u062C\u0644\u0641\u0627",letters:["\u0647"]},{city:"\u0633\u0631\u0627\u0628",letters:["\u0648"]},{city:"\u0634\u0628\u0633\u062A\u0631",letters:["\u062F"]},{city:"\u06A9\u0644\u06CC\u0628\u0631",letters:["\u062C"]},{city:"\u0645\u06CC\u0627\u0646\u0647",letters:["\u0632"]},{city:"\u0647\u0631\u06CC\u0633",letters:["\u0627\u0644\u0641"]},{city:"\u0647\u0634\u062A\u0631\u0648\u062F",letters:["\u062A"]},{city:"\u062A\u0628\u0631\u06CC\u0632 \u0648 \u0686\u0627\u0631\u0627\u0648\u06CC\u0645\u0627\u0642",letters:["\u0633"]}]}]},{province:"\u0622\u0630\u0631\u0628\u0627\u06CC\u062C\u0627\u0646 \u063A\u0631\u0628\u06CC",codes:[{code:"17",details:[{city:"\u0627\u0631\u0648\u0645\u06CC\u0647",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647"]},{city:"\u062E\u0648\u06CC",letters:["\u0645"]}]},{code:"27",details:[{city:"\u062E\u0648\u06CC",letters:["\u0628"]},{city:"\u0645\u0647\u0627\u0628\u0627\u062F",letters:["\u062C"]},{city:"\u0645\u0627\u06A9\u0648",letters:["\u062F"]},{city:"\u0633\u0644\u0645\u0627\u0633",letters:["\u0633"]},{city:"\u0646\u0642\u062F\u0647",letters:["\u0635"]},{city:"\u0645\u06CC\u0627\u0646\u062F\u0648\u0622\u0628",letters:["\u0637","\u0646"]},{city:"\u062A\u06A9\u0627\u0628",letters:["\u0642"]},{city:"\u0634\u0627\u0647\u06CC\u0646\u200C\u062F\u0698",letters:["\u0644"]},{city:"\u0633\u0631\u062F\u0634\u062A",letters:["\u0645"]},{city:"\u0628\u0648\u06A9\u0627\u0646",letters:["\u0646"]},{city:"\u0686\u0627\u0644\u062F\u0631\u0627\u0646",letters:["\u0647"]},{city:"\u067E\u06CC\u0631\u0627\u0646\u0634\u0647\u0631",letters:["\u0648"]},{city:"\u0627\u0634\u0646\u0648\u06CC\u0647",letters:["\u06CC"]}]},{code:"37",details:[{city:"\u062E\u0648\u06CC",letters:["\u0628"]},{city:"\u0645\u06CC\u0627\u0646\u062F\u0648\u0622\u0628",letters:["\u062C"]},{city:"\u0646\u0642\u062F\u0647",letters:["\u062F"]},{city:"\u0645\u0647\u0627\u0628\u0627\u062F",letters:["\u0635"]},{city:"\u0628\u0648\u06A9\u0627\u0646",letters:["\u0637"]},{city:"\u0633\u0644\u0645\u0627\u0633",letters:["\u0642"]},{city:"\u0645\u0627\u06A9\u0648",letters:["\u0644"]}]}]},{province:"\u0627\u0631\u062F\u0628\u06CC\u0644",codes:[{code:"91",details:[{city:"\u0627\u0631\u062F\u0628\u06CC\u0644",letters:["\u0628","\u062C","\u062F","\u0633","\u0645","\u0648","\u06CC"]},{city:"\u067E\u0627\u0631\u0633\u200C\u0622\u0628\u0627\u062F",letters:["\u0635","\u0645","\u0648","\u06CC"]},{city:"\u062E\u0644\u062E\u0627\u0644",letters:["\u0637"]},{city:"\u06AF\u0631\u0645\u06CC",letters:["\u0644"]},{city:"\u0628\u06CC\u0644\u0647\u200C\u0633\u0648\u0627\u0631",letters:["\u0644"]},{city:"\u0645\u0634\u06A9\u06CC\u0646\u200C\u0634\u0647\u0631",letters:["\u0644","\u0646"]},{city:"\u0646\u06CC\u0631",letters:["\u0645"]},{city:"\u06A9\u0648\u062B\u0631",letters:["\u0645","\u0648"]},{city:"\u0646\u0645\u06CC\u0646",letters:["\u0646"]}]}]},{province:"\u0627\u0635\u0641\u0647\u0627\u0646",codes:[{code:"13",details:[{city:"\u0627\u0635\u0641\u0647\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]},{city:"\u0641\u0644\u0627\u0648\u0631\u062C\u0627\u0646",letters:["\u0635"]}]},{code:"23",details:[{city:"\u06A9\u0627\u0634\u0627\u0646",letters:["\u0628"]},{city:"\u0646\u062C\u0641\u200C\u0622\u0628\u0627\u062F",letters:["\u062C"]},{city:"\u0634\u0647\u0631\u0636\u0627",letters:["\u062F"]},{city:"\u062E\u0645\u06CC\u0646\u06CC\u200C\u0634\u0647\u0631",letters:["\u0633"]},{city:"\u06AF\u0644\u067E\u0627\u06CC\u06AF\u0627\u0646",letters:["\u0635"]},{city:"\u0646\u0637\u0646\u0632",letters:["\u0637"]},{city:"\u0627\u0631\u062F\u0633\u062A\u0627\u0646",letters:["\u0642"]},{city:"\u062E\u0648\u0627\u0646\u0633\u0627\u0631",letters:["\u0644"]},{city:"\u0646\u0627\u06CC\u06CC\u0646",letters:["\u0645"]},{city:"\u0633\u0645\u06CC\u0631\u0645",letters:["\u0646"]},{city:"\u0641\u0644\u0627\u0648\u0631\u062C\u0627\u0646",letters:["\u0647"]},{city:"\u0641\u0631\u06CC\u062F\u0648\u0646\u200C\u0634\u0647\u0631",letters:["\u0648"]},{city:"\u0644\u0646\u062C\u0627\u0646",letters:["\u06CC"]}]},{code:"43",details:[{city:"\u0641\u0631\u06CC\u062F\u0646",letters:["\u0628"]},{city:"\u0645\u0628\u0627\u0631\u06A9\u0647",letters:["\u062C","\u0637"]},{city:"\u0634\u0627\u0647\u06CC\u0646\u200C\u0634\u0647\u0631 \u0648 \u0645\u06CC\u0645\u0647",letters:["\u062F","\u0644"]},{city:"\u0622\u0631\u0627\u0646 \u0648 \u0628\u06CC\u062F\u06AF\u0644",letters:["\u0633"]},{city:"\u062A\u06CC\u0631\u0627\u0646 \u0648 \u06A9\u0631\u0648\u0646",letters:["\u0635"]},{city:"\u062F\u0647\u0627\u0642\u0627\u0646",letters:["\u0642"]},{city:"\u0646\u062C\u0641\u200C\u0622\u0628\u0627\u062F",letters:["\u0645"]},{city:"\u062E\u0645\u06CC\u0646\u06CC\u200C\u0634\u0647\u0631",letters:["\u0646"]},{city:"\u0644\u0646\u062C\u0627\u0646",letters:["\u0647"]},{city:"\u06A9\u0627\u0634\u0627\u0646",letters:["\u0648"]},{city:"\u0641\u0644\u0627\u0648\u0631\u062C\u0627\u0646",letters:["\u06CC"]}]},{code:"53",details:[{city:"\u0627\u0635\u0641\u0647\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0642","\u0644","\u0648"]},{city:"\u0634\u0647\u0631\u0636\u0627",letters:["\u0637"]},{city:"\u0634\u0627\u0647\u06CC\u0646\u200C\u0634\u0647\u0631 \u0648 \u0645\u06CC\u0645\u0647",letters:["\u0645"]},{city:"\u0646\u062C\u0641\u200C\u0622\u0628\u0627\u062F",letters:["\u0646"]},{city:"\u06A9\u0627\u0634\u0627\u0646",letters:["\u0647"]},{city:"\u062E\u0645\u06CC\u0646\u06CC\u200C\u0634\u0647\u0631",letters:["\u06CC"]}]},{code:"67",details:[{city:"\u0627\u0635\u0641\u0647\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0637","\u0644","\u0645","\u0646","\u0648"]},{city:"\u0634\u0627\u0647\u06CC\u0646\u200C\u0634\u0647\u0631 \u0648 \u0645\u06CC\u0645\u0647",letters:["\u0642"]},{city:"\u0644\u0646\u062C\u0627\u0646",letters:["\u0635"]}]}]},{province:"\u0627\u0644\u0628\u0631\u0632",codes:[{code:"21",details:[{city:"\u0633\u0627\u0648\u062C\u0628\u0644\u0627\u063A",letters:["\u0635"]},{city:"\u06A9\u0631\u062C",letters:["\u0644","\u0648"]}]},{code:"30",details:[{city:"\u06A9\u0631\u062C",letters:["\u062F","\u0633","\u0644","\u0645","\u0647"]}]},{code:"38",details:[{city:"\u06A9\u0631\u062C",letters:["\u0628","\u062F","\u0633","\u0645","\u0646","\u0647","\u06CC"]}]},{code:"68",details:[{city:"\u06A9\u0631\u062C",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"78",details:[{city:"\u0633\u0627\u0648\u062C\u0628\u0644\u0627\u063A",letters:["\u0637"]}]}]},{province:"\u0627\u06CC\u0644\u0627\u0645",codes:[{code:"98",details:[{city:"\u0627\u06CC\u0644\u0627\u0645",letters:["\u0628","\u062C","\u062F"]},{city:"\u0645\u0647\u0631\u0627\u0646",letters:["\u0635"]},{city:"\u0628\u062F\u0631\u0647",letters:["\u0637"]},{city:"\u062F\u0647\u0644\u0631\u0627\u0646",letters:["\u0642"]},{city:"\u0686\u0631\u062F\u0627\u0648\u0644",letters:["\u0644"]},{city:"\u0627\u06CC\u0648\u0627\u0646",letters:["\u0645"]},{city:"\u0622\u0628\u062F\u0627\u0646\u0627\u0646",letters:["\u0646"]}]}]},{province:"\u0628\u0648\u0634\u0647\u0631",codes:[{code:"48",details:[{city:"\u0628\u0648\u0634\u0647\u0631",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"58",details:[{city:"\u062F\u0634\u062A\u0633\u062A\u0627\u0646",letters:["\u0628","\u0645","\u0648"]},{city:"\u06AF\u0646\u0627\u0648\u0647",letters:["\u062C","\u0647"]},{city:"\u06A9\u0646\u06AF\u0627\u0646\u060C \u0639\u0633\u0644\u0648\u06CC\u0647",letters:["\u062F","\u0646"]},{city:"\u062A\u0646\u06AF\u0633\u062A\u0627\u0646",letters:["\u0633"]},{city:"\u062F\u0634\u062A\u06CC",letters:["\u0635","\u06CC"]},{city:"\u062F\u06CC\u0631",letters:["\u0637"]},{city:"\u062F\u06CC\u0644\u0645",letters:["\u0642"]},{city:"\u062C\u0645",letters:["\u0644"]}]}]},{province:"\u062A\u0647\u0631\u0627\u0646",codes:[{code:"11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 20, 40, 50, 60",details:[{city:"\u062A\u0647\u0631\u0627\u0646 (\u0634\u0647\u0631)",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"21",details:[{city:"\u0627\u0633\u0644\u0627\u0645\u0634\u0647\u0631",letters:["\u0628","\u06CC"]},{city:"\u0631\u0628\u0627\u0637\u200C\u06A9\u0631\u06CC\u0645",letters:["\u0645"]},{city:"\u067E\u0627\u06A9\u062F\u0634\u062A",letters:["\u0644"]}]},{code:"30",details:[{city:"\u0627\u0633\u0644\u0627\u0645\u0634\u0647\u0631",letters:["\u0642"]},{city:"\u067E\u0627\u06A9\u062F\u0634\u062A",letters:["\u0646"]}]},{code:"78",details:[{city:"\u0627\u0633\u0644\u0627\u0645\u0634\u0647\u0631",letters:["\u0628","\u0642"]},{city:"\u0631\u0628\u0627\u0637\u200C\u06A9\u0631\u06CC\u0645",letters:["\u062C"]},{city:"\u0631\u06CC",letters:["\u0646"]},{city:"\u0634\u0645\u06CC\u0631\u0627\u0646\u0627\u062A",letters:["\u0648"]}]},{code:"38",details:[{city:"\u0631\u0628\u0627\u0637\u200C\u06A9\u0631\u06CC\u0645",letters:["\u0644"]}]}]},{province:"\u0686\u0647\u0627\u0631\u0645\u062D\u0627\u0644 \u0648 \u0628\u062E\u062A\u06CC\u0627\u0631\u06CC",codes:[{code:"71",details:[{city:"\u0634\u0647\u0631\u06A9\u0631\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"81",details:[{city:"\u0628\u0631\u0648\u062C\u0646",letters:["\u0628","\u0642"]},{city:"\u0644\u0631\u062F\u06AF\u0627\u0646",letters:["\u0633"]},{city:"\u0641\u0627\u0631\u0633\u0627\u0646",letters:["\u062F"]},{city:"\u0627\u0631\u062F\u0644",letters:["\u062C"]},{city:"\u06A9\u0648\u0647\u0631\u0646\u06AF",letters:["\u0635"]},{city:"\u06A9\u06CC\u0627\u0631",letters:["\u0637"]},{city:"\u0628\u0646",letters:["\u0642"]}]}]},{province:"\u062E\u0631\u0627\u0633\u0627\u0646 \u0634\u0645\u0627\u0644\u06CC",codes:[{code:"32",details:[{city:"\u0628\u062C\u0646\u0648\u0631\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635"]}]},{code:"26",details:[{city:"\u0634\u06CC\u0631\u0648\u0627\u0646",letters:["\u0635","\u0628"]},{city:"\u0627\u0633\u0641\u0631\u0627\u06CC\u0646",letters:["\u062C","\u0637"]},{city:"\u0645\u0627\u0646\u0647 \u0648 \u0633\u0645\u0644\u0642\u0627\u0646",letters:["\u062F","\u0644"]},{city:"\u0641\u0627\u0631\u0648\u062C",letters:["\u0645"]},{city:"\u0628\u062C\u0646\u0648\u0631\u062F",letters:["\u0628","\u062C","\u062F"]},{city:"\u062C\u0627\u062C\u0631\u0645 \u0648 \u06AF\u0631\u0645\u0647",letters:["\u0642"]}]}]},{province:"\u062E\u0631\u0627\u0633\u0627\u0646 \u0631\u0636\u0648\u06CC",codes:[{code:"12",details:[{city:"\u0645\u0634\u0647\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"32",details:[{city:"\u0646\u06CC\u0634\u0627\u0628\u0648\u0631",letters:["\u0628","\u06CC"]},{city:"\u0633\u0628\u0632\u0648\u0627\u0631",letters:["\u062C"]},{city:"\u062A\u0631\u0628\u062A\u200C\u062C\u0627\u0645",letters:["\u0635"]},{city:"\u0642\u0648\u0686\u0627\u0646",letters:["\u0637"]},{city:"\u06AF\u0646\u0627\u0628\u0627\u062F",letters:["\u0642"]},{city:"\u062A\u0631\u0628\u062A\u200C\u062D\u06CC\u062F\u0631\u06CC\u0647",letters:["\u0644","\u0646"]},{city:"\u06A9\u0627\u0634\u0645\u0631",letters:["\u0645"]},{city:"\u062A\u0627\u06CC\u0628\u0627\u062F",letters:["\u0647"]},{city:"\u0645\u0634\u0647\u062F",letters:["\u0648"]}]},{code:"36",details:[{city:"\u0645\u0634\u0647\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0647","\u0648"]},{city:"\u06A9\u0627\u0634\u0645\u0631",letters:["\u0642"]},{city:"\u0646\u06CC\u0634\u0627\u0628\u0648\u0631",letters:["\u0644"]},{city:"\u0633\u0628\u0632\u0648\u0627\u0631",letters:["\u0645"]},{city:"\u062A\u0631\u0628\u062A \u062D\u06CC\u062F\u0631\u06CC\u0647",letters:["\u0646"]},{city:"\u062A\u0631\u0628\u062A\u200C\u062C\u0627\u0645",letters:["\u06CC"]}]},{code:"42",details:[{city:"\u0641\u0631\u06CC\u0645\u0627\u0646",letters:["\u0628"]},{city:"\u0645\u0634\u0647\u062F",letters:["\u062C","\u0642","\u0647","\u0648"]},{city:"\u0633\u0631\u062E\u0633",letters:["\u062F"]},{city:"\u062F\u0631\u06AF\u0632",letters:["\u0633"]},{city:"\u062E\u0648\u0627\u0641",letters:["\u0635"]},{city:"\u0686\u0646\u0627\u0631\u0627\u0646",letters:["\u0637"]},{city:"\u0628\u0631\u062F\u0633\u06A9\u0646",letters:["\u0644"]},{city:"\u0631\u0634\u062A\u062E\u0648\u0627\u0631",letters:["\u0645"]},{city:"\u0633\u0628\u0632\u0648\u0627\u0631",letters:["\u0646"]},{city:"\u062A\u0631\u0628\u062A \u062D\u06CC\u062F\u0631\u06CC\u0647",letters:["\u06CC"]},{city:"\u06A9\u0644\u0627\u062A",letters:["\u06CC"]}]},{code:"74",details:[{city:"\u0645\u0634\u0647\u062F",letters:["\u0628","\u062F","\u0633","\u0635","\u0642","\u0645","\u0646","\u0647","\u0648","\u06CC"]},{city:"\u0642\u0648\u0686\u0627\u0646",letters:["\u062C"]},{city:"\u0646\u06CC\u0634\u0627\u0628\u0648\u0631",letters:["\u0637"]},{city:"\u0633\u0628\u0632\u0648\u0627\u0631",letters:["\u0644"]},{city:"\u06AF\u0646\u0627\u0628\u0627\u062F",letters:["\u0646"]}]}]},{province:"\u062E\u0631\u0627\u0633\u0627\u0646 \u062C\u0646\u0648\u0628\u06CC",codes:[{code:"32",details:[{city:"\u0628\u06CC\u0631\u062C\u0646\u062F",letters:["\u062F"]}]},{code:"52",details:[{city:"\u0628\u06CC\u0631\u062C\u0646\u062F",letters:["\u0628","\u062C","\u062F"]},{city:"\u0642\u0627\u06CC\u0646\u0627\u062A",letters:["\u0635"]},{city:"\u0641\u0631\u062F\u0648\u0633",letters:["\u0637"]},{city:"\u0646\u0647\u0628\u0646\u062F\u0627\u0646",letters:["\u0642"]},{city:"\u0633\u0631\u0628\u06CC\u0634\u0647",letters:["\u0644"]}]},{code:"64",details:[{city:"\u0637\u0628\u0633",letters:["\u0642"]}]}]},{province:"\u062E\u0648\u0632\u0633\u062A\u0627\u0646",codes:[{code:"14",details:[{city:"\u0627\u0647\u0648\u0627\u0632",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"24",details:[{city:"\u0622\u0628\u0627\u062F\u0627\u0646",letters:["\u0628","\u0642"]},{city:"\u062E\u0631\u0645\u0634\u0647\u0631",letters:["\u062C"]},{city:"\u062F\u0632\u0641\u0648\u0644",letters:["\u062F"]},{city:"\u0628\u0647\u0628\u0647\u0627\u0646",letters:["\u0633"]},{city:"\u0645\u0633\u062C\u062F \u0633\u0644\u06CC\u0645\u0627\u0646",letters:["\u0635"]},{city:"\u0645\u0627\u0647\u0634\u0647\u0631",letters:["\u0637","\u0647"]},{city:"\u062F\u0634\u062A \u0622\u0632\u0627\u062F\u06AF\u0627\u0646",letters:["\u0642"]},{city:"\u0631\u0627\u0645\u0647\u0631\u0645\u0632",letters:["\u0644"]},{city:"\u0627\u0646\u062F\u06CC\u0645\u0634\u06A9",letters:["\u0645"]},{city:"\u0634\u0648\u0634\u062A\u0631",letters:["\u0646"]},{city:"\u0634\u0627\u062F\u06AF\u0627\u0646",letters:["\u0647"]},{city:"\u0634\u0648\u0634",letters:["\u0648"]},{city:"\u0627\u06CC\u0630\u0647",letters:["\u06CC"]}]},{code:"34",details:[{city:"\u0628\u0627\u063A\u0645\u0644\u06A9",letters:["\u0628"]},{city:"\u0634\u0648\u0634",letters:["\u0628"]},{city:"\u0627\u0645\u06CC\u062F\u06CC\u0647",letters:["\u062C"]},{city:"\u062E\u0631\u0645\u0634\u0647\u0631",letters:["\u062F"]},{city:"\u0647\u0646\u062F\u06CC\u062C\u0627\u0646",letters:["\u062F"]},{city:"\u0627\u0646\u062F\u06CC\u0645\u0634\u06A9",letters:["\u0633"]},{city:"\u0644\u0627\u0644\u06CC",letters:["\u0633"]},{city:"\u062F\u0632\u0641\u0648\u0644",letters:["\u0635","\u0648"]},{city:"\u0645\u0627\u0647\u0634\u0647\u0631",letters:["\u0637"]},{city:"\u0622\u0628\u0627\u062F\u0627\u0646",letters:["\u0642"]},{city:"\u0628\u0647\u0628\u0647\u0627\u0646",letters:["\u0646"]},{city:"\u0634\u0648\u0634\u062A\u0631",letters:["\u0647"]},{city:"\u0627\u0647\u0648\u0627\u0632",letters:["\u06CC"]}]}]},{province:"\u0632\u0646\u062C\u0627\u0646",codes:[{code:"87",details:[{city:"\u0632\u0646\u062C\u0627\u0646",letters:["\u0628","\u062F","\u062C","\u0633","\u0635","\u0637"]}]},{code:"97",details:[{city:"\u0627\u0628\u0647\u0631",letters:["\u0628","\u0642"]},{city:"\u062E\u062F\u0627\u0628\u0646\u062F\u0647",letters:["\u062C"]},{city:"\u062E\u0631\u0645\u200C\u062F\u0631\u0647",letters:["\u062F"]},{city:"\u0627\u06CC\u062C\u0631\u0648\u062F",letters:["\u0633"]},{city:"\u0637\u0627\u0631\u0645",letters:["\u0635"]},{city:"\u0645\u0627\u0647\u200C\u0646\u0634\u0627\u0646",letters:["\u0637"]}]}]},{province:"\u0633\u0645\u0646\u0627\u0646",codes:[{code:"86",details:[{city:"\u0633\u0645\u0646\u0627\u0646",letters:["\u0628","\u062F","\u062C"]}]},{code:"96",details:[{city:"\u062F\u0627\u0645\u063A\u0627\u0646",letters:["\u0628"]},{city:"\u0634\u0627\u0647\u0631\u0648\u062F",letters:["\u062C","\u0637"]},{city:"\u06AF\u0631\u0645\u0633\u0627\u0631",letters:["\u062F"]},{city:"\u0645\u0647\u062F\u06CC\u200C\u0634\u0647\u0631",letters:["\u0633"]}]}]},{province:"\u0633\u06CC\u0633\u062A\u0627\u0646 \u0648 \u0628\u0644\u0648\u0686\u0633\u062A\u0627\u0646",codes:[{code:"85",details:[{city:"\u0632\u0627\u0647\u062F\u0627\u0646",letters:["\u0628","\u062F","\u062C","\u0633","\u0635","\u0637"]}]},{code:"95",details:[{city:"\u0632\u0627\u0628\u0644",letters:["\u0628","\u0644","\u0648"]},{city:"\u0627\u06CC\u0631\u0627\u0646\u0634\u0647\u0631",letters:["\u062C","\u0645"]},{city:"\u062E\u0627\u0634",letters:["\u062F"]},{city:"\u0633\u0631\u0627\u0648\u0627\u0646",letters:["\u0633","\u0646"]},{city:"\u0646\u06CC\u06A9\u0634\u0647\u0631",letters:["\u0635"]},{city:"\u0633\u0631\u0628\u0627\u0632",letters:["\u0637"]},{city:"\u0686\u0627\u0628\u0647\u0627\u0631",letters:["\u0642"]}]}]},{province:"\u0641\u0627\u0631\u0633",codes:[{code:"63",details:[{city:"\u0634\u06CC\u0631\u0627\u0632",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"73",details:[{city:"\u062C\u0647\u0631\u0645",letters:["\u0628","\u0647"]},{city:"\u0644\u0627\u0631\u0633\u062A\u0627\u0646",letters:["\u062C"]},{city:"\u062F\u0627\u0631\u0627\u0628",letters:["\u062F"]},{city:"\u0641\u0633\u0627",letters:["\u0633"]},{city:"\u06A9\u0627\u0632\u0631\u0648\u0646",letters:["\u0635"]},{city:"\u0641\u06CC\u0631\u0648\u0632\u0622\u0628\u0627\u062F",letters:["\u0637"]},{city:"\u0622\u0628\u0627\u062F\u0647",letters:["\u0642"]},{city:"\u0645\u0631\u0648\u062F\u0634\u062A",letters:["\u0644"]},{city:"\u0644\u0627\u0645\u0631\u062F",letters:["\u0645"]},{city:"\u0646\u06CC\u200C\u0631\u06CC\u0632",letters:["\u0646"]},{city:"\u0627\u0642\u0644\u06CC\u062F",letters:["\u0647"]},{city:"\u0627\u0633\u062A\u0647\u0628\u0627\u0646",letters:["\u0648"]},{city:"\u0633\u067E\u06CC\u062F\u0627\u0646",letters:["\u06CC"]},{city:"\u0645\u0645\u0633\u0646\u06CC",letters:["\u06CC"]}]},{code:"83",details:[{city:"\u0645\u0645\u0633\u0646\u06CC",letters:["\u0628"]},{city:"\u0634\u06CC\u0631\u0627\u0632 \u0648 \u0634\u0647\u0631\u0647\u0627\u06CC \u062F\u06CC\u06AF\u0631",letters:["\u062C","\u0635","\u0637","\u0646"]},{city:"\u0642\u06CC\u0631 \u0648 \u06A9\u0627\u0631\u0632\u06CC\u0646",letters:["\u062F"]},{city:"\u062F\u0627\u0631\u0627\u0628\u060C \u0645\u0647\u0631\u060C \u0641\u06CC\u0631\u0648\u0632\u0622\u0628\u0627\u062F",letters:["\u0633"]},{city:"\u0622\u0628\u0627\u062F\u0647\u060C \u0628\u0648\u0627\u0646\u0627\u062A",letters:["\u0642"]},{city:"\u0641\u0631\u0627\u0634\u0628\u0646\u062F",letters:["\u0644"]},{city:"\u0644\u0627\u0631\u0633\u062A\u0627\u0646",letters:["\u0645"]},{city:"\u062C\u0647\u0631\u0645",letters:["\u0647"]},{city:"\u0645\u0631\u0648\u062F\u0634\u062A",letters:["\u0648"]},{city:"\u0641\u0633\u0627",letters:["\u06CC"]}]},{code:"93",details:[{city:"\u0634\u06CC\u0631\u0627\u0632",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0645","\u0646"]},{city:"\u0644\u0627\u0631\u0633\u062A\u0627\u0646",letters:["\u0644"]},{city:"\u0634\u06CC\u0631\u0627\u0632 \u0648 \u0634\u0647\u0631\u0647\u0627\u06CC \u062F\u06CC\u06AF\u0631",letters:["\u0648","\u06CC"]}]}]},{province:"\u0642\u0632\u0648\u06CC\u0646",codes:[{code:"79",details:[{city:"\u0642\u0632\u0648\u06CC\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645"]}]},{code:"89",details:[{city:"\u062A\u0627\u06A9\u0633\u062A\u0627\u0646",letters:["\u0628","\u0633"]},{city:"\u0628\u0648\u06CC\u06CC\u0646 \u0632\u0647\u0631\u0627",letters:["\u062C"]},{city:"\u0622\u0628\u06CC\u06A9",letters:["\u062F"]}]}]},{province:"\u0642\u0645",codes:[{code:"16",details:[{city:"\u0642\u0645",letters:["\u062A\u0645\u0627\u0645 \u062D\u0631\u0648\u0641"]}]}]},{province:"\u06A9\u0631\u062F\u0633\u062A\u0627\u0646",codes:[{code:"51",details:[{city:"\u0633\u0646\u0646\u062F\u062C",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648"]}]},{code:"61",details:[{city:"\u0633\u0642\u0632",letters:["\u0628","\u0645"]},{city:"\u0628\u06CC\u062C\u0627\u0631",letters:["\u062C"]},{city:"\u0628\u0627\u0646\u0647",letters:["\u062F","\u0647"]},{city:"\u0642\u0631\u0648\u0647",letters:["\u0633","\u0646"]},{city:"\u0645\u0631\u06CC\u0648\u0627\u0646",letters:["\u0635","\u0648"]},{city:"\u062F\u06CC\u0648\u0627\u0646\u062F\u0631\u0647",letters:["\u0637"]},{city:"\u06A9\u0627\u0645\u06CC\u0627\u0631\u0627\u0646",letters:["\u0642"]},{city:"\u0633\u0631\u0648\u0622\u0628\u0627\u062F",letters:["\u0644"]}]}]},{province:"\u06A9\u0631\u0645\u0627\u0646",codes:[{code:"45",details:[{city:"\u06A9\u0631\u0645\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646"]}]},{code:"65",details:[{city:"\u0631\u0641\u0633\u0646\u062C\u0627\u0646",letters:["\u0628","\u06CC"]},{city:"\u0628\u0645",letters:["\u062C"]},{city:"\u0633\u06CC\u0631\u062C\u0627\u0646",letters:["\u062F"]},{city:"\u0628\u0627\u0641\u062A",letters:["\u0633"]},{city:"\u062C\u06CC\u0631\u0641\u062A",letters:["\u0635"]},{city:"\u0632\u0631\u0646\u062F",letters:["\u0637"]},{city:"\u06A9\u0647\u0646\u0648\u062C",letters:["\u0642"]},{city:"\u0634\u0647\u0631 \u0628\u0627\u0628\u06A9",letters:["\u0644"]},{city:"\u0628\u0631\u062F\u0633\u06CC\u0631",letters:["\u0645"]},{city:"\u0645\u0646\u0648\u062C\u0627\u0646",letters:["\u0646"]},{city:"\u0631\u0627\u0648\u0631",letters:["\u0647"]},{city:"\u0639\u0646\u0628\u0631\u0622\u0628\u0627\u062F",letters:["\u0648"]}]},{code:"75",details:[{city:"\u0633\u06CC\u0631\u062C\u0627\u0646",letters:["\u0628","\u0635","\u0645"]},{city:"\u0628\u0645",letters:["\u062C"]},{city:"\u062C\u06CC\u0631\u0641\u062A",letters:["\u062F"]},{city:"\u0631\u0641\u0633\u0646\u062C\u0627\u0646",letters:["\u0633","\u0644"]},{city:"\u0632\u0631\u0646\u062F",letters:["\u0637"]},{city:"\u06A9\u0647\u0646\u0648\u062C",letters:["\u0642"]}]}]},{province:"\u06A9\u0631\u0645\u0627\u0646\u0634\u0627\u0647",codes:[{code:"19",details:[{city:"\u06A9\u0631\u0645\u0627\u0646\u0634\u0627\u0647",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0647","\u0648"]}]},{code:"29",details:[{city:"\u0627\u0633\u0644\u0627\u0645\u200C\u0622\u0628\u0627\u062F \u063A\u0631\u0628",letters:["\u0628","\u0647"]},{city:"\u06AF\u06CC\u0644\u0627\u0646 \u063A\u0631\u0628",letters:["\u062C"]},{city:"\u0633\u0631\u067E\u0644\u200C\u0630\u0647\u0627\u0628",letters:["\u062F"]},{city:"\u067E\u0627\u0648\u0647",letters:["\u0633"]},{city:"\u06A9\u0646\u06AF\u0627\u0648\u0631",letters:["\u0635"]},{city:"\u0642\u0635\u0631\u0634\u06CC\u0631\u06CC\u0646",letters:["\u0637"]},{city:"\u0633\u0646\u0642\u0631/\u0633\u0642\u0632",letters:["\u0642"]},{city:"\u062C\u0648\u0627\u0646\u0631\u0648\u062F",letters:["\u0644"]},{city:"\u0635\u062D\u0646\u0647",letters:["\u0645"]},{city:"\u0647\u0631\u0633\u06CC\u0646",letters:["\u0646"]},{city:"\u062B\u0644\u0627\u062B \u0628\u0627\u0628\u0627\u062C\u0627\u0646\u06CC",letters:["\u0648"]}]}]},{province:"\u06A9\u0647\u06AF\u06CC\u0644\u0648\u06CC\u0647 \u0648 \u0628\u0648\u06CC\u0631\u0627\u062D\u0645\u062F",codes:[{code:"49",details:[{city:"\u06CC\u0627\u0633\u0648\u062C",letters:["\u0628","\u062C","\u062F"]},{city:"\u06AF\u0686\u0633\u0627\u0631\u0627\u0646",letters:["\u0635","\u0644"]},{city:"\u06A9\u0647\u06AF\u06CC\u0644\u0648\u06CC\u0647",letters:["\u0637"]},{city:"\u062F\u0646\u0627",letters:["\u0642"]}]}]},{province:"\u06AF\u0644\u0633\u062A\u0627\u0646",codes:[{code:"59",details:[{city:"\u06AF\u0644\u0633\u062A\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635"]},{city:"\u06AF\u0646\u0628\u062F \u06A9\u0627\u0648\u0648\u0633",letters:["\u0628","\u0647"]},{city:"\u0628\u0646\u062F\u0631\u062A\u0631\u06A9\u0645\u0646",letters:["\u062C"]},{city:"\u06A9\u0631\u062F\u06A9\u0648\u06CC",letters:["\u062F"]},{city:"\u0639\u0644\u06CC\u200C\u0622\u0628\u0627\u062F",letters:["\u0633"]},{city:"\u0622\u0632\u0627\u062F\u0634\u0647\u0631",letters:["\u0635"]},{city:"\u0645\u06CC\u0646\u0648\u062F\u0634\u062A",letters:["\u0637"]},{city:"\u0628\u0646\u062F\u0631\u06AF\u0632",letters:["\u0642"]},{city:"\u0631\u0627\u0645\u06CC\u0627\u0646",letters:["\u0644"]},{city:"\u0622\u0642\u200C\u0642\u0644\u0627",letters:["\u0645"]},{city:"\u06A9\u0644\u0627\u0644\u0647",letters:["\u0646"]}]}]},{province:"\u06AF\u06CC\u0644\u0627\u0646",codes:[{code:"46",details:[{city:"\u0631\u0634\u062A",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648"]}]},{code:"56",details:[{city:"\u0627\u0646\u0632\u0644\u06CC",letters:["\u0628"]},{city:"\u0644\u0627\u0647\u06CC\u062C\u0627\u0646",letters:["\u062C"]},{city:"\u0622\u0633\u062A\u0627\u0631\u0627",letters:["\u062F"]},{city:"\u0637\u0627\u0644\u0634",letters:["\u0633"]},{city:"\u0631\u0648\u062F\u0633\u0631",letters:["\u0635"]},{city:"\u0631\u0648\u062F\u0628\u0627\u0631",letters:["\u0637"]},{city:"\u0635\u0648\u0645\u0639\u0647\u200C\u0633\u0631\u0627",letters:["\u0642"]},{city:"\u0641\u0648\u0645\u0646",letters:["\u0644"]},{city:"\u0644\u0646\u06AF\u0631\u0648\u062F",letters:["\u0645"]},{city:"\u0631\u0636\u0648\u0627\u0646\u200C\u0634\u0647\u0631",letters:["\u0646"]},{city:"\u0645\u0627\u0633\u0627\u0644",letters:["\u0647"]},{city:"\u0627\u0645\u0644\u0634",letters:["\u0648"]},{city:"\u0634\u0641\u062A",letters:["\u06CC"]}]},{code:"76",details:[{city:"\u0633\u06CC\u0627\u0647\u06A9\u0644",letters:["\u0628"]},{city:"\u0622\u0633\u062A\u0627\u0646\u0647",letters:["\u062C"]},{city:"\u0644\u0627\u0647\u06CC\u062C\u0627\u0646",letters:["\u062F"]},{city:"\u0627\u0646\u0632\u0644\u06CC",letters:["\u0633"]},{city:"\u0644\u0646\u06AF\u0631\u0648\u062F",letters:["\u0635"]},{city:"\u0637\u0627\u0644\u0634",letters:["\u0637"]},{city:"\u0631\u0648\u062F\u0633\u0631",letters:["\u0642"]}]}]},{province:"\u0644\u0631\u0633\u062A\u0627\u0646",codes:[{code:"31",details:[{city:"\u062E\u0631\u0645\u200C\u0622\u0628\u0627\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635"]}]},{code:"41",details:[{city:"\u0628\u0631\u0648\u062C\u0631\u062F",letters:["\u0628","\u0645","\u0646"]},{city:"\u0627\u0644\u06CC\u06AF\u0648\u062F\u0631\u0632",letters:["\u062C"]},{city:"\u062F\u0648\u0631\u0648\u062F",letters:["\u062F","\u0648"]},{city:"\u06A9\u0648\u0647\u062F\u0634\u062A",letters:["\u0633","\u0648"]},{city:"\u062F\u0644\u0641\u0627\u0646",letters:["\u0635"]},{city:"\u0627\u0632\u0646\u0627",letters:["\u0637"]},{city:"\u067E\u0644 \u062F\u062E\u062A\u0631",letters:["\u0642"]},{city:"\u0633\u0644\u0633\u0644\u0647",letters:["\u0644"]}]}]},{province:"\u0645\u0627\u0632\u0646\u062F\u0631\u0627\u0646",codes:[{code:"62",details:[{city:"\u0633\u0627\u0631\u06CC",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637"]}]},{code:"72",details:[{city:"\u0622\u0645\u0644",letters:["\u0628"]},{city:"\u0628\u0627\u0628\u0644",letters:["\u062C"]},{city:"\u062A\u0646\u06A9\u0627\u0628\u0646",letters:["\u062F"]},{city:"\u0631\u0627\u0645\u0633\u0631",letters:["\u0633"]},{city:"\u0646\u0648\u0634\u0647\u0631",letters:["\u0635"]},{city:"\u0646\u0648\u0631",letters:["\u0637","\u06CC"]},{city:"\u0628\u0647\u0634\u0647\u0631",letters:["\u0642"]},{city:"\u0642\u0627\u0626\u0645\u0634\u0647\u0631",letters:["\u0644"]},{city:"\u0628\u0627\u0628\u0644\u0633\u0631",letters:["\u0645"]},{city:"\u0686\u0627\u0644\u0648\u0633",letters:["\u0646"]},{city:"\u0646\u06A9\u0627",letters:["\u0647"]},{city:"\u0645\u062D\u0645\u0648\u062F\u0622\u0628\u0627\u062F",letters:["\u0648"]},{city:"\u062C\u0648\u06CC\u0628\u0627\u0631",letters:["\u06CC"]}]},{code:"82",details:[{city:"\u0633\u0648\u0627\u062F\u06A9\u0648\u0647",letters:["\u0628"]},{city:"\u0628\u0627\u0628\u0644",letters:["\u062C","\u0635","\u0645"]},{city:"\u0622\u0645\u0644",letters:["\u062F","\u0642"]},{city:"\u0642\u0627\u0626\u0645\u0634\u0647\u0631",letters:["\u0633","\u0646"]},{city:"\u062A\u0646\u06A9\u0627\u0628\u0646",letters:["\u0637"]},{city:"\u0628\u0627\u0628\u0644\u0633\u0631",letters:["\u0644"]},{city:"\u0628\u0647\u0634\u0647\u0631",letters:["\u0647"]},{city:"\u0686\u0627\u0644\u0648\u0633",letters:["\u0648"]},{city:"\u0646\u0648\u0634\u0647\u0631",letters:["\u06CC"]}]},{code:"92",details:[{city:"\u0622\u0645\u0644",letters:["\u0628"]},{city:"\u0628\u0627\u0628\u0644",letters:["\u062C","\u0635"]},{city:"\u062A\u0646\u06A9\u0627\u0628\u0646",letters:["\u062F"]},{city:"\u0642\u0627\u0626\u0645\u0634\u0647\u0631",letters:["\u0633"]}]}]},{province:"\u0645\u0631\u06A9\u0632\u06CC",codes:[{code:"47",details:[{city:"\u0627\u0631\u0627\u06A9",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642"]}]},{code:"57",details:[{city:"\u0633\u0627\u0648\u0647",letters:["\u0628","\u0647","\u0648"]},{city:"\u062E\u0645\u06CC\u0646",letters:["\u062C"]},{city:"\u0645\u062D\u0644\u0627\u062A",letters:["\u062F"]},{city:"\u062A\u0641\u0631\u0634",letters:["\u0633"]},{city:"\u062F\u0644\u06CC\u062C\u0627\u0646",letters:["\u0635"]},{city:"\u0622\u0634\u062A\u06CC\u0627\u0646",letters:["\u0637"]},{city:"\u0634\u0627\u0632\u0646\u062F",letters:["\u0642"]},{city:"\u0632\u0631\u0646\u062F\u06CC\u0647",letters:["\u0644"]},{city:"\u06A9\u0645\u06CC\u062C\u0627\u0646",letters:["\u0646"]}]}]},{province:"\u0647\u0631\u0645\u0632\u06AF\u0627\u0646",codes:[{code:"84",details:[{city:"\u0628\u0646\u062F\u0631\u0639\u0628\u0627\u0633",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644"]}]},{code:"94",details:[{city:"\u0645\u06CC\u0646\u0627\u0628",letters:["\u0628","\u0645"]},{city:"\u0628\u0646\u062F\u0631 \u0644\u0646\u06AF\u0647",letters:["\u062C","\u0646"]},{city:"\u0631\u0648\u062F\u0627\u0646",letters:["\u062F"]},{city:"\u0627\u0628\u0648\u0645\u0648\u0633\u06CC",letters:["\u0633"]},{city:"\u062C\u0627\u0633\u06A9",letters:["\u0635"]},{city:"\u0628\u0633\u062A\u06A9",letters:["\u0637"]},{city:"\u062D\u0627\u062C\u06CC\u200C\u0622\u0628\u0627\u062F",letters:["\u0642"]},{city:"\u0642\u0634\u0645",letters:["\u0644"]}]}]},{province:"\u0647\u0645\u062F\u0627\u0646",codes:[{code:"18",details:[{city:"\u0647\u0645\u062F\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0642","\u0644","\u0637"]}]},{code:"28",details:[{city:"\u0646\u0647\u0627\u0648\u0646\u062F",letters:["\u0628","\u0645"]},{city:"\u0645\u0644\u0627\u06CC\u0631",letters:["\u062C","\u0644","\u0646"]},{city:"\u062A\u0648\u06CC\u0633\u0631\u06A9\u0627\u0646",letters:["\u062F"]},{city:"\u06A9\u0628\u0648\u062F\u0631\u0622\u0647\u0646\u06AF",letters:["\u0633"]},{city:"\u0631\u0632\u0646",letters:["\u0635"]},{city:"\u0628\u0647\u0627\u0631",letters:["\u0637"]},{city:"\u0627\u0633\u062F\u0622\u0628\u0627\u062F",letters:["\u0642"]}]}]},{province:"\u06CC\u0632\u062F",codes:[{code:"54",details:[{city:"\u06CC\u0632\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646"]}]},{code:"64",details:[{city:"\u0627\u0631\u062F\u06A9\u0627\u0646",letters:["\u0628"]},{city:"\u062A\u0641\u062A",letters:["\u062C"]},{city:"\u0645\u06CC\u0628\u062F",letters:["\u062F"]},{city:"\u0628\u0627\u0641\u0642",letters:["\u0633"]},{city:"\u0645\u0647\u0631\u06CC\u0632",letters:["\u0635"]},{city:"\u0627\u0628\u0631\u06A9\u0648\u0647",letters:["\u0637"]},{city:"\u062E\u0627\u062A\u0645",letters:["\u0644"]},{city:"\u0635\u062F\u0648\u0642 (\u0627\u0634\u06A9\u0630\u0631)",letters:["\u0645"]}]}]}];var G=_;function o(e){if(!e)return"";let t=1776,s=1785,l=1632,i=1641,c=1610,n=1740,p=1603,a=1705,y="";for(let u=0;u<e.length;u++){let m=e.charCodeAt(u),b=e[u];m>=t&&m<=s?b=String(m-t):m>=l&&m<=i?b=String(m-l):m===c?b=String.fromCharCode(n):m===p&&(b=String.fromCharCode(a)),y+=b}return y}function F(e){let t=o(e).replace(/[\-\s]/g,"");if(t.length<6)return null;let s=t.substring(0,6),l=N[s];return l?{...l,formatted:t.replace(/(\d{4})(?=\d)/g,"$1-")}:null}function L(e){let t=o(e),s="";if(t.startsWith("09")?s=t.substring(0,4):t.startsWith("9")?s="0"+t.substring(0,3):t.startsWith("+98")&&(s="0"+t.substring(3,6)),s.length!==4)return null;for(let[l,i]of Object.entries(M))if(i.prefixes.includes(s))return{name:l,label:i.label,logo:i.logo};return null}function B(e){let t=0,s=2;for(let i=e.length-1;i>=0;i--)t+=parseInt(e[i])*s,s++,s>7&&(s=2);let l=t%11;return l===0||l===1?0:11-l}function I(e){let t=o(e);if(!/^\d{6,13}$/.test(t))return!1;let s=parseInt(t.slice(-1)),l=t.slice(0,-1);return B(l)===s}function $(e,t){let s=o(e),l=o(t);if(!/^\d{6,13}$/.test(s)||!/^\d{6,13}$/.test(l))return!1;let i=parseInt(s.slice(-2,-1)),c=s.slice(0,-2);if(B(c)!==i)return!1;let n=parseInt(s.slice(-1)),p=l+s.slice(0,-1);return B(p)===n}function T(e,t){let s=o(e);if(s.length<6||s.length>13)return null;let l=parseInt(s.slice(-2,-1)),i=D[l]||{label:"\u0646\u0627\u0645\u0634\u062E\u0635",slug:"unknown",color:"#333",logo:""},c=0,n="0",p=I(s);if(t){let a=o(t);if(!$(a,s))p=!1;else{let y=a.slice(0,-5);y.length>0&&(c=parseInt(y)*1e3,n=new Intl.NumberFormat("fa-IR").format(c))}}return{type:i,amount:c,formattedAmount:n,isValid:p}}function C(e){let t=o(e).replace(/[\s-]/g,""),s=/^(\d{2})([\u0600-\u06FF]{1,3}|[A-Za-z])(\d{3})(\d{2})$/,l=t.match(s);if(!l)return null;let i=l[2],c=l[4];for(let n of G){let p=n.codes.find(a=>{let y=a.code;return y.includes(",")?y.split(",").map(u=>u.trim()).includes(c):y===c});if(p){let a=p.details.find(y=>y.letters.includes(i)||y.letters.includes("\u062A\u0645\u0627\u0645 \u062D\u0631\u0648\u0641"));if(a)return{province:n.province,city:a.city,isValid:!0}}}return null}function x(e){return C(e)!==null}function S(e){let t=o(e);if(!/^\d{10}$/.test(t)||/^(\d)\1+$/.test(t))return!1;let s=parseInt(t[9]),l=t.substring(0,9).split("").reduce((i,c,n)=>i+parseInt(c)*(10-n),0)%11;return l<2?s===l:s===11-l}function E(e){let t=o(e);if(t.length!==11||!/^\d{11}$/.test(t))return!1;let s=parseInt(t[9]),l=parseInt(t[10]),i=[29,27,23,19,17,29,27,23,19,17],c=0;for(let a=0;a<10;a++){let y=parseInt(t[a]);c+=(y+s+2)*i[a]}let n=c%11;return(n===10?0:n)===l}function A(e){let t=o(e);return/^[A-Za-z][0-9]{8,9}$/.test(t)}function O(e){let t=o(e).replace(/[\-\s]/g,"");if(!/^\d{16}$/.test(t))return!1;let s=0,l=!1;for(let i=t.length-1;i>=0;i--){let c=parseInt(t[i]);l&&(c*=2,c>9&&(c-=9)),s+=c,l=!l}return s%10===0}function P(e,{strictZero:t="optional"}={}){let s=o(e),l="9\\d{9}",i="";return t===!0?i=`^0${l}$`:t===!1?i=`^${l}$`:i=`^(?:0|\\+98)?${l}$`,new RegExp(i).test(s)}function z(e){let s=o(e).toUpperCase().replace(/[\-\s]/g,"");if(s.length!==26||!s.startsWith("IR"))return!1;let i=(s.substring(4)+s.substring(0,4)).split("").map(c=>{let n=c.charCodeAt(0);return n>=48&&n<=57?c:(n-55).toString()}).join("");try{return BigInt(i)%BigInt(97)===BigInt(1)}catch{return!1}}function R(e){let t=o(e);return/^[1-9]\d{9}$/.test(t)}function k(e){let t=o(e);return/^0\d{2}\d{8}$/.test(t)}var W={fa:{melliCode:"\u06A9\u062F \u0645\u0644\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",shenaseMelli:"\u0634\u0646\u0627\u0633\u0647 \u0645\u0644\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",passport:"\u0634\u0645\u0627\u0631\u0647 \u06AF\u0630\u0631\u0646\u0627\u0645\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",cardNumber:"\u0634\u0645\u0627\u0631\u0647 \u06A9\u0627\u0631\u062A \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",mobile:"\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06CC\u0644 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",sheba:"\u0634\u0645\u0627\u0631\u0647 \u0634\u0628\u0627 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",postalCode:"\u06A9\u062F \u067E\u0633\u062A\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",landline:"\u0634\u0645\u0627\u0631\u0647 \u062A\u0644\u0641\u0646 \u062B\u0627\u0628\u062A \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",billId:"\u0634\u0646\u0627\u0633\u0647 \u0642\u0628\u0636 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",paymentId:"\u0634\u0646\u0627\u0633\u0647 \u067E\u0631\u062F\u0627\u062E\u062A \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",plateNumber:"\u067E\u0644\u0627\u06A9 \u062E\u0648\u062F\u0631\u0648 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A"},en:{melliCode:"Invalid national code",shenaseMelli:"Invalid legal person ID (Shenase Melli)",passport:"Invalid passport number",cardNumber:"Invalid card number",mobile:"Invalid mobile number",sheba:"Invalid Sheba (IBAN) number",postalCode:"Invalid postal code",landline:"Invalid landline number",billId:"Invalid Bill ID",paymentId:"Invalid Payment ID",plateNumber:"Invalid License Plate"}},g=(e,t)=>{if(t?.message)return t.message;let s=t?.locale||"fa";return W[s][e]};var H=e=>d.z.string().refine(t=>S(t),{message:g("melliCode",e)}),U=e=>d.z.string().refine(t=>E(t),{message:g("shenaseMelli",e)}),q=e=>d.z.string().refine(t=>A(t),{message:g("passport",e)}),J=e=>d.z.string().refine(t=>O(t),{message:g("cardNumber",e)}),Q=e=>d.z.string().refine(t=>P(t,{strictZero:e?.strictZero}),{message:g("mobile",e)}),X=e=>d.z.string().refine(t=>z(t),{message:g("sheba",e)}),tt=e=>d.z.string().refine(t=>R(t),{message:g("postalCode",e)}),et=e=>d.z.string().refine(t=>k(t),{message:g("landline",e)}),st=e=>d.z.string().refine(t=>I(t),{message:g("billId",e)}),lt=e=>d.z.string().refine(t=>t.length>=6&&t.length<=13,{message:g("paymentId",e)}),it=e=>d.z.string().refine(t=>x(t),{message:g("plateNumber",e)}),rt=e=>d.z.preprocess(t=>typeof t=="string"?o(t):t,e);0&&(module.exports={getBankInfo,getBillInfo,getMobileOperator,getPlateInfo,isBillIdValid,isCardNumber,isIranianMobile,isLandline,isMelliCode,isPassport,isPaymentIdValid,isPlateNumber,isPostalCode,isSheba,isShenaseMelli,preprocessNumber,verifyAndNormalize,zBillId,zCardNumber,zIranianMobile,zLandline,zMelliCode,zPassport,zPaymentId,zPlateNumber,zPostalCode,zSheba,zShenaseMelli});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|