@gravity-rail/cli 0.16.0 → 0.18.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/README.md +24 -0
- package/dist/{account-verify-phone-Q2NIRSX4.js → account-verify-phone-LKTAJQD7.js} +2 -2
- package/dist/{chunk-EITDLX75.js → chunk-RO6EEXTM.js} +47 -5
- package/dist/chunk-RO6EEXTM.js.map +1 -0
- package/dist/gr.js +3512 -3626
- package/dist/gr.js.map +1 -1
- package/dist/lib.d.ts +71 -1
- package/dist/lib.js +2158 -306
- package/dist/lib.js.map +1 -1
- package/package.json +5 -5
- package/dist/chunk-EITDLX75.js.map +0 -1
- /package/dist/{account-verify-phone-Q2NIRSX4.js.map → account-verify-phone-LKTAJQD7.js.map} +0 -0
package/dist/lib.js
CHANGED
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
startAccountPhoneVerify,
|
|
33
33
|
stderr,
|
|
34
34
|
unwrapItems
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-RO6EEXTM.js";
|
|
36
36
|
import {
|
|
37
37
|
AGUIClient,
|
|
38
38
|
formatTimestamp,
|
|
@@ -59,6 +59,19 @@ var COMMON_ARGS = [
|
|
|
59
59
|
{ name: "id", description: "Entity ID" },
|
|
60
60
|
{ name: "uuid", description: "Entity UUID" }
|
|
61
61
|
];
|
|
62
|
+
var ORG_UUID_ARG = {
|
|
63
|
+
name: "org-uuid",
|
|
64
|
+
aliases: ["org"],
|
|
65
|
+
description: "Organization UUID or ID",
|
|
66
|
+
required: true
|
|
67
|
+
};
|
|
68
|
+
function requireOrgRef(args) {
|
|
69
|
+
const val = args["org-uuid"] ?? args.org;
|
|
70
|
+
if (typeof val !== "string" || !val) {
|
|
71
|
+
throw new CLIError("Missing required argument: --org-uuid");
|
|
72
|
+
}
|
|
73
|
+
return val;
|
|
74
|
+
}
|
|
62
75
|
function parseArgs(defs, argv) {
|
|
63
76
|
const allDefs = [...defs, ...COMMON_ARGS];
|
|
64
77
|
const result2 = {};
|
|
@@ -74,6 +87,7 @@ function parseArgs(defs, argv) {
|
|
|
74
87
|
"--api-url",
|
|
75
88
|
"--output-format",
|
|
76
89
|
"-o",
|
|
90
|
+
"--jq",
|
|
77
91
|
"--verbose",
|
|
78
92
|
"-v",
|
|
79
93
|
"--allow-write",
|
|
@@ -129,6 +143,84 @@ function findDef(defs, arg) {
|
|
|
129
143
|
return void 0;
|
|
130
144
|
}
|
|
131
145
|
|
|
146
|
+
// src/lib/global-options.ts
|
|
147
|
+
var MAX_COMMAND_WORDS = 4;
|
|
148
|
+
function parseGlobalOptions(argv, spec) {
|
|
149
|
+
let env = spec.defaultEnv;
|
|
150
|
+
let profile;
|
|
151
|
+
let apiUrl;
|
|
152
|
+
let outputFormat;
|
|
153
|
+
let jq;
|
|
154
|
+
let verbose = false;
|
|
155
|
+
let allowWrite = false;
|
|
156
|
+
const commandWords = [];
|
|
157
|
+
const rest = [];
|
|
158
|
+
let collectingCommand = true;
|
|
159
|
+
for (let i = 0; i < argv.length; i++) {
|
|
160
|
+
const arg = argv[i];
|
|
161
|
+
const eqIdx = arg.indexOf("=");
|
|
162
|
+
const flagPart = eqIdx !== -1 ? arg.slice(0, eqIdx) : arg;
|
|
163
|
+
const inlineValue = eqIdx !== -1 ? arg.slice(eqIdx + 1) : void 0;
|
|
164
|
+
const readValue = () => inlineValue ?? argv[++i];
|
|
165
|
+
if (spec.extraFlag?.(flagPart, readValue)) {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
if (flagPart === "--env") {
|
|
169
|
+
const value = readValue();
|
|
170
|
+
if (value) env = value;
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
if (flagPart === "--profile" || flagPart === "--account") {
|
|
174
|
+
const value = readValue();
|
|
175
|
+
if (value) profile = value;
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
if (flagPart === "--api-url") {
|
|
179
|
+
const value = readValue();
|
|
180
|
+
if (value) apiUrl = value;
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if (flagPart === "-o" || flagPart === "--output-format") {
|
|
184
|
+
const value = readValue();
|
|
185
|
+
if (value) outputFormat = value;
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
if (flagPart === "--jq") {
|
|
189
|
+
const value = readValue();
|
|
190
|
+
if (!value) {
|
|
191
|
+
throw new CLIError(
|
|
192
|
+
"--jq requires a filter, e.g. --jq '.items | length'. Omit --jq entirely to get unfiltered JSON."
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
jq = value;
|
|
196
|
+
outputFormat = "json";
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
if (flagPart === "-v" || flagPart === "--verbose") {
|
|
200
|
+
verbose = true;
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
if (flagPart === "--allow-write") {
|
|
204
|
+
allowWrite = true;
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
if (collectingCommand && !arg.startsWith("-")) {
|
|
208
|
+
commandWords.push(arg);
|
|
209
|
+
} else {
|
|
210
|
+
collectingCommand = false;
|
|
211
|
+
rest.push(arg);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
while (commandWords.length > MAX_COMMAND_WORDS) {
|
|
215
|
+
rest.unshift(commandWords.pop());
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
opts: { env, profile, apiUrl, outputFormat, jq, verbose, allowWrite },
|
|
219
|
+
commandWords,
|
|
220
|
+
rest
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
|
|
132
224
|
// src/lib/input.ts
|
|
133
225
|
import { readFileSync } from "fs";
|
|
134
226
|
var JSON_BODY_ACTIONS = /* @__PURE__ */ new Set([
|
|
@@ -838,8 +930,8 @@ var CommandRegistry = class {
|
|
|
838
930
|
const key = cmd.path.join(" ");
|
|
839
931
|
this.commands.set(key, cmd);
|
|
840
932
|
}
|
|
841
|
-
registerCommands(
|
|
842
|
-
for (const cmd of
|
|
933
|
+
registerCommands(commands4) {
|
|
934
|
+
for (const cmd of commands4) {
|
|
843
935
|
this.registerCommand(cmd);
|
|
844
936
|
}
|
|
845
937
|
}
|
|
@@ -1351,6 +1443,42 @@ var FEEDBACK_COLUMNS = [
|
|
|
1351
1443
|
},
|
|
1352
1444
|
COL.created()
|
|
1353
1445
|
];
|
|
1446
|
+
async function respondWithValue(ctx, workspace, args) {
|
|
1447
|
+
const chatId = requireIdOrUuidFrom(args, "chat-id", "id");
|
|
1448
|
+
const chat = await requireAuth(ctx).apiClient.getChat(workspace, chatId);
|
|
1449
|
+
const interrupt = chat?.interrupt;
|
|
1450
|
+
if (!interrupt || !interrupt.interruptId) {
|
|
1451
|
+
throw new Error("No pending interrupt on this chat.");
|
|
1452
|
+
}
|
|
1453
|
+
const raw = args.value;
|
|
1454
|
+
if (typeof raw !== "string" || !raw.length) {
|
|
1455
|
+
throw new Error(
|
|
1456
|
+
`A --value is required. For a form pass the field map as JSON, e.g. --value '{"channels":"sms,voice","days":"2"}'; for a choice list pass the chosen value.`
|
|
1457
|
+
);
|
|
1458
|
+
}
|
|
1459
|
+
const url = `${ctx.envConfig.apiUrl}/api/v2/w/${workspace}/chats/${chat.id}/inference/hitl`;
|
|
1460
|
+
const response = await fetch(url, {
|
|
1461
|
+
method: "POST",
|
|
1462
|
+
headers: {
|
|
1463
|
+
Authorization: `Bearer ${requireAuth(ctx).accessToken}`,
|
|
1464
|
+
"Content-Type": "application/json"
|
|
1465
|
+
},
|
|
1466
|
+
body: JSON.stringify({ chosenValue: raw, interruptId: interrupt.interruptId })
|
|
1467
|
+
});
|
|
1468
|
+
if (!response.ok) {
|
|
1469
|
+
throw new Error(
|
|
1470
|
+
`Resume failed (${response.status}): ${(await response.text()).slice(0, 400)}`
|
|
1471
|
+
);
|
|
1472
|
+
}
|
|
1473
|
+
outputSingle(
|
|
1474
|
+
{
|
|
1475
|
+
status: "resumed",
|
|
1476
|
+
chatId: chat.id,
|
|
1477
|
+
next: `gr chats inspect --id ${chat.id} -w ${workspace}`
|
|
1478
|
+
},
|
|
1479
|
+
ctx
|
|
1480
|
+
);
|
|
1481
|
+
}
|
|
1354
1482
|
async function respondToInterrupt(ctx, workspace, args, decisionType) {
|
|
1355
1483
|
const chatId = requireIdOrUuidFrom(args, "chat-id", "id");
|
|
1356
1484
|
const chat = await requireAuth(ctx).apiClient.getChat(workspace, chatId);
|
|
@@ -1383,6 +1511,27 @@ async function respondToInterrupt(ctx, workspace, args, decisionType) {
|
|
|
1383
1511
|
if (streamError) throw new Error(`Inference error: ${streamError}`);
|
|
1384
1512
|
outputSingle({ role: "assistant", content: buffered }, ctx, MESSAGE_COLUMNS2);
|
|
1385
1513
|
}
|
|
1514
|
+
function isDevProfile(env) {
|
|
1515
|
+
return env === "dev" || env === "development" || env === "local";
|
|
1516
|
+
}
|
|
1517
|
+
function isLocalApiOrigin(apiUrl) {
|
|
1518
|
+
if (!apiUrl) return false;
|
|
1519
|
+
try {
|
|
1520
|
+
const host = new URL(apiUrl).hostname.replace(/^\[|\]$/g, "");
|
|
1521
|
+
return host === "localhost" || host === "127.0.0.1" || host === "::1" || host.endsWith(".gravityrail.test");
|
|
1522
|
+
} catch {
|
|
1523
|
+
return false;
|
|
1524
|
+
}
|
|
1525
|
+
}
|
|
1526
|
+
async function shouldRedactChatContent(ctx, apiClient, workspace) {
|
|
1527
|
+
if (isDevProfile(ctx.env) && isLocalApiOrigin(ctx.envConfig?.apiUrl)) return false;
|
|
1528
|
+
try {
|
|
1529
|
+
const ws = await apiClient.getWorkspace(workspace);
|
|
1530
|
+
return ws.phiPostureDecision !== "allow_non_phi";
|
|
1531
|
+
} catch {
|
|
1532
|
+
return true;
|
|
1533
|
+
}
|
|
1534
|
+
}
|
|
1386
1535
|
var chatsDomain = {
|
|
1387
1536
|
name: "chats",
|
|
1388
1537
|
description: "Manage chats",
|
|
@@ -1579,6 +1728,28 @@ var chatsDomain = {
|
|
|
1579
1728
|
await respondToInterrupt(ctx, workspace, args, decisionType);
|
|
1580
1729
|
}
|
|
1581
1730
|
},
|
|
1731
|
+
{
|
|
1732
|
+
path: ["chats", "interrupt", "respond"],
|
|
1733
|
+
description: "Answer a chat's pending UI interrupt (form or choice list) with a value, and stream the continued reply.",
|
|
1734
|
+
mutates: true,
|
|
1735
|
+
requiresWorkspace: true,
|
|
1736
|
+
args: [
|
|
1737
|
+
{
|
|
1738
|
+
name: "chat-id",
|
|
1739
|
+
aliases: ["id"],
|
|
1740
|
+
description: "Chat ID (numeric id preferred; uuid accepted)",
|
|
1741
|
+
required: true
|
|
1742
|
+
},
|
|
1743
|
+
{
|
|
1744
|
+
name: "value",
|
|
1745
|
+
description: `The answer. For a form, the field map as JSON (e.g. '{"channels":"sms,voice","days":"2"}'); for a choice list, the chosen value.`,
|
|
1746
|
+
required: true
|
|
1747
|
+
}
|
|
1748
|
+
],
|
|
1749
|
+
handler: async ({ ctx, workspace, args }) => {
|
|
1750
|
+
await respondWithValue(ctx, workspace, args);
|
|
1751
|
+
}
|
|
1752
|
+
},
|
|
1582
1753
|
{
|
|
1583
1754
|
path: ["chats", "interrupt", "deny"],
|
|
1584
1755
|
description: "Reject a chat's pending approval request with a reason.",
|
|
@@ -1609,7 +1780,17 @@ var chatsDomain = {
|
|
|
1609
1780
|
description: "Chat ID (numeric id preferred; uuid accepted)",
|
|
1610
1781
|
required: true
|
|
1611
1782
|
},
|
|
1612
|
-
{ name: "stream", description: "Stream the AI response via AG-UI", isFlag: true }
|
|
1783
|
+
{ name: "stream", description: "Stream the AI response via AG-UI", isFlag: true },
|
|
1784
|
+
{
|
|
1785
|
+
// Read by the handler below since this command was written, but
|
|
1786
|
+
// never declared — so `--auto-approve` parsed as nothing and the
|
|
1787
|
+
// turn stopped on every tool call anyway. Driving a manager turn
|
|
1788
|
+
// from the CLI meant approving each exec by hand, which is why
|
|
1789
|
+
// multi-turn QA was impractical.
|
|
1790
|
+
name: "auto-approve",
|
|
1791
|
+
description: "Approve tool calls automatically for this turn (development QA). Capability round-trips (screenshots, browser, forms) still prompt.",
|
|
1792
|
+
isFlag: true
|
|
1793
|
+
}
|
|
1613
1794
|
],
|
|
1614
1795
|
handler: async ({ ctx, workspace, args, data }) => {
|
|
1615
1796
|
const content = typeof data === "string" ? data : data?.content;
|
|
@@ -1644,7 +1825,11 @@ var chatsDomain = {
|
|
|
1644
1825
|
);
|
|
1645
1826
|
process.stdout.write("\n");
|
|
1646
1827
|
if (!streamed.trim()) {
|
|
1647
|
-
await printPendingApproval(ctx, workspace, chatId)
|
|
1828
|
+
if (!await printPendingApproval(ctx, workspace, chatId)) {
|
|
1829
|
+
throw new Error(
|
|
1830
|
+
`No response was produced for chat ${chatId}, and no approval is pending. The inference stream ended without emitting anything \u2014 usually the turn never started.`
|
|
1831
|
+
);
|
|
1832
|
+
}
|
|
1648
1833
|
}
|
|
1649
1834
|
} else {
|
|
1650
1835
|
const aguiClient = new AGUIClient({
|
|
@@ -1674,6 +1859,9 @@ var chatsDomain = {
|
|
|
1674
1859
|
chatId
|
|
1675
1860
|
);
|
|
1676
1861
|
if (await printPendingApproval(ctx, workspace, chatId, chat)) return;
|
|
1862
|
+
throw new Error(
|
|
1863
|
+
`No response was produced for chat ${chatId}, and no approval is pending. The inference stream ended without emitting anything \u2014 usually the turn never started. Check the API log for "Inference stream timed out for key inference:${workspace}:${chatId}" and the temporal-worker log for an "inference-${workspace}-${chatId}" workflow.`
|
|
1864
|
+
);
|
|
1677
1865
|
}
|
|
1678
1866
|
outputSingle(
|
|
1679
1867
|
{
|
|
@@ -1816,6 +2004,8 @@ var chatsDomain = {
|
|
|
1816
2004
|
authed.apiClient.getChat(workspace, chatId),
|
|
1817
2005
|
authed.apiClient.getChatMessages(workspace, chatId)
|
|
1818
2006
|
]);
|
|
2007
|
+
const redact = await shouldRedactChatContent(ctx, authed.apiClient, workspace);
|
|
2008
|
+
const hide = (value) => redact ? "[REDACTED]" : value;
|
|
1819
2009
|
const result2 = {
|
|
1820
2010
|
chat: {
|
|
1821
2011
|
id: chat.id,
|
|
@@ -1831,7 +2021,7 @@ var chatsDomain = {
|
|
|
1831
2021
|
// field projections (#20262). Always an array so the key
|
|
1832
2022
|
// survives JSON serialization even when the API omits it.
|
|
1833
2023
|
participants: (chat.participants ?? []).map((p) => ({
|
|
1834
|
-
name:
|
|
2024
|
+
name: hide(p.name),
|
|
1835
2025
|
role: p.role,
|
|
1836
2026
|
memberId: p.memberId ?? null,
|
|
1837
2027
|
memberType: p.memberType ?? null
|
|
@@ -1839,11 +2029,13 @@ var chatsDomain = {
|
|
|
1839
2029
|
},
|
|
1840
2030
|
// Deliberate allow-list — never spread the API message. PHI
|
|
1841
2031
|
// lives in content and (if ever added) sttMetadata.words
|
|
1842
|
-
// (#21973)
|
|
2032
|
+
// (#21973), so nothing beyond these three keys is emitted; the
|
|
2033
|
+
// content itself is gated on posture (see
|
|
2034
|
+
// shouldRedactChatContent), not blanket-hidden.
|
|
1843
2035
|
messages: messages.map((m) => ({
|
|
1844
2036
|
id: m.id,
|
|
1845
2037
|
role: m.role,
|
|
1846
|
-
content:
|
|
2038
|
+
content: hide(m.content)
|
|
1847
2039
|
}))
|
|
1848
2040
|
};
|
|
1849
2041
|
const assignmentId = chat.assignmentId;
|
|
@@ -1861,7 +2053,7 @@ var chatsDomain = {
|
|
|
1861
2053
|
dataRecords: assignment.dataRecords?.map((dr) => ({
|
|
1862
2054
|
id: dr.id,
|
|
1863
2055
|
dataTypeId: dr.dataTypeId,
|
|
1864
|
-
fieldValues:
|
|
2056
|
+
fieldValues: hide(dr.fieldValues)
|
|
1865
2057
|
}))
|
|
1866
2058
|
};
|
|
1867
2059
|
}
|
|
@@ -2146,6 +2338,229 @@ var memberRolesDomain = {
|
|
|
2146
2338
|
})
|
|
2147
2339
|
};
|
|
2148
2340
|
|
|
2341
|
+
// src/lib/tool-uri.ts
|
|
2342
|
+
var TOOLKITS_ABILITY_TYPE = "tools:toolkits";
|
|
2343
|
+
var SCHEME_RE = /^(builtin|custom|mcp|calendar):/;
|
|
2344
|
+
function isToolUri(value) {
|
|
2345
|
+
return SCHEME_RE.test(value);
|
|
2346
|
+
}
|
|
2347
|
+
function parseToolsArg(raw) {
|
|
2348
|
+
if (raw === void 0 || raw.trim() === "") {
|
|
2349
|
+
throw new CLIError("--tools is required (JSON array or comma-separated tool URIs/shortcuts)");
|
|
2350
|
+
}
|
|
2351
|
+
const trimmed = raw.trim();
|
|
2352
|
+
if (trimmed.startsWith("[")) {
|
|
2353
|
+
let parsed;
|
|
2354
|
+
try {
|
|
2355
|
+
parsed = JSON.parse(trimmed);
|
|
2356
|
+
} catch {
|
|
2357
|
+
throw new CLIError("--tools JSON array is invalid");
|
|
2358
|
+
}
|
|
2359
|
+
if (!Array.isArray(parsed) || !parsed.every((v) => typeof v === "string")) {
|
|
2360
|
+
throw new CLIError("--tools JSON must be an array of strings");
|
|
2361
|
+
}
|
|
2362
|
+
return parsed.map((s) => s.trim()).filter(Boolean);
|
|
2363
|
+
}
|
|
2364
|
+
return trimmed.split(",").map((s) => s.trim()).filter(Boolean);
|
|
2365
|
+
}
|
|
2366
|
+
function findServer(servers, idOrSlug) {
|
|
2367
|
+
if (/^\d+$/.test(idOrSlug)) {
|
|
2368
|
+
const id = Number(idOrSlug);
|
|
2369
|
+
return servers.find((s) => s.id === id);
|
|
2370
|
+
}
|
|
2371
|
+
const lower = idOrSlug.toLowerCase();
|
|
2372
|
+
return servers.find(
|
|
2373
|
+
(s) => s.slug.toLowerCase() === lower || (s.name ?? "").toLowerCase() === lower
|
|
2374
|
+
);
|
|
2375
|
+
}
|
|
2376
|
+
async function expandToolSpecs(specs, servers, fetchServerTools) {
|
|
2377
|
+
const tools = [];
|
|
2378
|
+
const knownMcpTools = {};
|
|
2379
|
+
const toolCache = /* @__PURE__ */ new Map();
|
|
2380
|
+
async function toolsFor(server) {
|
|
2381
|
+
if (toolCache.has(server.id)) return toolCache.get(server.id);
|
|
2382
|
+
let names = server.tools;
|
|
2383
|
+
if (!names || names.length === 0) {
|
|
2384
|
+
names = await fetchServerTools(server.id);
|
|
2385
|
+
}
|
|
2386
|
+
toolCache.set(server.id, names);
|
|
2387
|
+
knownMcpTools[String(server.id)] = names;
|
|
2388
|
+
return names;
|
|
2389
|
+
}
|
|
2390
|
+
function pushUnique(uri) {
|
|
2391
|
+
if (!tools.includes(uri)) tools.push(uri);
|
|
2392
|
+
}
|
|
2393
|
+
for (const spec of specs) {
|
|
2394
|
+
const mcpStar = /^mcp:([^:]+):\*$/.exec(spec);
|
|
2395
|
+
const bareStar = /^([^:]+):\*$/.exec(spec);
|
|
2396
|
+
if (mcpStar || bareStar && !spec.startsWith("builtin:") && !spec.startsWith("custom:") && !spec.startsWith("calendar:")) {
|
|
2397
|
+
const key = mcpStar ? mcpStar[1] : bareStar[1];
|
|
2398
|
+
const server = findServer(servers, key);
|
|
2399
|
+
if (!server) {
|
|
2400
|
+
throw new CLIError(
|
|
2401
|
+
`No MCP server matching '${key}'. Use 'gr mcp-servers list' to see ids/slugs.`
|
|
2402
|
+
);
|
|
2403
|
+
}
|
|
2404
|
+
const names = await toolsFor(server);
|
|
2405
|
+
if (names.length === 0) {
|
|
2406
|
+
throw new CLIError(
|
|
2407
|
+
`MCP server '${server.slug}' (id=${server.id}) has no cached tools. Enable it and refresh tools first (gr mcp-servers enable --id ${server.id}).`
|
|
2408
|
+
);
|
|
2409
|
+
}
|
|
2410
|
+
for (const name of names) {
|
|
2411
|
+
pushUnique(`mcp:${server.id}:${name}`);
|
|
2412
|
+
}
|
|
2413
|
+
continue;
|
|
2414
|
+
}
|
|
2415
|
+
const mcpTool = /^mcp:([^:]+):(.+)$/.exec(spec);
|
|
2416
|
+
if (mcpTool) {
|
|
2417
|
+
const key = mcpTool[1];
|
|
2418
|
+
const name = mcpTool[2];
|
|
2419
|
+
if (/^\d+$/.test(key)) {
|
|
2420
|
+
const server2 = findServer(servers, key);
|
|
2421
|
+
if (server2) await toolsFor(server2);
|
|
2422
|
+
pushUnique(`mcp:${key}:${name}`);
|
|
2423
|
+
continue;
|
|
2424
|
+
}
|
|
2425
|
+
const server = findServer(servers, key);
|
|
2426
|
+
if (!server) {
|
|
2427
|
+
throw new CLIError(`No MCP server matching slug '${key}'. Use 'gr mcp-servers list'.`);
|
|
2428
|
+
}
|
|
2429
|
+
await toolsFor(server);
|
|
2430
|
+
pushUnique(`mcp:${server.id}:${name}`);
|
|
2431
|
+
continue;
|
|
2432
|
+
}
|
|
2433
|
+
const bareTool = /^([^:]+):([^:]+)$/.exec(spec);
|
|
2434
|
+
if (bareTool && !isToolUri(spec)) {
|
|
2435
|
+
const key = bareTool[1];
|
|
2436
|
+
const name = bareTool[2];
|
|
2437
|
+
const server = findServer(servers, key);
|
|
2438
|
+
if (server) {
|
|
2439
|
+
await toolsFor(server);
|
|
2440
|
+
pushUnique(`mcp:${server.id}:${name}`);
|
|
2441
|
+
continue;
|
|
2442
|
+
}
|
|
2443
|
+
}
|
|
2444
|
+
if (spec.startsWith("builtin:") && spec.endsWith(":*")) {
|
|
2445
|
+
throw new CLIError("builtin does not support wildcard expansion");
|
|
2446
|
+
}
|
|
2447
|
+
if (isToolUri(spec)) {
|
|
2448
|
+
if (spec.startsWith("mcp:")) {
|
|
2449
|
+
const parts = spec.split(":");
|
|
2450
|
+
if (parts.length !== 3 || !/^\d+$/.test(parts[1] ?? "")) {
|
|
2451
|
+
throw new CLIError(
|
|
2452
|
+
`Invalid MCP tool URI '${spec}'. Expected mcp:{{server_id}}:{{name}}.`
|
|
2453
|
+
);
|
|
2454
|
+
}
|
|
2455
|
+
const server = findServer(servers, parts[1]);
|
|
2456
|
+
if (server) await toolsFor(server);
|
|
2457
|
+
}
|
|
2458
|
+
pushUnique(spec);
|
|
2459
|
+
continue;
|
|
2460
|
+
}
|
|
2461
|
+
if (!spec.includes(":")) {
|
|
2462
|
+
pushUnique(`builtin:${spec}`);
|
|
2463
|
+
continue;
|
|
2464
|
+
}
|
|
2465
|
+
throw new CLIError(
|
|
2466
|
+
`Unrecognized tool spec '${spec}'. Use builtin:name, custom:{{id}}:name, mcp:{{id|slug}}:name, or {{slug}}:* .`
|
|
2467
|
+
);
|
|
2468
|
+
}
|
|
2469
|
+
if (tools.length === 0) {
|
|
2470
|
+
throw new CLIError("No tools resolved from --tools");
|
|
2471
|
+
}
|
|
2472
|
+
return { tools, knownMcpTools };
|
|
2473
|
+
}
|
|
2474
|
+
function mergeToolkitsConfig(existing, incoming) {
|
|
2475
|
+
const currentTools = Array.isArray(existing?.tools) ? [...existing.tools] : [];
|
|
2476
|
+
for (const t of incoming.tools) {
|
|
2477
|
+
if (!currentTools.includes(t)) currentTools.push(t);
|
|
2478
|
+
}
|
|
2479
|
+
const known = {
|
|
2480
|
+
...existing?.knownMcpTools ?? {}
|
|
2481
|
+
};
|
|
2482
|
+
for (const [k, v] of Object.entries(incoming.knownMcpTools)) {
|
|
2483
|
+
known[k] = v;
|
|
2484
|
+
}
|
|
2485
|
+
return { tools: currentTools, knownMcpTools: known };
|
|
2486
|
+
}
|
|
2487
|
+
|
|
2488
|
+
// src/lib/toolkits-ability.ts
|
|
2489
|
+
function toolkitsConfigOf(ability) {
|
|
2490
|
+
if (!ability) return void 0;
|
|
2491
|
+
if (ability.abilityType !== TOOLKITS_ABILITY_TYPE) return void 0;
|
|
2492
|
+
const config = ability.config;
|
|
2493
|
+
if (config == null) return null;
|
|
2494
|
+
if (typeof config !== "object") return null;
|
|
2495
|
+
const tools = "tools" in config && Array.isArray(config.tools) ? config.tools : [];
|
|
2496
|
+
const known = "knownMcpTools" in config && config.knownMcpTools != null && typeof config.knownMcpTools === "object" ? config.knownMcpTools : null;
|
|
2497
|
+
return { tools, knownMcpTools: known };
|
|
2498
|
+
}
|
|
2499
|
+
async function setToolsOnScope(api, workspace, scope, toolsRaw) {
|
|
2500
|
+
const specs = parseToolsArg(toolsRaw);
|
|
2501
|
+
const serversRaw = await api.getMcpServers(workspace);
|
|
2502
|
+
const servers = (serversRaw ?? []).map((s) => ({
|
|
2503
|
+
id: s.id,
|
|
2504
|
+
slug: s.slug,
|
|
2505
|
+
name: s.name
|
|
2506
|
+
}));
|
|
2507
|
+
const expanded = await expandToolSpecs(specs, servers, async (serverId) => {
|
|
2508
|
+
try {
|
|
2509
|
+
const res = await api.getMcpServerTools(workspace, serverId);
|
|
2510
|
+
return (res.tools ?? []).map((t) => t.name).filter((n) => typeof n === "string" && n.length > 0);
|
|
2511
|
+
} catch {
|
|
2512
|
+
return [];
|
|
2513
|
+
}
|
|
2514
|
+
});
|
|
2515
|
+
const listOpts = scope.kind === "workflow" ? { workflowId: scope.workflowId } : { taskId: scope.taskId };
|
|
2516
|
+
const existingList = await api.listAbilities(workspace, listOpts);
|
|
2517
|
+
const existing = (existingList ?? []).find(
|
|
2518
|
+
(a) => a.abilityType === TOOLKITS_ABILITY_TYPE && a.enabled !== false
|
|
2519
|
+
);
|
|
2520
|
+
const existingConfig = toolkitsConfigOf(existing);
|
|
2521
|
+
const before = new Set(existingConfig?.tools ?? []);
|
|
2522
|
+
const merged = mergeToolkitsConfig(existingConfig, expanded);
|
|
2523
|
+
const added = merged.tools.filter((t) => !before.has(t));
|
|
2524
|
+
const allowMissingConnections = Object.keys(expanded.knownMcpTools).length > 0;
|
|
2525
|
+
if (existing) {
|
|
2526
|
+
const updateBody = {
|
|
2527
|
+
config: merged,
|
|
2528
|
+
enabled: true
|
|
2529
|
+
};
|
|
2530
|
+
if (allowMissingConnections) {
|
|
2531
|
+
updateBody.allowMissingConnections = true;
|
|
2532
|
+
}
|
|
2533
|
+
const updated = await api.updateAbility(workspace, existing.uuid, updateBody);
|
|
2534
|
+
return {
|
|
2535
|
+
abilityUuid: updated.uuid ?? existing.uuid,
|
|
2536
|
+
created: false,
|
|
2537
|
+
tools: merged.tools,
|
|
2538
|
+
knownMcpTools: merged.knownMcpTools,
|
|
2539
|
+
added
|
|
2540
|
+
};
|
|
2541
|
+
}
|
|
2542
|
+
const body = {
|
|
2543
|
+
abilityType: TOOLKITS_ABILITY_TYPE,
|
|
2544
|
+
config: merged,
|
|
2545
|
+
enabled: true,
|
|
2546
|
+
...scope.kind === "workflow" ? { workflowId: scope.workflowId } : { taskId: scope.taskId }
|
|
2547
|
+
};
|
|
2548
|
+
if (allowMissingConnections) {
|
|
2549
|
+
body.allowMissingConnections = true;
|
|
2550
|
+
}
|
|
2551
|
+
const created = await api.createAbility(workspace, body);
|
|
2552
|
+
if (!created?.uuid) {
|
|
2553
|
+
throw new CLIError("createAbility did not return an ability uuid");
|
|
2554
|
+
}
|
|
2555
|
+
return {
|
|
2556
|
+
abilityUuid: created.uuid,
|
|
2557
|
+
created: true,
|
|
2558
|
+
tools: merged.tools,
|
|
2559
|
+
knownMcpTools: merged.knownMcpTools,
|
|
2560
|
+
added: merged.tools
|
|
2561
|
+
};
|
|
2562
|
+
}
|
|
2563
|
+
|
|
2149
2564
|
// src/domains/tasks.ts
|
|
2150
2565
|
var COLUMNS4 = [
|
|
2151
2566
|
COL.id(),
|
|
@@ -2237,6 +2652,52 @@ Example \u2014 attach an escalation ability:
|
|
|
2237
2652
|
const result2 = await requireAuth(ctx).apiClient.getAbilityTypes(workspace);
|
|
2238
2653
|
outputData(result2, ctx);
|
|
2239
2654
|
}
|
|
2655
|
+
},
|
|
2656
|
+
{
|
|
2657
|
+
path: ["tasks", "tools", "set"],
|
|
2658
|
+
description: "Attach tools to a task via the tools:toolkits ability. Merges into an existing ability (never creates a duplicate). Accepts canonical URIs (mcp:1:name, builtin:name) and shortcuts (mcp:dala-care:name, dala-care:*, mcp:1:*). Prefer this over raw ability enable for tool attachment.",
|
|
2659
|
+
mutates: true,
|
|
2660
|
+
requiresWorkspace: true,
|
|
2661
|
+
args: [
|
|
2662
|
+
{
|
|
2663
|
+
name: "task-id",
|
|
2664
|
+
aliases: ["id"],
|
|
2665
|
+
description: "Task ID",
|
|
2666
|
+
required: true
|
|
2667
|
+
},
|
|
2668
|
+
{
|
|
2669
|
+
name: "tools",
|
|
2670
|
+
description: "JSON array or comma-separated tool URIs/shortcuts, e.g. 'mcp:1:getOffices,builtin:talk_to_human' or mcp:dala-care:*",
|
|
2671
|
+
required: true
|
|
2672
|
+
}
|
|
2673
|
+
],
|
|
2674
|
+
examples: [
|
|
2675
|
+
"gr tasks tools set --task-id 9 --tools 'mcp:dala-care:*' -w $WID --allow-write",
|
|
2676
|
+
`gr tasks tools set --id 9 --tools '["builtin:talk_to_human"]' -w $WID --allow-write`
|
|
2677
|
+
],
|
|
2678
|
+
handler: async ({ ctx, workspace, args }) => {
|
|
2679
|
+
const taskId = requireNumber(args, "task-id");
|
|
2680
|
+
const toolsRaw = args.tools;
|
|
2681
|
+
if (typeof toolsRaw !== "string") {
|
|
2682
|
+
throw new CLIError("--tools is required");
|
|
2683
|
+
}
|
|
2684
|
+
const result2 = await setToolsOnScope(
|
|
2685
|
+
requireAuth(ctx).apiClient,
|
|
2686
|
+
workspace,
|
|
2687
|
+
{ kind: "task", taskId },
|
|
2688
|
+
toolsRaw
|
|
2689
|
+
);
|
|
2690
|
+
outputSingle(
|
|
2691
|
+
{
|
|
2692
|
+
abilityUuid: result2.abilityUuid,
|
|
2693
|
+
created: result2.created,
|
|
2694
|
+
added: result2.added,
|
|
2695
|
+
tools: result2.tools,
|
|
2696
|
+
knownMcpTools: result2.knownMcpTools
|
|
2697
|
+
},
|
|
2698
|
+
ctx
|
|
2699
|
+
);
|
|
2700
|
+
}
|
|
2240
2701
|
}
|
|
2241
2702
|
]
|
|
2242
2703
|
};
|
|
@@ -2910,6 +3371,52 @@ ${WORKFLOW_FIELD_REFERENCE}`,
|
|
|
2910
3371
|
);
|
|
2911
3372
|
outputSingle(result2, ctx, COLUMNS5);
|
|
2912
3373
|
}
|
|
3374
|
+
},
|
|
3375
|
+
{
|
|
3376
|
+
path: ["workflows", "tools", "set"],
|
|
3377
|
+
description: "Attach tools to a workflow via the singleton tools:toolkits ability. Merges into an existing ability (never creates a duplicate). Accepts canonical URIs (mcp:1:name, builtin:name, custom:4:name) and shortcuts (mcp:dala-care:name, dala-care:*, mcp:1:*). Sets knownMcpTools snapshots for MCP servers touched. Prefer this over `gr abilities enable --ability-type tools:toolkits`.",
|
|
3378
|
+
mutates: true,
|
|
3379
|
+
requiresWorkspace: true,
|
|
3380
|
+
args: [
|
|
3381
|
+
{
|
|
3382
|
+
name: "workflow-id",
|
|
3383
|
+
aliases: ["id"],
|
|
3384
|
+
description: "Workflow (root) ID",
|
|
3385
|
+
required: true
|
|
3386
|
+
},
|
|
3387
|
+
{
|
|
3388
|
+
name: "tools",
|
|
3389
|
+
description: `JSON array or comma-separated tool URIs/shortcuts, e.g. '["mcp:1:getOffices","builtin:talk_to_human"]' or mcp:dala-care:*`,
|
|
3390
|
+
required: true
|
|
3391
|
+
}
|
|
3392
|
+
],
|
|
3393
|
+
examples: [
|
|
3394
|
+
"gr workflows tools set --workflow-id 12 --tools 'mcp:dala-care:*' -w $WID --allow-write",
|
|
3395
|
+
`gr workflows tools set --id 12 --tools '["mcp:1:getOffices","builtin:talk_to_human"]' -w $WID --allow-write`
|
|
3396
|
+
],
|
|
3397
|
+
handler: async ({ ctx, workspace, args }) => {
|
|
3398
|
+
const workflowId = requireNumber(args, "workflow-id");
|
|
3399
|
+
const toolsRaw = args.tools;
|
|
3400
|
+
if (typeof toolsRaw !== "string") {
|
|
3401
|
+
throw new CLIError("--tools is required");
|
|
3402
|
+
}
|
|
3403
|
+
const result2 = await setToolsOnScope(
|
|
3404
|
+
requireAuth(ctx).apiClient,
|
|
3405
|
+
workspace,
|
|
3406
|
+
{ kind: "workflow", workflowId },
|
|
3407
|
+
toolsRaw
|
|
3408
|
+
);
|
|
3409
|
+
outputSingle(
|
|
3410
|
+
{
|
|
3411
|
+
abilityUuid: result2.abilityUuid,
|
|
3412
|
+
created: result2.created,
|
|
3413
|
+
added: result2.added,
|
|
3414
|
+
tools: result2.tools,
|
|
3415
|
+
knownMcpTools: result2.knownMcpTools
|
|
3416
|
+
},
|
|
3417
|
+
ctx
|
|
3418
|
+
);
|
|
3419
|
+
}
|
|
2913
3420
|
}
|
|
2914
3421
|
]
|
|
2915
3422
|
};
|
|
@@ -3207,8 +3714,6 @@ Provisioning started. Watch it come up with:
|
|
|
3207
3714
|
"inboxes",
|
|
3208
3715
|
"routines",
|
|
3209
3716
|
"memberFilters",
|
|
3210
|
-
"milestones",
|
|
3211
|
-
"milestoneGoals",
|
|
3212
3717
|
"customToolkits",
|
|
3213
3718
|
"customTools",
|
|
3214
3719
|
"pages",
|
|
@@ -3289,8 +3794,6 @@ Provisioning started. Watch it come up with:
|
|
|
3289
3794
|
"inboxes",
|
|
3290
3795
|
"routines",
|
|
3291
3796
|
"memberFilters",
|
|
3292
|
-
"milestones",
|
|
3293
|
-
"milestoneGoals",
|
|
3294
3797
|
"customToolkits",
|
|
3295
3798
|
"customTools",
|
|
3296
3799
|
"pages",
|
|
@@ -5682,56 +6185,204 @@ var journeysDomain = {
|
|
|
5682
6185
|
]
|
|
5683
6186
|
};
|
|
5684
6187
|
|
|
5685
|
-
// src/domains/
|
|
6188
|
+
// src/domains/metrics.ts
|
|
5686
6189
|
var COLUMNS11 = [
|
|
5687
6190
|
COL.id(),
|
|
5688
6191
|
COL.name(),
|
|
5689
|
-
{ header: "
|
|
6192
|
+
{ header: "SLUG", getValue: (item) => item.slug ?? "" },
|
|
6193
|
+
{ header: "TYPE", getValue: (item) => item.metricType ?? "" },
|
|
6194
|
+
{ header: "SOURCE", getValue: (item) => item.source ?? "" },
|
|
6195
|
+
{ header: "UNIT", getValue: (item) => item.unit ?? "" },
|
|
5690
6196
|
{
|
|
5691
|
-
header: "
|
|
5692
|
-
getValue: (item) => item.
|
|
6197
|
+
header: "ENABLED",
|
|
6198
|
+
getValue: (item) => item.enabled ? "yes" : "no"
|
|
5693
6199
|
},
|
|
6200
|
+
COL.created()
|
|
6201
|
+
];
|
|
6202
|
+
var OBS_COLUMNS = [
|
|
6203
|
+
COL.id(),
|
|
6204
|
+
{ header: "VALUE", getValue: (item) => String(item.value ?? "") },
|
|
6205
|
+
{ header: "OBSERVED_AT", getValue: (item) => item.observedAt ?? "" },
|
|
5694
6206
|
{
|
|
5695
|
-
header: "
|
|
5696
|
-
getValue: (item) => item.
|
|
6207
|
+
header: "CHAT_ID",
|
|
6208
|
+
getValue: (item) => item.chatId != null ? String(item.chatId) : ""
|
|
5697
6209
|
},
|
|
5698
6210
|
{
|
|
5699
|
-
header: "
|
|
5700
|
-
getValue: (item) => item.
|
|
5701
|
-
}
|
|
5702
|
-
COL.created()
|
|
6211
|
+
header: "MEMBER_ID",
|
|
6212
|
+
getValue: (item) => item.memberId != null ? String(item.memberId) : ""
|
|
6213
|
+
}
|
|
5703
6214
|
];
|
|
5704
|
-
var
|
|
5705
|
-
name: "
|
|
5706
|
-
description: "
|
|
6215
|
+
var metricsDomain = {
|
|
6216
|
+
name: "metrics",
|
|
6217
|
+
description: "Customer-defined outcome metrics (CEL expression or LLM rubric) with time-series readout",
|
|
5707
6218
|
commands: [
|
|
5708
6219
|
...crudCommands({
|
|
5709
|
-
prefix: ["
|
|
5710
|
-
entityName: "
|
|
5711
|
-
listMethod: "
|
|
5712
|
-
getMethod: "
|
|
5713
|
-
createMethod: "
|
|
5714
|
-
updateMethod: "
|
|
5715
|
-
deleteMethod: "
|
|
6220
|
+
prefix: ["metrics"],
|
|
6221
|
+
entityName: "metric",
|
|
6222
|
+
listMethod: "listMetrics",
|
|
6223
|
+
getMethod: "getMetric",
|
|
6224
|
+
createMethod: "createMetric",
|
|
6225
|
+
updateMethod: "updateMetric",
|
|
6226
|
+
deleteMethod: "deleteMetric",
|
|
5716
6227
|
columns: COLUMNS11,
|
|
5717
|
-
paginationSupport: "full"
|
|
5718
|
-
|
|
5719
|
-
|
|
5720
|
-
}
|
|
5721
|
-
|
|
5722
|
-
|
|
5723
|
-
|
|
5724
|
-
|
|
5725
|
-
|
|
5726
|
-
|
|
5727
|
-
|
|
5728
|
-
|
|
5729
|
-
|
|
5730
|
-
|
|
5731
|
-
|
|
5732
|
-
|
|
5733
|
-
|
|
5734
|
-
|
|
6228
|
+
paginationSupport: "full",
|
|
6229
|
+
createExamples: [
|
|
6230
|
+
`yarn gr metrics create -w $WID --allow-write --data '{"name":"SMS Channel Rate","metricType":"expression","celExpression":"chat.channel == \\"phone-sms\\"","unit":"rate"}'`,
|
|
6231
|
+
`yarn gr metrics create -w $WID --allow-write --data '{"name":"Qualified Engagement","metricType":"rubric","evaluationPrompt":"Did the user show buying intent?","unit":"rate"}'`
|
|
6232
|
+
],
|
|
6233
|
+
createHelp: "Create a metric definition. metricType is expression (CEL) or rubric (LLM). MVP source is chat only."
|
|
6234
|
+
}),
|
|
6235
|
+
{
|
|
6236
|
+
path: ["metrics", "observations"],
|
|
6237
|
+
description: "List raw observations for a metric in a date range (may include PHI reason)",
|
|
6238
|
+
args: [
|
|
6239
|
+
{ name: "id", required: true, description: "Metric ID" },
|
|
6240
|
+
{
|
|
6241
|
+
name: "start",
|
|
6242
|
+
required: true,
|
|
6243
|
+
description: "ISO-8601 inclusive lower bound on observed_at"
|
|
6244
|
+
},
|
|
6245
|
+
{
|
|
6246
|
+
name: "end",
|
|
6247
|
+
required: true,
|
|
6248
|
+
description: "ISO-8601 exclusive upper bound on observed_at"
|
|
6249
|
+
},
|
|
6250
|
+
{ name: "page", description: "Page number (default 1)" },
|
|
6251
|
+
{ name: "page-size", description: "Page size (default 100)" }
|
|
6252
|
+
],
|
|
6253
|
+
requiresWorkspace: true,
|
|
6254
|
+
examples: [
|
|
6255
|
+
"yarn gr metrics observations --id 1 --start 2026-07-01T00:00:00Z --end 2026-08-01T00:00:00Z"
|
|
6256
|
+
],
|
|
6257
|
+
handler: async (hctx) => {
|
|
6258
|
+
const client = requireAuth(hctx.ctx).apiClient;
|
|
6259
|
+
const id = requireNumber(hctx.args, "id");
|
|
6260
|
+
const start = requireString(hctx.args, "start");
|
|
6261
|
+
const end = requireString(hctx.args, "end");
|
|
6262
|
+
const page = hctx.args["page"] != null ? Number(hctx.args["page"]) : void 0;
|
|
6263
|
+
const pageSize = hctx.args["page-size"] != null ? Number(hctx.args["page-size"]) : void 0;
|
|
6264
|
+
const result2 = await client.listMetricObservations(hctx.workspace, id, {
|
|
6265
|
+
start,
|
|
6266
|
+
end,
|
|
6267
|
+
page,
|
|
6268
|
+
pageSize
|
|
6269
|
+
});
|
|
6270
|
+
outputData(result2.items ?? result2, hctx.ctx, OBS_COLUMNS);
|
|
6271
|
+
}
|
|
6272
|
+
},
|
|
6273
|
+
{
|
|
6274
|
+
path: ["metrics", "series"],
|
|
6275
|
+
description: "Time-bucketed aggregation for a metric (numeric only)",
|
|
6276
|
+
args: [
|
|
6277
|
+
{ name: "id", required: true, description: "Metric ID" },
|
|
6278
|
+
{
|
|
6279
|
+
name: "start",
|
|
6280
|
+
required: true,
|
|
6281
|
+
description: "ISO-8601 inclusive lower bound on observed_at"
|
|
6282
|
+
},
|
|
6283
|
+
{
|
|
6284
|
+
name: "end",
|
|
6285
|
+
required: true,
|
|
6286
|
+
description: "ISO-8601 exclusive upper bound on observed_at"
|
|
6287
|
+
},
|
|
6288
|
+
{ name: "bucket", description: "day | week (default day)" },
|
|
6289
|
+
{
|
|
6290
|
+
name: "aggregation",
|
|
6291
|
+
description: "avg | sum | count | rate (default avg)"
|
|
6292
|
+
}
|
|
6293
|
+
],
|
|
6294
|
+
requiresWorkspace: true,
|
|
6295
|
+
examples: [
|
|
6296
|
+
"yarn gr metrics series --id 1 --start 2026-07-01T00:00:00Z --end 2026-08-01T00:00:00Z --bucket day"
|
|
6297
|
+
],
|
|
6298
|
+
handler: async (hctx) => {
|
|
6299
|
+
const client = requireAuth(hctx.ctx).apiClient;
|
|
6300
|
+
const id = requireNumber(hctx.args, "id");
|
|
6301
|
+
const result2 = await client.getMetricSeries(hctx.workspace, id, {
|
|
6302
|
+
start: requireString(hctx.args, "start"),
|
|
6303
|
+
end: requireString(hctx.args, "end"),
|
|
6304
|
+
bucket: hctx.args["bucket"] ?? "day",
|
|
6305
|
+
aggregation: hctx.args["aggregation"] ?? "avg"
|
|
6306
|
+
});
|
|
6307
|
+
outputSingle(result2, hctx.ctx);
|
|
6308
|
+
}
|
|
6309
|
+
},
|
|
6310
|
+
{
|
|
6311
|
+
path: ["metrics", "compute-for-chat"],
|
|
6312
|
+
description: "On-demand evaluate enabled chat-source metrics for one chat (writes observations + dual-write feedback)",
|
|
6313
|
+
args: [
|
|
6314
|
+
{
|
|
6315
|
+
name: "chat-id",
|
|
6316
|
+
required: true,
|
|
6317
|
+
description: "Chat ID to evaluate"
|
|
6318
|
+
}
|
|
6319
|
+
],
|
|
6320
|
+
requiresWorkspace: true,
|
|
6321
|
+
mutates: true,
|
|
6322
|
+
examples: ["yarn gr metrics compute-for-chat --chat-id 42 --allow-write"],
|
|
6323
|
+
handler: async (hctx) => {
|
|
6324
|
+
const client = requireAuth(hctx.ctx).apiClient;
|
|
6325
|
+
const chatId = requireNumber(hctx.args, "chat-id");
|
|
6326
|
+
if (chatId < 1) {
|
|
6327
|
+
throw new CLIError("--chat-id must be a positive number");
|
|
6328
|
+
}
|
|
6329
|
+
const result2 = await client.computeChatMetrics(hctx.workspace, { chatId });
|
|
6330
|
+
outputSingle(result2, hctx.ctx);
|
|
6331
|
+
}
|
|
6332
|
+
}
|
|
6333
|
+
]
|
|
6334
|
+
};
|
|
6335
|
+
|
|
6336
|
+
// src/domains/personas.ts
|
|
6337
|
+
var COLUMNS12 = [
|
|
6338
|
+
COL.id(),
|
|
6339
|
+
COL.name(),
|
|
6340
|
+
{ header: "AGE", getValue: (item) => item.age != null ? String(item.age) : "" },
|
|
6341
|
+
{
|
|
6342
|
+
header: "HAS_PHONE",
|
|
6343
|
+
getValue: (item) => item.hasPhone ? "yes" : "no"
|
|
6344
|
+
},
|
|
6345
|
+
{
|
|
6346
|
+
header: "HAS_EMAIL",
|
|
6347
|
+
getValue: (item) => item.hasEmail ? "yes" : "no"
|
|
6348
|
+
},
|
|
6349
|
+
{
|
|
6350
|
+
header: "DATA_RECORDS",
|
|
6351
|
+
getValue: (item) => item.dataRecords ? String(Object.keys(item.dataRecords).length) : "0"
|
|
6352
|
+
},
|
|
6353
|
+
COL.created()
|
|
6354
|
+
];
|
|
6355
|
+
var personasDomain = {
|
|
6356
|
+
name: "personas",
|
|
6357
|
+
description: "Manage workspace-scoped test personas (identity templates for scenario runs)",
|
|
6358
|
+
commands: [
|
|
6359
|
+
...crudCommands({
|
|
6360
|
+
prefix: ["personas"],
|
|
6361
|
+
entityName: "persona",
|
|
6362
|
+
listMethod: "listPersonas",
|
|
6363
|
+
getMethod: "getPersona",
|
|
6364
|
+
createMethod: "createPersona",
|
|
6365
|
+
updateMethod: "updatePersona",
|
|
6366
|
+
deleteMethod: "deletePersona",
|
|
6367
|
+
columns: COLUMNS12,
|
|
6368
|
+
paginationSupport: "full"
|
|
6369
|
+
})
|
|
6370
|
+
]
|
|
6371
|
+
};
|
|
6372
|
+
|
|
6373
|
+
// src/domains/qualifications.ts
|
|
6374
|
+
import { mkdirSync } from "fs";
|
|
6375
|
+
import { dirname } from "path";
|
|
6376
|
+
import { DriverMode as DriverMode2 } from "@gravity-rail/sdk";
|
|
6377
|
+
|
|
6378
|
+
// src/lib/qualifications_model_eval_batch.ts
|
|
6379
|
+
import { randomInt } from "crypto";
|
|
6380
|
+
import { appendFileSync, existsSync, statSync } from "fs";
|
|
6381
|
+
import { basename } from "path";
|
|
6382
|
+
import { DriverMode } from "@gravity-rail/sdk";
|
|
6383
|
+
var CONFIGURATION_BLOCKER_FAILURE_PREFIX = "Configuration blocker (fix workspace setup, not a model defect):";
|
|
6384
|
+
function isConfigurationBlockerFailure(failureReason) {
|
|
6385
|
+
return typeof failureReason === "string" && failureReason.startsWith(CONFIGURATION_BLOCKER_FAILURE_PREFIX);
|
|
5735
6386
|
}
|
|
5736
6387
|
function parseCommaSeparatedList(raw, flagName) {
|
|
5737
6388
|
const items = raw.split(",").map((s) => s.trim()).filter(Boolean);
|
|
@@ -5773,11 +6424,11 @@ function shuffleInPlace(items) {
|
|
|
5773
6424
|
}
|
|
5774
6425
|
return items;
|
|
5775
6426
|
}
|
|
5776
|
-
function buildModelEvalBatchJobs(scenarios, models, rounds, warmup) {
|
|
6427
|
+
function buildModelEvalBatchJobs(scenarios, models, rounds, warmup, realtimeModels = []) {
|
|
5777
6428
|
if (scenarios.length === 0) {
|
|
5778
6429
|
throw new CLIError("At least one scenario is required");
|
|
5779
6430
|
}
|
|
5780
|
-
if (models.length === 0) {
|
|
6431
|
+
if (models.length === 0 && realtimeModels.length === 0) {
|
|
5781
6432
|
throw new CLIError("At least one model is required");
|
|
5782
6433
|
}
|
|
5783
6434
|
if (rounds < 1) {
|
|
@@ -5798,12 +6449,60 @@ function buildModelEvalBatchJobs(scenarios, models, rounds, warmup) {
|
|
|
5798
6449
|
modelId
|
|
5799
6450
|
});
|
|
5800
6451
|
}
|
|
6452
|
+
for (const modelId of realtimeModels) {
|
|
6453
|
+
roundJobs.push({
|
|
6454
|
+
round,
|
|
6455
|
+
warmup: warm,
|
|
6456
|
+
scenarioId: scenario.id,
|
|
6457
|
+
scenarioSlug: scenario.slug,
|
|
6458
|
+
scenarioName: scenario.name,
|
|
6459
|
+
modelId,
|
|
6460
|
+
realtime: true
|
|
6461
|
+
});
|
|
6462
|
+
}
|
|
5801
6463
|
}
|
|
5802
6464
|
shuffleInPlace(roundJobs);
|
|
5803
6465
|
jobs.push(...roundJobs);
|
|
5804
6466
|
}
|
|
5805
6467
|
return jobs;
|
|
5806
6468
|
}
|
|
6469
|
+
var REALTIME_AUDIO_USD_PER_MIN = {
|
|
6470
|
+
"xai:realtime:voice-agent": 0.05,
|
|
6471
|
+
// Grok Voice Think Fast 1
|
|
6472
|
+
"xai:realtime:voice-agent-2": 0.08
|
|
6473
|
+
// Grok Voice Think Fast 2
|
|
6474
|
+
};
|
|
6475
|
+
var DEFAULT_REALTIME_AUDIO_USD_PER_MIN = 0.08;
|
|
6476
|
+
var EST_AUDIO_MIN_PER_RUN = 3;
|
|
6477
|
+
var EST_TEXT_USD_PER_RUN = 0.012;
|
|
6478
|
+
function realtimeAudioUsdPerMin(modelId) {
|
|
6479
|
+
return REALTIME_AUDIO_USD_PER_MIN[modelId] ?? DEFAULT_REALTIME_AUDIO_USD_PER_MIN;
|
|
6480
|
+
}
|
|
6481
|
+
function estimateRealtimeRunCostUsd(modelId) {
|
|
6482
|
+
return EST_AUDIO_MIN_PER_RUN * realtimeAudioUsdPerMin(modelId) + EST_TEXT_USD_PER_RUN;
|
|
6483
|
+
}
|
|
6484
|
+
function projectRealtimeBatchCostUsd(jobs) {
|
|
6485
|
+
return jobs.filter((j) => j.realtime).reduce((sum, j) => sum + estimateRealtimeRunCostUsd(j.modelId), 0);
|
|
6486
|
+
}
|
|
6487
|
+
function actualRealtimeRowCostUsd(row, modelId) {
|
|
6488
|
+
const summary = row.timing_summary;
|
|
6489
|
+
const audioMs = summary ? summary["audio_output_ms_total"] : void 0;
|
|
6490
|
+
if (typeof audioMs === "number" && Number.isFinite(audioMs) && audioMs >= 0) {
|
|
6491
|
+
return audioMs / 6e4 * realtimeAudioUsdPerMin(modelId) + EST_TEXT_USD_PER_RUN;
|
|
6492
|
+
}
|
|
6493
|
+
return estimateRealtimeRunCostUsd(modelId);
|
|
6494
|
+
}
|
|
6495
|
+
function parseMaxBudgetUsd(raw, flagName) {
|
|
6496
|
+
if (raw === void 0 || raw === null || raw === "") {
|
|
6497
|
+
return void 0;
|
|
6498
|
+
}
|
|
6499
|
+
const value = Number(raw);
|
|
6500
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
6501
|
+
throw new CLIError(`${flagName} must be a positive number of USD`);
|
|
6502
|
+
}
|
|
6503
|
+
return value;
|
|
6504
|
+
}
|
|
6505
|
+
var REALTIME_MAX_CONCURRENCY = 4;
|
|
5807
6506
|
function summarizeCriterionResults(run) {
|
|
5808
6507
|
if (!run.criterionResults?.length) return void 0;
|
|
5809
6508
|
return run.criterionResults.map((c) => ({
|
|
@@ -5812,7 +6511,7 @@ function summarizeCriterionResults(run) {
|
|
|
5812
6511
|
score: c.score ?? null
|
|
5813
6512
|
}));
|
|
5814
6513
|
}
|
|
5815
|
-
function runToBatchRow(job, workflowId, run, error) {
|
|
6514
|
+
function runToBatchRow(job, workflowId, run, error, batchLabel) {
|
|
5816
6515
|
return {
|
|
5817
6516
|
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
5818
6517
|
round: job.round,
|
|
@@ -5822,6 +6521,8 @@ function runToBatchRow(job, workflowId, run, error) {
|
|
|
5822
6521
|
scenario_slug: job.scenarioSlug,
|
|
5823
6522
|
scenario_name: job.scenarioName,
|
|
5824
6523
|
model_id: job.modelId,
|
|
6524
|
+
...job.realtime ? { realtime_model_id: job.modelId } : {},
|
|
6525
|
+
...batchLabel ? { batch_label: batchLabel } : {},
|
|
5825
6526
|
run_id: run?.id,
|
|
5826
6527
|
error,
|
|
5827
6528
|
failure_reason: run?.failureReason ?? null,
|
|
@@ -5829,6 +6530,7 @@ function runToBatchRow(job, workflowId, run, error) {
|
|
|
5829
6530
|
overall_score: run?.overallScore ?? null,
|
|
5830
6531
|
timing_summary: run?.timingSummary ?? null,
|
|
5831
6532
|
criterion_results: run ? summarizeCriterionResults(run) : void 0,
|
|
6533
|
+
...run?.strictTraceSummary ? { strict_trace: run.strictTraceSummary } : {},
|
|
5832
6534
|
completed_at: run?.completedAt ?? null,
|
|
5833
6535
|
evaluated_at: run?.evaluatedAt ?? null
|
|
5834
6536
|
};
|
|
@@ -5876,7 +6578,10 @@ async function executeModelEvalJob(api, options, job, waitTimeoutMs, pollMs, sle
|
|
|
5876
6578
|
const started = await api.startTestChatRun(options.workspace, options.workflowId, {
|
|
5877
6579
|
scenarioId: job.scenarioId,
|
|
5878
6580
|
driver: DriverMode.AUTO,
|
|
5879
|
-
|
|
6581
|
+
...job.realtime ? {
|
|
6582
|
+
assistantRealtimeModelId: job.modelId,
|
|
6583
|
+
...options.realtimeConfig ? { assistantRealtimeModelConfig: options.realtimeConfig } : {}
|
|
6584
|
+
} : { assistantChatModelId: job.modelId }
|
|
5880
6585
|
});
|
|
5881
6586
|
let run = await waitForRunTerminal(
|
|
5882
6587
|
api,
|
|
@@ -5897,10 +6602,10 @@ async function executeModelEvalJob(api, options, job, waitTimeoutMs, pollMs, sle
|
|
|
5897
6602
|
sleep2
|
|
5898
6603
|
);
|
|
5899
6604
|
}
|
|
5900
|
-
return runToBatchRow(job, options.workflowId, run);
|
|
6605
|
+
return runToBatchRow(job, options.workflowId, run, void 0, options.batchLabel);
|
|
5901
6606
|
} catch (e) {
|
|
5902
6607
|
const message = e instanceof Error ? e.message : String(e);
|
|
5903
|
-
return runToBatchRow(job, options.workflowId, null, message);
|
|
6608
|
+
return runToBatchRow(job, options.workflowId, null, message, options.batchLabel);
|
|
5904
6609
|
}
|
|
5905
6610
|
}
|
|
5906
6611
|
function createSpacingGate(spacingSec, sleep2) {
|
|
@@ -5918,56 +6623,99 @@ function createSpacingGate(spacingSec, sleep2) {
|
|
|
5918
6623
|
}
|
|
5919
6624
|
async function executeModelEvalBatch(api, options) {
|
|
5920
6625
|
const sleep2 = options.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
5921
|
-
const concurrency = options.concurrency ?? 1;
|
|
5922
6626
|
const jobs = buildModelEvalBatchJobs(
|
|
5923
6627
|
options.scenarios,
|
|
5924
6628
|
options.models,
|
|
5925
6629
|
options.rounds,
|
|
5926
|
-
options.warmup
|
|
6630
|
+
options.warmup,
|
|
6631
|
+
options.realtimeModels ?? []
|
|
5927
6632
|
);
|
|
5928
6633
|
const waitTimeoutMs = options.waitTimeoutSec * 1e3;
|
|
5929
6634
|
const pollMs = options.pollIntervalSec * 1e3;
|
|
5930
6635
|
const rows = [];
|
|
5931
6636
|
let stopBatch = false;
|
|
6637
|
+
let budgetStopped = false;
|
|
6638
|
+
let actualSpendUsd = 0;
|
|
5932
6639
|
const awaitSpacing = createSpacingGate(options.spacingSec, sleep2);
|
|
6640
|
+
const emitProgress = (line) => {
|
|
6641
|
+
if (options.onProgress) {
|
|
6642
|
+
options.onProgress(line);
|
|
6643
|
+
} else {
|
|
6644
|
+
process.stdout.write(`${line}
|
|
6645
|
+
`);
|
|
6646
|
+
}
|
|
6647
|
+
};
|
|
6648
|
+
const realtimeJobCount = jobs.filter((j) => j.realtime).length;
|
|
6649
|
+
let concurrency = options.concurrency ?? 1;
|
|
6650
|
+
if (realtimeJobCount > 0 && concurrency > REALTIME_MAX_CONCURRENCY) {
|
|
6651
|
+
emitProgress(
|
|
6652
|
+
`concurrency clamped ${concurrency} -> ${REALTIME_MAX_CONCURRENCY} (realtime models share the provider session pool)`
|
|
6653
|
+
);
|
|
6654
|
+
concurrency = REALTIME_MAX_CONCURRENCY;
|
|
6655
|
+
}
|
|
6656
|
+
if (realtimeJobCount > 0) {
|
|
6657
|
+
const projectedUsd = projectRealtimeBatchCostUsd(jobs);
|
|
6658
|
+
const cap = options.maxBudgetUsd;
|
|
6659
|
+
emitProgress(
|
|
6660
|
+
`realtime budget: projected ~$${projectedUsd.toFixed(2)} for ${realtimeJobCount} realtime run(s)${cap != null ? ` (cap $${cap.toFixed(2)})` : ""}`
|
|
6661
|
+
);
|
|
6662
|
+
if (cap != null && projectedUsd > cap) {
|
|
6663
|
+
throw new CLIError(
|
|
6664
|
+
`Batch aborted before dispatch: projected realtime cost $${projectedUsd.toFixed(2)} exceeds --max-budget-usd $${cap.toFixed(2)}. Reduce rounds/scenarios/models or raise the cap.`
|
|
6665
|
+
);
|
|
6666
|
+
}
|
|
6667
|
+
}
|
|
5933
6668
|
const recordRow = (job, row) => {
|
|
5934
6669
|
rows.push(row);
|
|
5935
6670
|
if (options.outPath) {
|
|
5936
6671
|
appendFileSync(options.outPath, `${JSON.stringify(row)}
|
|
5937
6672
|
`);
|
|
5938
6673
|
}
|
|
5939
|
-
|
|
5940
|
-
if (options.onProgress) {
|
|
5941
|
-
options.onProgress(progress);
|
|
5942
|
-
} else {
|
|
5943
|
-
process.stdout.write(`${progress}
|
|
5944
|
-
`);
|
|
5945
|
-
}
|
|
6674
|
+
emitProgress(formatBatchProgressLine(job, row));
|
|
5946
6675
|
};
|
|
6676
|
+
const makeSkippedRow = (job) => ({
|
|
6677
|
+
...runToBatchRow(
|
|
6678
|
+
job,
|
|
6679
|
+
options.workflowId,
|
|
6680
|
+
null,
|
|
6681
|
+
budgetStopped ? "batch stopped: realtime budget cap reached" : "batch aborted before start",
|
|
6682
|
+
options.batchLabel
|
|
6683
|
+
),
|
|
6684
|
+
batch_skipped: true
|
|
6685
|
+
});
|
|
5947
6686
|
const runOne = async (job) => {
|
|
5948
6687
|
await awaitSpacing();
|
|
5949
6688
|
if (stopBatch) {
|
|
5950
|
-
return
|
|
5951
|
-
...runToBatchRow(job, options.workflowId, null, "batch aborted before start"),
|
|
5952
|
-
batch_skipped: true
|
|
5953
|
-
};
|
|
6689
|
+
return makeSkippedRow(job);
|
|
5954
6690
|
}
|
|
5955
6691
|
const row = await executeModelEvalJob(api, options, job, waitTimeoutMs, pollMs, sleep2);
|
|
5956
6692
|
if (isConfigurationBlockerFailure(row.failure_reason)) {
|
|
5957
6693
|
stopBatch = true;
|
|
5958
6694
|
}
|
|
6695
|
+
if (job.realtime && !row.batch_skipped) {
|
|
6696
|
+
actualSpendUsd += actualRealtimeRowCostUsd(row, job.modelId);
|
|
6697
|
+
if (options.maxBudgetUsd != null && actualSpendUsd >= options.maxBudgetUsd && !stopBatch) {
|
|
6698
|
+
stopBatch = true;
|
|
6699
|
+
budgetStopped = true;
|
|
6700
|
+
emitProgress(
|
|
6701
|
+
`realtime budget: actual spend ~$${actualSpendUsd.toFixed(2)} reached cap $${options.maxBudgetUsd.toFixed(2)} \u2014 stopping dispatch`
|
|
6702
|
+
);
|
|
6703
|
+
}
|
|
6704
|
+
}
|
|
5959
6705
|
return row;
|
|
5960
6706
|
};
|
|
5961
6707
|
if (concurrency <= 1) {
|
|
5962
|
-
|
|
6708
|
+
let stoppedAt = jobs.length;
|
|
6709
|
+
for (const [index, job] of jobs.entries()) {
|
|
5963
6710
|
if (stopBatch) {
|
|
6711
|
+
stoppedAt = index;
|
|
5964
6712
|
break;
|
|
5965
6713
|
}
|
|
5966
6714
|
const row = await runOne(job);
|
|
5967
6715
|
recordRow(job, row);
|
|
5968
|
-
|
|
5969
|
-
|
|
5970
|
-
|
|
6716
|
+
}
|
|
6717
|
+
for (const job of jobs.slice(stoppedAt)) {
|
|
6718
|
+
recordRow(job, makeSkippedRow(job));
|
|
5971
6719
|
}
|
|
5972
6720
|
} else {
|
|
5973
6721
|
const results = new Array(jobs.length);
|
|
@@ -5983,6 +6731,9 @@ async function executeModelEvalBatch(api, options) {
|
|
|
5983
6731
|
return;
|
|
5984
6732
|
}
|
|
5985
6733
|
const job = jobs[index];
|
|
6734
|
+
if (job === void 0) {
|
|
6735
|
+
return;
|
|
6736
|
+
}
|
|
5986
6737
|
const row = await runOne(job);
|
|
5987
6738
|
results[index] = row;
|
|
5988
6739
|
recordRow(job, row);
|
|
@@ -5991,20 +6742,19 @@ async function executeModelEvalBatch(api, options) {
|
|
|
5991
6742
|
const workers = Array.from({ length: Math.min(concurrency, jobs.length) }, () => worker());
|
|
5992
6743
|
await Promise.all(workers);
|
|
5993
6744
|
if (stopBatch) {
|
|
5994
|
-
|
|
6745
|
+
jobs.forEach((job, index) => {
|
|
5995
6746
|
if (results[index] !== void 0) {
|
|
5996
|
-
|
|
6747
|
+
return;
|
|
5997
6748
|
}
|
|
5998
|
-
const
|
|
5999
|
-
const skipped = {
|
|
6000
|
-
...runToBatchRow(job, options.workflowId, null, "batch aborted before start"),
|
|
6001
|
-
batch_skipped: true
|
|
6002
|
-
};
|
|
6749
|
+
const skipped = makeSkippedRow(job);
|
|
6003
6750
|
results[index] = skipped;
|
|
6004
6751
|
recordRow(job, skipped);
|
|
6005
|
-
}
|
|
6752
|
+
});
|
|
6006
6753
|
}
|
|
6007
6754
|
}
|
|
6755
|
+
if (realtimeJobCount > 0) {
|
|
6756
|
+
emitProgress(`realtime budget: total actual spend ~$${actualSpendUsd.toFixed(2)}`);
|
|
6757
|
+
}
|
|
6008
6758
|
const blockerRow = rows.find((r) => isConfigurationBlockerFailure(r.failure_reason));
|
|
6009
6759
|
if (blockerRow) {
|
|
6010
6760
|
throw new CLIError(
|
|
@@ -6306,9 +7056,29 @@ var qualificationsDomain = {
|
|
|
6306
7056
|
{ name: "workflow-id", description: "Workflow ID", required: true },
|
|
6307
7057
|
{
|
|
6308
7058
|
name: "models",
|
|
6309
|
-
description: "Comma-separated assistant chat model IDs",
|
|
7059
|
+
description: "Comma-separated assistant chat model IDs (optional with --realtime-models)",
|
|
6310
7060
|
alias: "m",
|
|
6311
|
-
required:
|
|
7061
|
+
required: false
|
|
7062
|
+
},
|
|
7063
|
+
{
|
|
7064
|
+
name: "realtime-models",
|
|
7065
|
+
description: "Comma-separated native realtime model IDs (each forwarded as assistantRealtimeModelId)",
|
|
7066
|
+
required: false
|
|
7067
|
+
},
|
|
7068
|
+
{
|
|
7069
|
+
name: "realtime-config",
|
|
7070
|
+
description: "JSON object forwarded as assistantRealtimeModelConfig on realtime jobs",
|
|
7071
|
+
required: false
|
|
7072
|
+
},
|
|
7073
|
+
{
|
|
7074
|
+
name: "batch-label",
|
|
7075
|
+
description: "Label recorded on every JSONL row for cross-batch comparison",
|
|
7076
|
+
required: false
|
|
7077
|
+
},
|
|
7078
|
+
{
|
|
7079
|
+
name: "max-budget-usd",
|
|
7080
|
+
description: "Dispatch cap in USD on realtime spend: abort if pre-flight projection exceeds it, stop dispatching when actuals cross it (in-flight runs still finish and bill)",
|
|
7081
|
+
required: false
|
|
6312
7082
|
},
|
|
6313
7083
|
{
|
|
6314
7084
|
name: "scenario-ids",
|
|
@@ -6348,7 +7118,31 @@ var qualificationsDomain = {
|
|
|
6348
7118
|
{ name: "out", description: "Append JSONL rows to this file" }
|
|
6349
7119
|
],
|
|
6350
7120
|
handler: async ({ ctx, workspace, args }) => {
|
|
6351
|
-
const models = parseCommaSeparatedList(
|
|
7121
|
+
const models = args.models ? parseCommaSeparatedList(String(args.models), "--models") : [];
|
|
7122
|
+
const realtimeModels = args["realtime-models"] ? parseCommaSeparatedList(String(args["realtime-models"]), "--realtime-models") : [];
|
|
7123
|
+
if (models.length === 0 && realtimeModels.length === 0) {
|
|
7124
|
+
throw new CLIError("Specify --models and/or --realtime-models");
|
|
7125
|
+
}
|
|
7126
|
+
let realtimeConfig;
|
|
7127
|
+
if (args["realtime-config"]) {
|
|
7128
|
+
if (realtimeModels.length === 0) {
|
|
7129
|
+
throw new CLIError("--realtime-config requires --realtime-models");
|
|
7130
|
+
}
|
|
7131
|
+
let parsed;
|
|
7132
|
+
try {
|
|
7133
|
+
parsed = JSON.parse(String(args["realtime-config"]));
|
|
7134
|
+
} catch {
|
|
7135
|
+
throw new CLIError("--realtime-config is not valid JSON");
|
|
7136
|
+
}
|
|
7137
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
7138
|
+
throw new CLIError(
|
|
7139
|
+
"--realtime-config must be a JSON object (not an array or null)"
|
|
7140
|
+
);
|
|
7141
|
+
}
|
|
7142
|
+
realtimeConfig = parsed;
|
|
7143
|
+
}
|
|
7144
|
+
const batchLabel = args["batch-label"] ? String(args["batch-label"]) : void 0;
|
|
7145
|
+
const maxBudgetUsd = parseMaxBudgetUsd(args["max-budget-usd"], "--max-budget-usd");
|
|
6352
7146
|
const allScenarios = Boolean(args["all-scenarios"]);
|
|
6353
7147
|
const scenarioIdsRaw = args["scenario-ids"];
|
|
6354
7148
|
if (allScenarios && scenarioIdsRaw) {
|
|
@@ -6389,6 +7183,10 @@ var qualificationsDomain = {
|
|
|
6389
7183
|
workspace,
|
|
6390
7184
|
workflowId,
|
|
6391
7185
|
models,
|
|
7186
|
+
realtimeModels,
|
|
7187
|
+
realtimeConfig,
|
|
7188
|
+
batchLabel,
|
|
7189
|
+
maxBudgetUsd,
|
|
6392
7190
|
scenarios,
|
|
6393
7191
|
rounds,
|
|
6394
7192
|
warmup,
|
|
@@ -6703,7 +7501,7 @@ Relations (relationMatch): ${relations.join(", ")}`);
|
|
|
6703
7501
|
|
|
6704
7502
|
// src/domains/sites.ts
|
|
6705
7503
|
import { readFileSync as readFileSync2, writeFileSync as writeFileSync2 } from "fs";
|
|
6706
|
-
var
|
|
7504
|
+
var COLUMNS13 = [
|
|
6707
7505
|
COL.id(),
|
|
6708
7506
|
COL.name(),
|
|
6709
7507
|
{ header: "SLUG", getValue: (item) => item.slug ?? "" },
|
|
@@ -6757,7 +7555,7 @@ var sitesDomain = {
|
|
|
6757
7555
|
createMethod: "createSite",
|
|
6758
7556
|
updateMethod: "updateSite",
|
|
6759
7557
|
deleteMethod: "deleteSite",
|
|
6760
|
-
columns:
|
|
7558
|
+
columns: COLUMNS13
|
|
6761
7559
|
}),
|
|
6762
7560
|
// Pages sub-resource
|
|
6763
7561
|
{
|
|
@@ -7254,7 +8052,7 @@ var abilitiesDomain = {
|
|
|
7254
8052
|
},
|
|
7255
8053
|
{
|
|
7256
8054
|
path: ["abilities", "enable"],
|
|
7257
|
-
description: "Enable an ability on a workflow or task scope.",
|
|
8055
|
+
description: "Enable an ability on a workflow or task scope. For attaching tools (tools:toolkits), prefer `gr workflows tools set` / `gr tasks tools set` \u2014 those merge into the existing singleton and set knownMcpTools correctly.",
|
|
7258
8056
|
mutates: true,
|
|
7259
8057
|
requiresWorkspace: true,
|
|
7260
8058
|
args: [
|
|
@@ -7428,7 +8226,7 @@ var abilitiesDomain = {
|
|
|
7428
8226
|
};
|
|
7429
8227
|
|
|
7430
8228
|
// src/domains/access-grants.ts
|
|
7431
|
-
var
|
|
8229
|
+
var COLUMNS14 = [
|
|
7432
8230
|
COL.id(),
|
|
7433
8231
|
COL.status(),
|
|
7434
8232
|
{ header: "GRANTOR", getValue: (item) => String(item.grantorMemberId ?? "") },
|
|
@@ -7445,7 +8243,7 @@ var accessGrantsDomain = {
|
|
|
7445
8243
|
requiresWorkspace: true,
|
|
7446
8244
|
handler: async ({ ctx, workspace }) => {
|
|
7447
8245
|
const result2 = await requireAuth(ctx).apiClient.getAccessGrants(workspace);
|
|
7448
|
-
outputData(listResult(result2, false), ctx,
|
|
8246
|
+
outputData(listResult(result2, false), ctx, COLUMNS14);
|
|
7449
8247
|
}
|
|
7450
8248
|
},
|
|
7451
8249
|
{
|
|
@@ -7458,7 +8256,7 @@ var accessGrantsDomain = {
|
|
|
7458
8256
|
workspace,
|
|
7459
8257
|
requireString(args, "id")
|
|
7460
8258
|
);
|
|
7461
|
-
outputSingle(result2, ctx,
|
|
8259
|
+
outputSingle(result2, ctx, COLUMNS14);
|
|
7462
8260
|
}
|
|
7463
8261
|
},
|
|
7464
8262
|
{
|
|
@@ -7471,7 +8269,7 @@ var accessGrantsDomain = {
|
|
|
7471
8269
|
workspace,
|
|
7472
8270
|
data
|
|
7473
8271
|
);
|
|
7474
|
-
outputSingle(result2, ctx,
|
|
8272
|
+
outputSingle(result2, ctx, COLUMNS14);
|
|
7475
8273
|
}
|
|
7476
8274
|
},
|
|
7477
8275
|
{
|
|
@@ -7482,7 +8280,7 @@ var accessGrantsDomain = {
|
|
|
7482
8280
|
const result2 = await requireAuth(ctx).apiClient.getMyReceivedGrants(workspace, {
|
|
7483
8281
|
pageSize: 200
|
|
7484
8282
|
});
|
|
7485
|
-
outputData(listResult(result2, false), ctx,
|
|
8283
|
+
outputData(listResult(result2, false), ctx, COLUMNS14);
|
|
7486
8284
|
}
|
|
7487
8285
|
},
|
|
7488
8286
|
{
|
|
@@ -7493,7 +8291,7 @@ var accessGrantsDomain = {
|
|
|
7493
8291
|
const result2 = await requireAuth(ctx).apiClient.getMyGivenGrants(workspace, {
|
|
7494
8292
|
pageSize: 200
|
|
7495
8293
|
});
|
|
7496
|
-
outputData(listResult(result2, false), ctx,
|
|
8294
|
+
outputData(listResult(result2, false), ctx, COLUMNS14);
|
|
7497
8295
|
}
|
|
7498
8296
|
},
|
|
7499
8297
|
{
|
|
@@ -7508,7 +8306,7 @@ var accessGrantsDomain = {
|
|
|
7508
8306
|
requireString(args, "id"),
|
|
7509
8307
|
data ?? {}
|
|
7510
8308
|
);
|
|
7511
|
-
outputSingle(result2, ctx,
|
|
8309
|
+
outputSingle(result2, ctx, COLUMNS14);
|
|
7512
8310
|
}
|
|
7513
8311
|
},
|
|
7514
8312
|
{
|
|
@@ -7523,7 +8321,7 @@ var accessGrantsDomain = {
|
|
|
7523
8321
|
requireString(args, "id"),
|
|
7524
8322
|
data ?? {}
|
|
7525
8323
|
);
|
|
7526
|
-
outputSingle(result2, ctx,
|
|
8324
|
+
outputSingle(result2, ctx, COLUMNS14);
|
|
7527
8325
|
}
|
|
7528
8326
|
},
|
|
7529
8327
|
{
|
|
@@ -7536,7 +8334,7 @@ var accessGrantsDomain = {
|
|
|
7536
8334
|
workspace,
|
|
7537
8335
|
requireNumber(args, "member-id")
|
|
7538
8336
|
);
|
|
7539
|
-
outputData(listResult(result2, false), ctx,
|
|
8337
|
+
outputData(listResult(result2, false), ctx, COLUMNS14);
|
|
7540
8338
|
}
|
|
7541
8339
|
},
|
|
7542
8340
|
{
|
|
@@ -7561,14 +8359,14 @@ var accessGrantsDomain = {
|
|
|
7561
8359
|
pageSize: 200
|
|
7562
8360
|
}
|
|
7563
8361
|
);
|
|
7564
|
-
outputData(listResult(result2, false), ctx,
|
|
8362
|
+
outputData(listResult(result2, false), ctx, COLUMNS14);
|
|
7565
8363
|
}
|
|
7566
8364
|
}
|
|
7567
8365
|
]
|
|
7568
8366
|
};
|
|
7569
8367
|
|
|
7570
8368
|
// src/domains/ai-models.ts
|
|
7571
|
-
var
|
|
8369
|
+
var COLUMNS15 = [
|
|
7572
8370
|
{ header: "ID", getValue: (item) => String(item.id ?? item.modelId ?? "") },
|
|
7573
8371
|
{ header: "NAME", getValue: (item) => item.name ?? item.displayName ?? "" },
|
|
7574
8372
|
{ header: "PROVIDER", getValue: (item) => item.provider ?? "" },
|
|
@@ -7584,7 +8382,7 @@ var aiModelsDomain = {
|
|
|
7584
8382
|
requiresWorkspace: false,
|
|
7585
8383
|
handler: async ({ ctx }) => {
|
|
7586
8384
|
const result2 = await requireAuth(ctx).apiClient.getAllModels();
|
|
7587
|
-
outputData(result2, ctx,
|
|
8385
|
+
outputData(result2, ctx, COLUMNS15);
|
|
7588
8386
|
}
|
|
7589
8387
|
},
|
|
7590
8388
|
{
|
|
@@ -7593,7 +8391,7 @@ var aiModelsDomain = {
|
|
|
7593
8391
|
requiresWorkspace: false,
|
|
7594
8392
|
handler: async ({ ctx }) => {
|
|
7595
8393
|
const result2 = await requireAuth(ctx).apiClient.getChatModels();
|
|
7596
|
-
outputData(result2, ctx,
|
|
8394
|
+
outputData(result2, ctx, COLUMNS15);
|
|
7597
8395
|
}
|
|
7598
8396
|
},
|
|
7599
8397
|
{
|
|
@@ -7602,7 +8400,7 @@ var aiModelsDomain = {
|
|
|
7602
8400
|
requiresWorkspace: false,
|
|
7603
8401
|
handler: async ({ ctx }) => {
|
|
7604
8402
|
const result2 = await requireAuth(ctx).apiClient.getRealtimeModels();
|
|
7605
|
-
outputData(result2, ctx,
|
|
8403
|
+
outputData(result2, ctx, COLUMNS15);
|
|
7606
8404
|
}
|
|
7607
8405
|
},
|
|
7608
8406
|
{
|
|
@@ -7611,14 +8409,14 @@ var aiModelsDomain = {
|
|
|
7611
8409
|
requiresWorkspace: false,
|
|
7612
8410
|
handler: async ({ ctx }) => {
|
|
7613
8411
|
const result2 = await requireAuth(ctx).apiClient.getVoiceModels();
|
|
7614
|
-
outputData(result2, ctx,
|
|
8412
|
+
outputData(result2, ctx, COLUMNS15);
|
|
7615
8413
|
}
|
|
7616
8414
|
}
|
|
7617
8415
|
]
|
|
7618
8416
|
};
|
|
7619
8417
|
|
|
7620
8418
|
// src/domains/api-keys.ts
|
|
7621
|
-
var
|
|
8419
|
+
var COLUMNS16 = [
|
|
7622
8420
|
COL.id(),
|
|
7623
8421
|
COL.name(),
|
|
7624
8422
|
{ header: "PREFIX", getValue: (item) => item.prefix ?? "" },
|
|
@@ -7641,7 +8439,7 @@ var apiKeysDomain = {
|
|
|
7641
8439
|
requiresWorkspace: true,
|
|
7642
8440
|
handler: async ({ ctx, workspace }) => {
|
|
7643
8441
|
const result2 = await requireAuth(ctx).apiClient.getApiKeys(workspace);
|
|
7644
|
-
outputData(result2, ctx,
|
|
8442
|
+
outputData(result2, ctx, COLUMNS16);
|
|
7645
8443
|
}
|
|
7646
8444
|
},
|
|
7647
8445
|
{
|
|
@@ -7676,7 +8474,7 @@ var apiKeysDomain = {
|
|
|
7676
8474
|
requiresWorkspace: false,
|
|
7677
8475
|
handler: async ({ ctx }) => {
|
|
7678
8476
|
const result2 = await requireAuth(ctx).apiClient.getGlobalApiKeys();
|
|
7679
|
-
outputData(result2, ctx,
|
|
8477
|
+
outputData(result2, ctx, COLUMNS16);
|
|
7680
8478
|
}
|
|
7681
8479
|
},
|
|
7682
8480
|
{
|
|
@@ -8326,7 +9124,7 @@ var conciergeDomain = {
|
|
|
8326
9124
|
};
|
|
8327
9125
|
|
|
8328
9126
|
// src/domains/custom-toolkits.ts
|
|
8329
|
-
var
|
|
9127
|
+
var COLUMNS17 = [COL.id(), COL.name(), COL.description(), COL.enabled()];
|
|
8330
9128
|
var TOOL_COLUMNS2 = [COL.id(), COL.name(), COL.description()];
|
|
8331
9129
|
var customToolkitsDomain = {
|
|
8332
9130
|
name: "custom-toolkits",
|
|
@@ -8340,7 +9138,7 @@ var customToolkitsDomain = {
|
|
|
8340
9138
|
createMethod: "createCustomToolkit",
|
|
8341
9139
|
updateMethod: "updateCustomToolkit",
|
|
8342
9140
|
deleteMethod: "deleteCustomToolkit",
|
|
8343
|
-
columns:
|
|
9141
|
+
columns: COLUMNS17
|
|
8344
9142
|
}),
|
|
8345
9143
|
{
|
|
8346
9144
|
path: ["custom-toolkits", "enable"],
|
|
@@ -8353,7 +9151,7 @@ var customToolkitsDomain = {
|
|
|
8353
9151
|
workspace,
|
|
8354
9152
|
requireNumber(args, "id")
|
|
8355
9153
|
);
|
|
8356
|
-
outputSingle(result2, ctx,
|
|
9154
|
+
outputSingle(result2, ctx, COLUMNS17);
|
|
8357
9155
|
}
|
|
8358
9156
|
},
|
|
8359
9157
|
{
|
|
@@ -8367,7 +9165,7 @@ var customToolkitsDomain = {
|
|
|
8367
9165
|
workspace,
|
|
8368
9166
|
requireNumber(args, "id")
|
|
8369
9167
|
);
|
|
8370
|
-
outputSingle(result2, ctx,
|
|
9168
|
+
outputSingle(result2, ctx, COLUMNS17);
|
|
8371
9169
|
}
|
|
8372
9170
|
},
|
|
8373
9171
|
// Tools — nested resource requiring toolkitId
|
|
@@ -8479,7 +9277,7 @@ var docsDomain = {
|
|
|
8479
9277
|
};
|
|
8480
9278
|
|
|
8481
9279
|
// src/domains/features.ts
|
|
8482
|
-
var
|
|
9280
|
+
var COLUMNS18 = [
|
|
8483
9281
|
{ header: "SLUG", getValue: (item) => item.slug ?? "" },
|
|
8484
9282
|
COL.name(),
|
|
8485
9283
|
COL.description()
|
|
@@ -8494,7 +9292,7 @@ var featuresDomain = {
|
|
|
8494
9292
|
requiresWorkspace: false,
|
|
8495
9293
|
handler: async ({ ctx }) => {
|
|
8496
9294
|
const result2 = await requireAuth(ctx).apiClient.getFeatureRegistry();
|
|
8497
|
-
outputData(result2, ctx,
|
|
9295
|
+
outputData(result2, ctx, COLUMNS18);
|
|
8498
9296
|
}
|
|
8499
9297
|
},
|
|
8500
9298
|
{
|
|
@@ -8506,7 +9304,7 @@ var featuresDomain = {
|
|
|
8506
9304
|
const result2 = await requireAuth(ctx).apiClient.getFeatureBySlug(
|
|
8507
9305
|
requireString(args, "slug")
|
|
8508
9306
|
);
|
|
8509
|
-
outputSingle(result2, ctx,
|
|
9307
|
+
outputSingle(result2, ctx, COLUMNS18);
|
|
8510
9308
|
}
|
|
8511
9309
|
},
|
|
8512
9310
|
{
|
|
@@ -8515,14 +9313,14 @@ var featuresDomain = {
|
|
|
8515
9313
|
requiresWorkspace: true,
|
|
8516
9314
|
handler: async ({ ctx }) => {
|
|
8517
9315
|
const result2 = await requireAuth(ctx).apiClient.getAvailableWorkspaceFeatures();
|
|
8518
|
-
outputData(result2, ctx,
|
|
9316
|
+
outputData(result2, ctx, COLUMNS18);
|
|
8519
9317
|
}
|
|
8520
9318
|
}
|
|
8521
9319
|
]
|
|
8522
9320
|
};
|
|
8523
9321
|
|
|
8524
9322
|
// src/domains/inboxes.ts
|
|
8525
|
-
var
|
|
9323
|
+
var COLUMNS19 = [
|
|
8526
9324
|
COL.id(),
|
|
8527
9325
|
COL.name(),
|
|
8528
9326
|
{ header: "EMAIL", getValue: (item) => item.emailAddress ?? "" },
|
|
@@ -8547,7 +9345,7 @@ var inboxesDomain = {
|
|
|
8547
9345
|
createMethod: "createInbox",
|
|
8548
9346
|
updateMethod: "updateInbox",
|
|
8549
9347
|
deleteMethod: "deleteInbox",
|
|
8550
|
-
columns:
|
|
9348
|
+
columns: COLUMNS19
|
|
8551
9349
|
}),
|
|
8552
9350
|
{
|
|
8553
9351
|
path: ["inboxes", "emails", "list"],
|
|
@@ -8632,7 +9430,7 @@ var inboxesDomain = {
|
|
|
8632
9430
|
};
|
|
8633
9431
|
|
|
8634
9432
|
// src/domains/mcp-servers.ts
|
|
8635
|
-
var
|
|
9433
|
+
var COLUMNS20 = [
|
|
8636
9434
|
COL.id(),
|
|
8637
9435
|
COL.name(),
|
|
8638
9436
|
{ header: "URL", getValue: (item) => item.url ?? "" },
|
|
@@ -8650,7 +9448,7 @@ var mcpServersDomain = {
|
|
|
8650
9448
|
createMethod: "createMcpServer",
|
|
8651
9449
|
updateMethod: "updateMcpServer",
|
|
8652
9450
|
deleteMethod: "deleteMcpServer",
|
|
8653
|
-
columns:
|
|
9451
|
+
columns: COLUMNS20
|
|
8654
9452
|
}),
|
|
8655
9453
|
{
|
|
8656
9454
|
path: ["mcp-servers", "enable"],
|
|
@@ -8663,7 +9461,7 @@ var mcpServersDomain = {
|
|
|
8663
9461
|
workspace,
|
|
8664
9462
|
requireNumber(args, "id")
|
|
8665
9463
|
);
|
|
8666
|
-
outputSingle(result2, ctx,
|
|
9464
|
+
outputSingle(result2, ctx, COLUMNS20);
|
|
8667
9465
|
}
|
|
8668
9466
|
},
|
|
8669
9467
|
{
|
|
@@ -8677,27 +9475,118 @@ var mcpServersDomain = {
|
|
|
8677
9475
|
workspace,
|
|
8678
9476
|
requireNumber(args, "id")
|
|
8679
9477
|
);
|
|
8680
|
-
outputSingle(result2, ctx,
|
|
9478
|
+
outputSingle(result2, ctx, COLUMNS20);
|
|
8681
9479
|
}
|
|
8682
9480
|
},
|
|
8683
9481
|
{
|
|
8684
9482
|
path: ["mcp-servers", "tools", "list"],
|
|
8685
|
-
description: "List tools for an MCP server",
|
|
9483
|
+
description: "List tools for an MCP server. Accepts --mcp-server-id or --id. Each tool attaches via URI mcp:{id}:{name} (see gr workflows tools set).",
|
|
8686
9484
|
requiresWorkspace: true,
|
|
8687
|
-
args: [
|
|
9485
|
+
args: [
|
|
9486
|
+
{
|
|
9487
|
+
name: "mcp-server-id",
|
|
9488
|
+
aliases: ["id"],
|
|
9489
|
+
description: "MCP server ID",
|
|
9490
|
+
required: true
|
|
9491
|
+
}
|
|
9492
|
+
],
|
|
9493
|
+
examples: [
|
|
9494
|
+
"gr mcp-servers tools list --id 1 -w $WID",
|
|
9495
|
+
"gr mcp-servers tools list --mcp-server-id 1 -w $WID -o json"
|
|
9496
|
+
],
|
|
8688
9497
|
handler: async ({ ctx, workspace, args }) => {
|
|
8689
|
-
const
|
|
8690
|
-
|
|
8691
|
-
|
|
9498
|
+
const serverId = requireNumber(args, "mcp-server-id");
|
|
9499
|
+
const result2 = await requireAuth(ctx).apiClient.getMcpServerTools(workspace, serverId);
|
|
9500
|
+
const tools = Array.isArray(result2?.tools) ? result2.tools : Array.isArray(result2) ? result2 : [];
|
|
9501
|
+
const enriched = tools.map((t) => ({
|
|
9502
|
+
...t,
|
|
9503
|
+
uri: t?.name ? `mcp:${serverId}:${t.name}` : void 0
|
|
9504
|
+
}));
|
|
9505
|
+
outputData(
|
|
9506
|
+
Array.isArray(result2?.tools) ? { ...result2, tools: enriched, attachAllHint: `mcp:${serverId}:*` } : enriched,
|
|
9507
|
+
ctx
|
|
8692
9508
|
);
|
|
8693
|
-
|
|
9509
|
+
}
|
|
9510
|
+
}
|
|
9511
|
+
]
|
|
9512
|
+
};
|
|
9513
|
+
|
|
9514
|
+
// src/domains/toolkits.ts
|
|
9515
|
+
var COLUMNS21 = [
|
|
9516
|
+
{ header: "NAME", getValue: (item) => item.name ?? "" },
|
|
9517
|
+
{ header: "DISPLAY", getValue: (item) => item.displayName ?? "" },
|
|
9518
|
+
{ header: "TYPE", getValue: (item) => item.type ?? "" },
|
|
9519
|
+
{ header: "STATE", getValue: (item) => item.state ?? "" },
|
|
9520
|
+
{
|
|
9521
|
+
header: "TOOLS",
|
|
9522
|
+
getValue: (item) => String(item.tools?.length ?? 0)
|
|
9523
|
+
},
|
|
9524
|
+
{
|
|
9525
|
+
header: "SAMPLE URIS",
|
|
9526
|
+
getValue: (item) => sampleUris(item).join(", ")
|
|
9527
|
+
},
|
|
9528
|
+
{
|
|
9529
|
+
header: "MCP",
|
|
9530
|
+
getValue: (item) => {
|
|
9531
|
+
const c = item.connection;
|
|
9532
|
+
if (!c?.serverId) return "";
|
|
9533
|
+
return `id=${c.serverId}${c.connected ? " connected" : ""}`;
|
|
9534
|
+
}
|
|
9535
|
+
}
|
|
9536
|
+
];
|
|
9537
|
+
function sampleUris(item, limit = 3) {
|
|
9538
|
+
const tools = item.tools ?? [];
|
|
9539
|
+
const uris = [];
|
|
9540
|
+
for (const t of tools) {
|
|
9541
|
+
if (t.uri) {
|
|
9542
|
+
uris.push(t.uri);
|
|
9543
|
+
} else if (item.connection?.serverId && t.name) {
|
|
9544
|
+
uris.push(`mcp:${item.connection.serverId}:${t.name}`);
|
|
9545
|
+
} else if (t.name && item.type === "builtin") {
|
|
9546
|
+
const bare = t.name.includes(":") ? t.name.split(":").pop() : t.name;
|
|
9547
|
+
uris.push(`builtin:${bare}`);
|
|
9548
|
+
}
|
|
9549
|
+
if (uris.length >= limit) break;
|
|
9550
|
+
}
|
|
9551
|
+
if (item.connection?.serverId && (item.tools?.length ?? 0) > 0 && !uris.some((u) => u.endsWith(":*"))) {
|
|
9552
|
+
uris.push(`mcp:${item.connection.serverId}:*`);
|
|
9553
|
+
}
|
|
9554
|
+
return uris;
|
|
9555
|
+
}
|
|
9556
|
+
var toolkitsDomain = {
|
|
9557
|
+
name: "toolkits",
|
|
9558
|
+
description: "List toolkit sources (builtin, custom, MCP) and sample tool URIs for attachment",
|
|
9559
|
+
commands: [
|
|
9560
|
+
{
|
|
9561
|
+
path: ["toolkits", "list"],
|
|
9562
|
+
description: "List toolkit sources available in the workspace, including MCP servers with sample tool URIs (mcp:{id}:{name}) and an attach-all hint (mcp:{id}:*). Attach tools with: gr workflows tools set --workflow-id N --tools 'mcp:1:*'",
|
|
9563
|
+
requiresWorkspace: true,
|
|
9564
|
+
// DomainDef stores CommandDef<unknown>; keep COLUMNS typed as ToolkitRow.
|
|
9565
|
+
columns: COLUMNS21,
|
|
9566
|
+
examples: ["gr toolkits list -w $WID", "gr toolkits list -w $WID -o json"],
|
|
9567
|
+
handler: async ({ ctx, workspace }) => {
|
|
9568
|
+
const result2 = await requireAuth(ctx).apiClient.getToolkits(workspace);
|
|
9569
|
+
const toolkits = result2?.toolkits ?? result2;
|
|
9570
|
+
const rows = Array.isArray(toolkits) ? toolkits : [];
|
|
9571
|
+
const enriched = rows.map((row) => {
|
|
9572
|
+
const samples = sampleUris(row);
|
|
9573
|
+
const serverId = row.connection?.serverId;
|
|
9574
|
+
return {
|
|
9575
|
+
...row,
|
|
9576
|
+
sampleUris: samples,
|
|
9577
|
+
...serverId ? {
|
|
9578
|
+
attachAllHint: `mcp:${serverId}:*`
|
|
9579
|
+
} : {}
|
|
9580
|
+
};
|
|
9581
|
+
});
|
|
9582
|
+
outputData(enriched, ctx, COLUMNS21);
|
|
8694
9583
|
}
|
|
8695
9584
|
}
|
|
8696
9585
|
]
|
|
8697
9586
|
};
|
|
8698
9587
|
|
|
8699
9588
|
// src/domains/member-memories.ts
|
|
8700
|
-
var
|
|
9589
|
+
var COLUMNS22 = [
|
|
8701
9590
|
{ header: "KEY", getValue: (item) => item.key ?? "" },
|
|
8702
9591
|
{ header: "TYPE", getValue: (item) => item.type ?? "basic" },
|
|
8703
9592
|
{ header: "DESCRIPTION", getValue: (item) => truncate(item.description ?? "", 60) },
|
|
@@ -8731,7 +9620,7 @@ var memberMemoriesDomain = {
|
|
|
8731
9620
|
type,
|
|
8732
9621
|
query
|
|
8733
9622
|
});
|
|
8734
|
-
outputData(listResult(result2, false), ctx,
|
|
9623
|
+
outputData(listResult(result2, false), ctx, COLUMNS22);
|
|
8735
9624
|
}
|
|
8736
9625
|
},
|
|
8737
9626
|
{
|
|
@@ -8750,7 +9639,7 @@ var memberMemoriesDomain = {
|
|
|
8750
9639
|
memberId,
|
|
8751
9640
|
key
|
|
8752
9641
|
);
|
|
8753
|
-
outputData(result2, ctx,
|
|
9642
|
+
outputData(result2, ctx, COLUMNS22);
|
|
8754
9643
|
}
|
|
8755
9644
|
},
|
|
8756
9645
|
{
|
|
@@ -8781,7 +9670,7 @@ var memberMemoriesDomain = {
|
|
|
8781
9670
|
...priority !== void 0 && { priority }
|
|
8782
9671
|
}
|
|
8783
9672
|
);
|
|
8784
|
-
outputData(result2, ctx,
|
|
9673
|
+
outputData(result2, ctx, COLUMNS22);
|
|
8785
9674
|
}
|
|
8786
9675
|
},
|
|
8787
9676
|
{
|
|
@@ -8814,33 +9703,56 @@ var memberMemoriesDomain = {
|
|
|
8814
9703
|
]
|
|
8815
9704
|
};
|
|
8816
9705
|
|
|
8817
|
-
// src/domains/
|
|
8818
|
-
var
|
|
9706
|
+
// src/domains/intervention-requests.ts
|
|
9707
|
+
var COLUMNS23 = [
|
|
8819
9708
|
COL.id(),
|
|
8820
|
-
|
|
8821
|
-
|
|
8822
|
-
{
|
|
9709
|
+
{ header: "KIND", getValue: (item) => item.kind ?? "" },
|
|
9710
|
+
{ header: "CHAT", getValue: (item) => item.chatId ?? "" },
|
|
9711
|
+
{
|
|
9712
|
+
header: "STATUS",
|
|
9713
|
+
getValue: (item) => item.resolvedAt ? item.resolution ?? "resolved" : "open"
|
|
9714
|
+
},
|
|
9715
|
+
// Zero is the interesting value: the intervention was requested and nobody
|
|
9716
|
+
// was told, which is what `--unrouted` filters for.
|
|
9717
|
+
{ header: "NOTIFIED", getValue: (item) => item.notifiedCount ?? 0 },
|
|
9718
|
+
{ header: "REASON", getValue: (item) => item.reasonCode ?? "" },
|
|
9719
|
+
{ header: "CREATED", getValue: (item) => item.createdAt ?? "" }
|
|
8823
9720
|
];
|
|
8824
|
-
var
|
|
8825
|
-
name: "
|
|
8826
|
-
description: "
|
|
9721
|
+
var interventionRequestsDomain = {
|
|
9722
|
+
name: "interventions",
|
|
9723
|
+
description: "Inspect intervention requests \u2014 escalations and other asks for a person",
|
|
8827
9724
|
commands: [
|
|
8828
|
-
|
|
8829
|
-
|
|
8830
|
-
|
|
8831
|
-
|
|
8832
|
-
|
|
8833
|
-
|
|
8834
|
-
|
|
8835
|
-
|
|
8836
|
-
|
|
8837
|
-
|
|
8838
|
-
|
|
9725
|
+
{
|
|
9726
|
+
path: ["interventions", "list"],
|
|
9727
|
+
description: "List intervention requests (escalations etc). Newest first. Read-only.",
|
|
9728
|
+
requiresWorkspace: true,
|
|
9729
|
+
args: [
|
|
9730
|
+
{ name: "kind", description: "escalation | contributor_input | approval" },
|
|
9731
|
+
{ name: "open", description: "Only unresolved requests", isFlag: true },
|
|
9732
|
+
{ name: "chat-id", description: "Only requests for this chat" },
|
|
9733
|
+
{
|
|
9734
|
+
name: "unrouted",
|
|
9735
|
+
description: "Only requests that notified NOBODY \u2014 escalations that reached no one",
|
|
9736
|
+
isFlag: true
|
|
9737
|
+
},
|
|
9738
|
+
{ name: "limit", description: "Max rows (default 50, max 200)" }
|
|
9739
|
+
],
|
|
9740
|
+
handler: async ({ ctx, workspace, args, requireAuth: requireAuth2, outputData: outputData2 }) => {
|
|
9741
|
+
const result2 = await requireAuth2(ctx).apiClient.getInterventionRequests(workspace, {
|
|
9742
|
+
kind: args["kind"],
|
|
9743
|
+
openOnly: Boolean(args["open"]),
|
|
9744
|
+
chatId: args["chat-id"] ? Number(args["chat-id"]) : void 0,
|
|
9745
|
+
unroutedOnly: Boolean(args["unrouted"]),
|
|
9746
|
+
limit: args["limit"] ? Number(args["limit"]) : void 0
|
|
9747
|
+
});
|
|
9748
|
+
outputData2(result2, ctx, COLUMNS23);
|
|
9749
|
+
}
|
|
9750
|
+
}
|
|
8839
9751
|
]
|
|
8840
9752
|
};
|
|
8841
9753
|
|
|
8842
9754
|
// src/domains/notification-rules.ts
|
|
8843
|
-
var
|
|
9755
|
+
var COLUMNS24 = [
|
|
8844
9756
|
COL.id(),
|
|
8845
9757
|
COL.name(),
|
|
8846
9758
|
{ header: "TYPE", getValue: (item) => item.noticeType ?? "" },
|
|
@@ -8857,7 +9769,7 @@ var notificationRulesDomain = {
|
|
|
8857
9769
|
createMethod: "createNotificationRule",
|
|
8858
9770
|
updateMethod: "updateNotificationRule",
|
|
8859
9771
|
deleteMethod: "deleteNotificationRule",
|
|
8860
|
-
columns:
|
|
9772
|
+
columns: COLUMNS24
|
|
8861
9773
|
})
|
|
8862
9774
|
]
|
|
8863
9775
|
};
|
|
@@ -8917,7 +9829,7 @@ var oauthDomain = {
|
|
|
8917
9829
|
};
|
|
8918
9830
|
|
|
8919
9831
|
// src/domains/operator-groups.ts
|
|
8920
|
-
var
|
|
9832
|
+
var COLUMNS25 = [COL.id(), COL.name(), COL.description()];
|
|
8921
9833
|
var operatorGroupsDomain = {
|
|
8922
9834
|
name: "operator-groups",
|
|
8923
9835
|
description: "Manage operator groups",
|
|
@@ -8930,7 +9842,7 @@ var operatorGroupsDomain = {
|
|
|
8930
9842
|
createMethod: "createOperatorGroup",
|
|
8931
9843
|
updateMethod: "updateOperatorGroup",
|
|
8932
9844
|
deleteMethod: "deleteOperatorGroup",
|
|
8933
|
-
columns:
|
|
9845
|
+
columns: COLUMNS25
|
|
8934
9846
|
}),
|
|
8935
9847
|
{
|
|
8936
9848
|
path: ["operator-groups", "add-member"],
|
|
@@ -9008,13 +9920,6 @@ var ORG_DOMAIN_COLUMNS = [
|
|
|
9008
9920
|
maxWidth: 80
|
|
9009
9921
|
}
|
|
9010
9922
|
];
|
|
9011
|
-
function requireOrgId(args) {
|
|
9012
|
-
const val = args["org-uuid"] ?? args.org;
|
|
9013
|
-
if (typeof val !== "string" || !val) {
|
|
9014
|
-
throw new CLIError("Missing required argument: --org-uuid");
|
|
9015
|
-
}
|
|
9016
|
-
return val;
|
|
9017
|
-
}
|
|
9018
9923
|
function requireDomainUuid(args) {
|
|
9019
9924
|
const val = args["domain-uuid"] ?? args.uuid;
|
|
9020
9925
|
if (typeof val !== "string" || !val) {
|
|
@@ -9029,7 +9934,7 @@ function requireDomain(args) {
|
|
|
9029
9934
|
}
|
|
9030
9935
|
return val;
|
|
9031
9936
|
}
|
|
9032
|
-
var
|
|
9937
|
+
var ORG_UUID_ARG2 = {
|
|
9033
9938
|
name: "org-uuid",
|
|
9034
9939
|
aliases: ["org"],
|
|
9035
9940
|
description: "Organization UUID or ID",
|
|
@@ -9050,13 +9955,13 @@ function emailVerifyCommand(path4, description) {
|
|
|
9050
9955
|
description,
|
|
9051
9956
|
mutates: true,
|
|
9052
9957
|
requiresWorkspace: false,
|
|
9053
|
-
args: [
|
|
9958
|
+
args: [ORG_UUID_ARG2, DOMAIN_UUID_ARG],
|
|
9054
9959
|
examples: [
|
|
9055
9960
|
`yarn gr ${path4.join(" ")} --org-uuid $ORG_UUID --domain-uuid $DOMAIN_UUID --allow-write`
|
|
9056
9961
|
],
|
|
9057
9962
|
handler: async (hctx) => {
|
|
9058
9963
|
const result2 = await requireAuth(hctx.ctx).apiClient.verifyOrgDomainEmail(
|
|
9059
|
-
|
|
9964
|
+
requireOrgRef(hctx.args),
|
|
9060
9965
|
requireDomainUuid(hctx.args)
|
|
9061
9966
|
);
|
|
9062
9967
|
outputSingle(result2, hctx.ctx);
|
|
@@ -9069,13 +9974,13 @@ function siteVerifyCommand(path4, description) {
|
|
|
9069
9974
|
description,
|
|
9070
9975
|
mutates: true,
|
|
9071
9976
|
requiresWorkspace: false,
|
|
9072
|
-
args: [
|
|
9977
|
+
args: [ORG_UUID_ARG2, DOMAIN_UUID_ARG],
|
|
9073
9978
|
examples: [
|
|
9074
9979
|
`yarn gr ${path4.join(" ")} --org-uuid $ORG_UUID --domain-uuid $DOMAIN_UUID --allow-write`
|
|
9075
9980
|
],
|
|
9076
9981
|
handler: async (hctx) => {
|
|
9077
9982
|
const result2 = await requireAuth(hctx.ctx).apiClient.verifyOrgDomainSite(
|
|
9078
|
-
|
|
9983
|
+
requireOrgRef(hctx.args),
|
|
9079
9984
|
requireDomainUuid(hctx.args)
|
|
9080
9985
|
);
|
|
9081
9986
|
outputSingle(result2, hctx.ctx);
|
|
@@ -9089,7 +9994,7 @@ function registerDomainCommand(path4) {
|
|
|
9089
9994
|
mutates: true,
|
|
9090
9995
|
requiresWorkspace: false,
|
|
9091
9996
|
args: [
|
|
9092
|
-
|
|
9997
|
+
ORG_UUID_ARG2,
|
|
9093
9998
|
{ name: "domain", description: "Domain to register, e.g. example.com", required: true }
|
|
9094
9999
|
],
|
|
9095
10000
|
examples: [
|
|
@@ -9097,7 +10002,7 @@ function registerDomainCommand(path4) {
|
|
|
9097
10002
|
],
|
|
9098
10003
|
handler: async (hctx) => {
|
|
9099
10004
|
const result2 = await requireAuth(hctx.ctx).apiClient.registerOrgDomain(
|
|
9100
|
-
|
|
10005
|
+
requireOrgRef(hctx.args),
|
|
9101
10006
|
requireDomain(hctx.args)
|
|
9102
10007
|
);
|
|
9103
10008
|
outputSingle(result2, hctx.ctx, ORG_DOMAIN_COLUMNS);
|
|
@@ -9109,11 +10014,11 @@ var domainCommands = [
|
|
|
9109
10014
|
path: ["org", "domains", "list"],
|
|
9110
10015
|
description: "List domains registered to an organization",
|
|
9111
10016
|
requiresWorkspace: false,
|
|
9112
|
-
args: [
|
|
10017
|
+
args: [ORG_UUID_ARG2],
|
|
9113
10018
|
examples: ["yarn gr org domains list --org-uuid $ORG_UUID"],
|
|
9114
10019
|
handler: async (hctx) => {
|
|
9115
10020
|
const result2 = await requireAuth(hctx.ctx).apiClient.listOrgDomains(
|
|
9116
|
-
|
|
10021
|
+
requireOrgRef(hctx.args)
|
|
9117
10022
|
);
|
|
9118
10023
|
outputData(result2, hctx.ctx, ORG_DOMAIN_COLUMNS);
|
|
9119
10024
|
}
|
|
@@ -9122,11 +10027,11 @@ var domainCommands = [
|
|
|
9122
10027
|
path: ["org", "domains", "get"],
|
|
9123
10028
|
description: "Get a registered organization domain",
|
|
9124
10029
|
requiresWorkspace: false,
|
|
9125
|
-
args: [
|
|
10030
|
+
args: [ORG_UUID_ARG2, DOMAIN_UUID_ARG],
|
|
9126
10031
|
examples: ["yarn gr org domains get --org-uuid $ORG_UUID --domain-uuid $DOMAIN_UUID"],
|
|
9127
10032
|
handler: async (hctx) => {
|
|
9128
10033
|
const result2 = await requireAuth(hctx.ctx).apiClient.getOrgDomain(
|
|
9129
|
-
|
|
10034
|
+
requireOrgRef(hctx.args),
|
|
9130
10035
|
requireDomainUuid(hctx.args)
|
|
9131
10036
|
);
|
|
9132
10037
|
outputSingle(result2, hctx.ctx, ORG_DOMAIN_COLUMNS);
|
|
@@ -9139,13 +10044,13 @@ var domainCommands = [
|
|
|
9139
10044
|
description: "Verify domain ownership by checking the _gravity-verify TXT record",
|
|
9140
10045
|
mutates: true,
|
|
9141
10046
|
requiresWorkspace: false,
|
|
9142
|
-
args: [
|
|
10047
|
+
args: [ORG_UUID_ARG2, DOMAIN_UUID_ARG],
|
|
9143
10048
|
examples: [
|
|
9144
10049
|
"yarn gr org domains verify-ownership --org-uuid $ORG_UUID --domain-uuid $DOMAIN_UUID --allow-write"
|
|
9145
10050
|
],
|
|
9146
10051
|
handler: async (hctx) => {
|
|
9147
10052
|
const result2 = await requireAuth(hctx.ctx).apiClient.verifyOrgDomainOwnership(
|
|
9148
|
-
|
|
10053
|
+
requireOrgRef(hctx.args),
|
|
9149
10054
|
requireDomainUuid(hctx.args)
|
|
9150
10055
|
);
|
|
9151
10056
|
outputSingle(result2, hctx.ctx);
|
|
@@ -9156,13 +10061,16 @@ var domainCommands = [
|
|
|
9156
10061
|
description: "Delete a registered organization domain",
|
|
9157
10062
|
mutates: true,
|
|
9158
10063
|
requiresWorkspace: false,
|
|
9159
|
-
args: [
|
|
10064
|
+
args: [ORG_UUID_ARG2, DOMAIN_UUID_ARG],
|
|
9160
10065
|
examples: [
|
|
9161
10066
|
"yarn gr org domains delete --org-uuid $ORG_UUID --domain-uuid $DOMAIN_UUID --allow-write"
|
|
9162
10067
|
],
|
|
9163
10068
|
handler: async (hctx) => {
|
|
9164
10069
|
const domainUuid = requireDomainUuid(hctx.args);
|
|
9165
|
-
await requireAuth(hctx.ctx).apiClient.deleteOrgDomain(
|
|
10070
|
+
await requireAuth(hctx.ctx).apiClient.deleteOrgDomain(
|
|
10071
|
+
requireOrgRef(hctx.args),
|
|
10072
|
+
domainUuid
|
|
10073
|
+
);
|
|
9166
10074
|
process.stdout.write(`Deleted org domain ${domainUuid}
|
|
9167
10075
|
`);
|
|
9168
10076
|
}
|
|
@@ -9172,13 +10080,13 @@ var domainCommands = [
|
|
|
9172
10080
|
description: "Enable email DNS records on a verified organization domain",
|
|
9173
10081
|
mutates: true,
|
|
9174
10082
|
requiresWorkspace: false,
|
|
9175
|
-
args: [
|
|
10083
|
+
args: [ORG_UUID_ARG2, DOMAIN_UUID_ARG],
|
|
9176
10084
|
examples: [
|
|
9177
10085
|
"yarn gr org domains email enable --org-uuid $ORG_UUID --domain-uuid $DOMAIN_UUID --allow-write"
|
|
9178
10086
|
],
|
|
9179
10087
|
handler: async (hctx) => {
|
|
9180
10088
|
const result2 = await requireAuth(hctx.ctx).apiClient.enableOrgDomainEmail(
|
|
9181
|
-
|
|
10089
|
+
requireOrgRef(hctx.args),
|
|
9182
10090
|
requireDomainUuid(hctx.args)
|
|
9183
10091
|
);
|
|
9184
10092
|
outputSingle(result2, hctx.ctx);
|
|
@@ -9188,11 +10096,11 @@ var domainCommands = [
|
|
|
9188
10096
|
path: ["org", "domains", "email", "get"],
|
|
9189
10097
|
description: "Get email DNS setup and status for an organization domain",
|
|
9190
10098
|
requiresWorkspace: false,
|
|
9191
|
-
args: [
|
|
10099
|
+
args: [ORG_UUID_ARG2, DOMAIN_UUID_ARG],
|
|
9192
10100
|
examples: ["yarn gr org domains email get --org-uuid $ORG_UUID --domain-uuid $DOMAIN_UUID"],
|
|
9193
10101
|
handler: async (hctx) => {
|
|
9194
10102
|
const result2 = await requireAuth(hctx.ctx).apiClient.getOrgDomainEmail(
|
|
9195
|
-
|
|
10103
|
+
requireOrgRef(hctx.args),
|
|
9196
10104
|
requireDomainUuid(hctx.args)
|
|
9197
10105
|
);
|
|
9198
10106
|
outputSingle(result2, hctx.ctx);
|
|
@@ -9212,7 +10120,7 @@ var domainCommands = [
|
|
|
9212
10120
|
mutates: true,
|
|
9213
10121
|
requiresWorkspace: false,
|
|
9214
10122
|
args: [
|
|
9215
|
-
|
|
10123
|
+
ORG_UUID_ARG2,
|
|
9216
10124
|
DOMAIN_UUID_ARG,
|
|
9217
10125
|
{
|
|
9218
10126
|
name: "confirm",
|
|
@@ -9226,7 +10134,7 @@ var domainCommands = [
|
|
|
9226
10134
|
handler: async (hctx) => {
|
|
9227
10135
|
const domainUuid = requireDomainUuid(hctx.args);
|
|
9228
10136
|
const result2 = await requireAuth(hctx.ctx).apiClient.disableOrgDomainEmail(
|
|
9229
|
-
|
|
10137
|
+
requireOrgRef(hctx.args),
|
|
9230
10138
|
domainUuid,
|
|
9231
10139
|
hctx.args.confirm === true
|
|
9232
10140
|
);
|
|
@@ -9249,13 +10157,13 @@ var domainCommands = [
|
|
|
9249
10157
|
description: "Enable custom site CNAME verification on a verified organization domain",
|
|
9250
10158
|
mutates: true,
|
|
9251
10159
|
requiresWorkspace: false,
|
|
9252
|
-
args: [
|
|
10160
|
+
args: [ORG_UUID_ARG2, DOMAIN_UUID_ARG],
|
|
9253
10161
|
examples: [
|
|
9254
10162
|
"yarn gr org domains site enable --org-uuid $ORG_UUID --domain-uuid $DOMAIN_UUID --allow-write"
|
|
9255
10163
|
],
|
|
9256
10164
|
handler: async (hctx) => {
|
|
9257
10165
|
const result2 = await requireAuth(hctx.ctx).apiClient.enableOrgDomainSite(
|
|
9258
|
-
|
|
10166
|
+
requireOrgRef(hctx.args),
|
|
9259
10167
|
requireDomainUuid(hctx.args)
|
|
9260
10168
|
);
|
|
9261
10169
|
outputSingle(result2, hctx.ctx);
|
|
@@ -9265,11 +10173,11 @@ var domainCommands = [
|
|
|
9265
10173
|
path: ["org", "domains", "site", "get"],
|
|
9266
10174
|
description: "Get custom site CNAME setup and status for an organization domain",
|
|
9267
10175
|
requiresWorkspace: false,
|
|
9268
|
-
args: [
|
|
10176
|
+
args: [ORG_UUID_ARG2, DOMAIN_UUID_ARG],
|
|
9269
10177
|
examples: ["yarn gr org domains site get --org-uuid $ORG_UUID --domain-uuid $DOMAIN_UUID"],
|
|
9270
10178
|
handler: async (hctx) => {
|
|
9271
10179
|
const result2 = await requireAuth(hctx.ctx).apiClient.getOrgDomainSite(
|
|
9272
|
-
|
|
10180
|
+
requireOrgRef(hctx.args),
|
|
9273
10181
|
requireDomainUuid(hctx.args)
|
|
9274
10182
|
);
|
|
9275
10183
|
outputSingle(result2, hctx.ctx);
|
|
@@ -9289,7 +10197,7 @@ var domainCommands = [
|
|
|
9289
10197
|
mutates: true,
|
|
9290
10198
|
requiresWorkspace: false,
|
|
9291
10199
|
args: [
|
|
9292
|
-
|
|
10200
|
+
ORG_UUID_ARG2,
|
|
9293
10201
|
DOMAIN_UUID_ARG,
|
|
9294
10202
|
{
|
|
9295
10203
|
name: "confirm",
|
|
@@ -9303,7 +10211,7 @@ var domainCommands = [
|
|
|
9303
10211
|
handler: async (hctx) => {
|
|
9304
10212
|
const domainUuid = requireDomainUuid(hctx.args);
|
|
9305
10213
|
const result2 = await requireAuth(hctx.ctx).apiClient.disableOrgDomainSite(
|
|
9306
|
-
|
|
10214
|
+
requireOrgRef(hctx.args),
|
|
9307
10215
|
domainUuid,
|
|
9308
10216
|
hctx.args.confirm === true
|
|
9309
10217
|
);
|
|
@@ -9333,9 +10241,229 @@ var orgDomain = {
|
|
|
9333
10241
|
const result2 = await requireAuth(ctx).apiClient.getMyOrganizations();
|
|
9334
10242
|
outputData(result2, ctx, ORG_COLUMNS);
|
|
9335
10243
|
}
|
|
9336
|
-
},
|
|
9337
|
-
...domainCommands
|
|
9338
|
-
]
|
|
10244
|
+
},
|
|
10245
|
+
...domainCommands
|
|
10246
|
+
]
|
|
10247
|
+
};
|
|
10248
|
+
|
|
10249
|
+
// src/domains/org-legal-entities.ts
|
|
10250
|
+
var LEGAL_ENTITY_COLUMNS = [
|
|
10251
|
+
{ header: "UUID", getValue: (e) => e.uuid ?? "" },
|
|
10252
|
+
{ header: "LEGAL NAME", getValue: (e) => e.legalName ?? "" },
|
|
10253
|
+
{ header: "PRIMARY", getValue: (e) => e.isPrimary ? "yes" : "" },
|
|
10254
|
+
{ header: "ID TYPE", getValue: (e) => e.registrationIdentifierType ?? "" },
|
|
10255
|
+
{ header: "PROFILE SID", getValue: (e) => e.customerProfileSid ?? "" },
|
|
10256
|
+
// The CACHED status hint. `org business-profile get` reads Twilio live.
|
|
10257
|
+
{ header: "PROFILE STATUS (cached)", getValue: (e) => e.customerProfileStatus ?? "" }
|
|
10258
|
+
];
|
|
10259
|
+
var LEGAL_ENTITY_UUID_ARG = {
|
|
10260
|
+
name: "legal-entity-uuid",
|
|
10261
|
+
aliases: ["legal-entity", "entity-uuid"],
|
|
10262
|
+
description: "Legal entity UUID (omit to use the org primary entity)",
|
|
10263
|
+
required: false
|
|
10264
|
+
};
|
|
10265
|
+
var TRUST_PRODUCT_ENTITY_UUID_ARG = { ...LEGAL_ENTITY_UUID_ARG, required: true };
|
|
10266
|
+
var TRUST_PRODUCT_COLUMNS = [
|
|
10267
|
+
{ header: "PRODUCT", getValue: (p) => p.product ?? "" },
|
|
10268
|
+
{ header: "STATUS", getValue: (p) => p.status ?? "(none)" },
|
|
10269
|
+
{ header: "TRUST PRODUCT SID", getValue: (p) => p.trustProductSid ?? "(none)" },
|
|
10270
|
+
// CNAM only; blank for the other two rather than absent, so the column lines up.
|
|
10271
|
+
{ header: "DISPLAY NAME", getValue: (p) => p.displayName ?? "" }
|
|
10272
|
+
];
|
|
10273
|
+
function optionalEntityUuid(args) {
|
|
10274
|
+
const val = args["legal-entity-uuid"] ?? args["legal-entity"] ?? args["entity-uuid"];
|
|
10275
|
+
return typeof val === "string" && val ? val : void 0;
|
|
10276
|
+
}
|
|
10277
|
+
function requireEntityUuid(args) {
|
|
10278
|
+
const val = optionalEntityUuid(args);
|
|
10279
|
+
if (!val) {
|
|
10280
|
+
throw new CLIError("Missing required argument: --legal-entity-uuid");
|
|
10281
|
+
}
|
|
10282
|
+
return val;
|
|
10283
|
+
}
|
|
10284
|
+
function requireBody(data) {
|
|
10285
|
+
if (data && typeof data === "object" && !Array.isArray(data)) return data;
|
|
10286
|
+
throw new CLIError(
|
|
10287
|
+
`Missing or invalid --data. Pass a JSON object, e.g. --data '{"key":"value"}' (or --file body.json). Arrays are not accepted.`
|
|
10288
|
+
);
|
|
10289
|
+
}
|
|
10290
|
+
function submittability(profile) {
|
|
10291
|
+
if (profile.evaluationStatus === "compliant") return "yes";
|
|
10292
|
+
if (profile.evaluationStatus === "noncompliant") return "no (noncompliant)";
|
|
10293
|
+
if (profile.status && profile.status !== "draft") return `n/a (${profile.status})`;
|
|
10294
|
+
return "no (never evaluated)";
|
|
10295
|
+
}
|
|
10296
|
+
var commands2 = [
|
|
10297
|
+
{
|
|
10298
|
+
path: ["org", "legal-entities", "list"],
|
|
10299
|
+
description: "List an org's legal entities (one Twilio Customer Profile each). Requires org admin \u2014 staff join via `gr admin organizations join --role platform_support`.",
|
|
10300
|
+
requiresWorkspace: false,
|
|
10301
|
+
args: [ORG_UUID_ARG],
|
|
10302
|
+
examples: ["yarn gr org legal-entities list --org-uuid $ORG_UUID"],
|
|
10303
|
+
handler: async (hctx) => {
|
|
10304
|
+
const result2 = await requireAuth(hctx.ctx).apiClient.listLegalEntities(
|
|
10305
|
+
requireOrgRef(hctx.args)
|
|
10306
|
+
);
|
|
10307
|
+
outputData(result2.legalEntities ?? [], hctx.ctx, LEGAL_ENTITY_COLUMNS);
|
|
10308
|
+
}
|
|
10309
|
+
},
|
|
10310
|
+
{
|
|
10311
|
+
path: ["org", "legal-entities", "get"],
|
|
10312
|
+
description: "Get one legal entity",
|
|
10313
|
+
requiresWorkspace: false,
|
|
10314
|
+
args: [ORG_UUID_ARG, { ...LEGAL_ENTITY_UUID_ARG, required: true }],
|
|
10315
|
+
examples: [
|
|
10316
|
+
"yarn gr org legal-entities get --org-uuid $ORG_UUID --legal-entity-uuid $ENTITY_UUID"
|
|
10317
|
+
],
|
|
10318
|
+
handler: async (hctx) => {
|
|
10319
|
+
const result2 = await requireAuth(hctx.ctx).apiClient.getLegalEntity(
|
|
10320
|
+
requireOrgRef(hctx.args),
|
|
10321
|
+
requireEntityUuid(hctx.args)
|
|
10322
|
+
);
|
|
10323
|
+
outputSingle(result2, hctx.ctx);
|
|
10324
|
+
}
|
|
10325
|
+
},
|
|
10326
|
+
{
|
|
10327
|
+
path: ["org", "legal-entities", "create"],
|
|
10328
|
+
description: "Create a legal entity (its business profile is filled in separately)",
|
|
10329
|
+
mutates: true,
|
|
10330
|
+
requiresWorkspace: false,
|
|
10331
|
+
args: [ORG_UUID_ARG],
|
|
10332
|
+
examples: [
|
|
10333
|
+
`yarn gr org legal-entities create --org-uuid $ORG_UUID --data '{"legalName":"Acme Health"}' --allow-write`
|
|
10334
|
+
],
|
|
10335
|
+
handler: async (hctx) => {
|
|
10336
|
+
const result2 = await requireAuth(hctx.ctx).apiClient.createLegalEntity(
|
|
10337
|
+
requireOrgRef(hctx.args),
|
|
10338
|
+
requireBody(hctx.data)
|
|
10339
|
+
);
|
|
10340
|
+
outputSingle(result2, hctx.ctx);
|
|
10341
|
+
}
|
|
10342
|
+
},
|
|
10343
|
+
{
|
|
10344
|
+
path: ["org", "business-profile", "get"],
|
|
10345
|
+
description: "Read a legal entity's business profile LIVE from Twilio. SUBMITTABLE is derived from evaluationStatus, not status.",
|
|
10346
|
+
requiresWorkspace: false,
|
|
10347
|
+
args: [ORG_UUID_ARG, LEGAL_ENTITY_UUID_ARG],
|
|
10348
|
+
examples: ["yarn gr org business-profile get --org-uuid $ORG_UUID"],
|
|
10349
|
+
handler: async (hctx) => {
|
|
10350
|
+
const profile = await requireAuth(hctx.ctx).apiClient.getBusinessProfile(
|
|
10351
|
+
requireOrgRef(hctx.args),
|
|
10352
|
+
optionalEntityUuid(hctx.args)
|
|
10353
|
+
);
|
|
10354
|
+
outputSingle(
|
|
10355
|
+
hctx.ctx.outputFormat === "json" ? profile : {
|
|
10356
|
+
status: profile.status ?? "(none)",
|
|
10357
|
+
evaluationStatus: profile.evaluationStatus ?? "(not evaluated)",
|
|
10358
|
+
SUBMITTABLE: submittability(profile),
|
|
10359
|
+
customerProfileSid: profile.customerProfileSid ?? "(none)",
|
|
10360
|
+
legalName: profile.businessInfo?.legalName ?? "(missing)",
|
|
10361
|
+
authorizedReps: (profile.authorizedReps ?? []).length,
|
|
10362
|
+
hasAddress: profile.address ? "yes" : "no",
|
|
10363
|
+
failureReasons: (profile.failureReasons ?? []).join("; ") || "(none)",
|
|
10364
|
+
profileRecoveryFailed: profile.profileRecoveryFailed ? "YES" : "no"
|
|
10365
|
+
},
|
|
10366
|
+
hctx.ctx
|
|
10367
|
+
);
|
|
10368
|
+
}
|
|
10369
|
+
},
|
|
10370
|
+
{
|
|
10371
|
+
path: ["org", "business-profile", "update"],
|
|
10372
|
+
description: "Upsert the business profile (idempotent via cached SIDs). Returns the fresh compliance evaluation.",
|
|
10373
|
+
mutates: true,
|
|
10374
|
+
requiresWorkspace: false,
|
|
10375
|
+
args: [ORG_UUID_ARG, LEGAL_ENTITY_UUID_ARG],
|
|
10376
|
+
examples: [
|
|
10377
|
+
"yarn gr org business-profile update --org-uuid $ORG_UUID --file profile.json --allow-write"
|
|
10378
|
+
],
|
|
10379
|
+
handler: async (hctx) => {
|
|
10380
|
+
const result2 = await requireAuth(hctx.ctx).apiClient.updateBusinessProfile(
|
|
10381
|
+
requireOrgRef(hctx.args),
|
|
10382
|
+
requireBody(hctx.data),
|
|
10383
|
+
optionalEntityUuid(hctx.args)
|
|
10384
|
+
);
|
|
10385
|
+
outputSingle(result2, hctx.ctx);
|
|
10386
|
+
}
|
|
10387
|
+
},
|
|
10388
|
+
{
|
|
10389
|
+
path: ["org", "business-profile", "submit"],
|
|
10390
|
+
description: "Submit the business profile to Twilio for review. Free \u2014 the paid step is brand registration, which is separate. 412 if not currently compliant, 409 if a review is already in flight.",
|
|
10391
|
+
mutates: true,
|
|
10392
|
+
requiresWorkspace: false,
|
|
10393
|
+
args: [ORG_UUID_ARG, LEGAL_ENTITY_UUID_ARG],
|
|
10394
|
+
examples: ["yarn gr org business-profile submit --org-uuid $ORG_UUID --allow-write"],
|
|
10395
|
+
handler: async (hctx) => {
|
|
10396
|
+
const result2 = await requireAuth(hctx.ctx).apiClient.submitBusinessProfile(
|
|
10397
|
+
requireOrgRef(hctx.args),
|
|
10398
|
+
optionalEntityUuid(hctx.args)
|
|
10399
|
+
);
|
|
10400
|
+
outputSingle(result2, hctx.ctx);
|
|
10401
|
+
}
|
|
10402
|
+
},
|
|
10403
|
+
{
|
|
10404
|
+
path: ["org", "business-profile", "cancel"],
|
|
10405
|
+
description: "Cancel an in-flight Twilio review, resetting the profile to draft so it can be edited and resubmitted",
|
|
10406
|
+
mutates: true,
|
|
10407
|
+
requiresWorkspace: false,
|
|
10408
|
+
args: [ORG_UUID_ARG, LEGAL_ENTITY_UUID_ARG],
|
|
10409
|
+
examples: ["yarn gr org business-profile cancel --org-uuid $ORG_UUID --allow-write"],
|
|
10410
|
+
handler: async (hctx) => {
|
|
10411
|
+
const result2 = await requireAuth(hctx.ctx).apiClient.cancelBusinessProfile(
|
|
10412
|
+
requireOrgRef(hctx.args),
|
|
10413
|
+
optionalEntityUuid(hctx.args)
|
|
10414
|
+
);
|
|
10415
|
+
outputSingle(result2, hctx.ctx);
|
|
10416
|
+
}
|
|
10417
|
+
},
|
|
10418
|
+
{
|
|
10419
|
+
path: ["org", "trust-products", "list"],
|
|
10420
|
+
description: "Read an entity's CACHED voice trust product state (CNAM / SHAKEN-STIR / Voice Integrity) from trust_hub_state. No Twilio calls \u2014 run `sync` to reconcile.",
|
|
10421
|
+
requiresWorkspace: false,
|
|
10422
|
+
args: [ORG_UUID_ARG, TRUST_PRODUCT_ENTITY_UUID_ARG],
|
|
10423
|
+
examples: [
|
|
10424
|
+
"yarn gr org trust-products list --org-uuid $ORG_UUID --legal-entity-uuid $ENTITY_UUID --env prod"
|
|
10425
|
+
],
|
|
10426
|
+
handler: async (hctx) => {
|
|
10427
|
+
const result2 = await requireAuth(hctx.ctx).apiClient.getVoiceTrustProducts(
|
|
10428
|
+
requireOrgRef(hctx.args),
|
|
10429
|
+
requireEntityUuid(hctx.args)
|
|
10430
|
+
);
|
|
10431
|
+
outputData(result2.products, hctx.ctx, TRUST_PRODUCT_COLUMNS);
|
|
10432
|
+
}
|
|
10433
|
+
},
|
|
10434
|
+
{
|
|
10435
|
+
path: ["org", "trust-products", "sync"],
|
|
10436
|
+
description: "Reconcile voice trust products against Twilio: claim products staged outside the app and refresh non-terminal statuses. This is the prerequisite for `admin phone-numbers migrate`, whose preflight reads the cached state. 409 if another Trust Hub operation holds the org lock \u2014 retry shortly.",
|
|
10437
|
+
// Writes trust_hub_state and calls Twilio. Read-only in business terms
|
|
10438
|
+
// (it discovers, it does not create or submit), but it mutates our cache,
|
|
10439
|
+
// so it takes --allow-write like every other state-changing verb.
|
|
10440
|
+
mutates: true,
|
|
10441
|
+
requiresWorkspace: false,
|
|
10442
|
+
args: [ORG_UUID_ARG, TRUST_PRODUCT_ENTITY_UUID_ARG],
|
|
10443
|
+
examples: [
|
|
10444
|
+
"yarn gr org trust-products sync --org-uuid $ORG_UUID --legal-entity-uuid $ENTITY_UUID --env prod --allow-write"
|
|
10445
|
+
],
|
|
10446
|
+
handler: async (hctx) => {
|
|
10447
|
+
const result2 = await requireAuth(hctx.ctx).apiClient.syncVoiceTrustProducts(
|
|
10448
|
+
requireOrgRef(hctx.args),
|
|
10449
|
+
requireEntityUuid(hctx.args)
|
|
10450
|
+
);
|
|
10451
|
+
if (hctx.ctx.outputFormat !== "table") {
|
|
10452
|
+
outputSingle(result2, hctx.ctx);
|
|
10453
|
+
return;
|
|
10454
|
+
}
|
|
10455
|
+
const discovered = result2.discovered ?? [];
|
|
10456
|
+
console.log(
|
|
10457
|
+
discovered.length > 0 ? `Discovered ${discovered.length} product(s): ${discovered.join(", ")}` : "No new products discovered \u2014 already up to date."
|
|
10458
|
+
);
|
|
10459
|
+
outputData(result2.products, hctx.ctx, TRUST_PRODUCT_COLUMNS);
|
|
10460
|
+
}
|
|
10461
|
+
}
|
|
10462
|
+
];
|
|
10463
|
+
var orgLegalEntitiesDomain = {
|
|
10464
|
+
name: "org",
|
|
10465
|
+
description: "Legal entities and business profiles (Twilio Customer Profiles)",
|
|
10466
|
+
commands: commands2
|
|
9339
10467
|
};
|
|
9340
10468
|
|
|
9341
10469
|
// src/domains/org-phone-numbers.ts
|
|
@@ -9359,14 +10487,7 @@ var AVAILABLE_PHONE_COLUMNS = [
|
|
|
9359
10487
|
{ header: "Region", getValue: (p) => p.region ?? "" },
|
|
9360
10488
|
{ header: "Type", getValue: (p) => p.phoneNumberType ?? "" }
|
|
9361
10489
|
];
|
|
9362
|
-
|
|
9363
|
-
const val = args["org-uuid"] ?? args["org"];
|
|
9364
|
-
if (typeof val !== "string" || !val) {
|
|
9365
|
-
throw new CLIError("Missing required argument: --org-uuid");
|
|
9366
|
-
}
|
|
9367
|
-
return val;
|
|
9368
|
-
}
|
|
9369
|
-
var commands2 = [
|
|
10490
|
+
var commands3 = [
|
|
9370
10491
|
{
|
|
9371
10492
|
path: ["org", "phone-numbers", "list"],
|
|
9372
10493
|
description: "List all phone numbers owned by an organization",
|
|
@@ -9376,7 +10497,7 @@ var commands2 = [
|
|
|
9376
10497
|
requiresWorkspace: false,
|
|
9377
10498
|
columns: PROVIDER_PHONE_COLUMNS,
|
|
9378
10499
|
handler: async (hctx) => {
|
|
9379
|
-
const orgUuid =
|
|
10500
|
+
const orgUuid = requireOrgRef(hctx.args);
|
|
9380
10501
|
const result2 = await getOrgApi(hctx).listPhoneNumbers(orgUuid);
|
|
9381
10502
|
outputData(result2, hctx.ctx, PROVIDER_PHONE_COLUMNS);
|
|
9382
10503
|
}
|
|
@@ -9399,7 +10520,7 @@ var commands2 = [
|
|
|
9399
10520
|
requiresWorkspace: false,
|
|
9400
10521
|
columns: AVAILABLE_PHONE_COLUMNS,
|
|
9401
10522
|
handler: async (hctx) => {
|
|
9402
|
-
const orgUuid =
|
|
10523
|
+
const orgUuid = requireOrgRef(hctx.args);
|
|
9403
10524
|
const result2 = await getOrgApi(hctx).searchPhoneNumbers(orgUuid, {
|
|
9404
10525
|
country: hctx.args.country ?? "US",
|
|
9405
10526
|
numberType: hctx.args["number-type"] ?? "local",
|
|
@@ -9435,7 +10556,7 @@ var commands2 = [
|
|
|
9435
10556
|
requiresWorkspace: false,
|
|
9436
10557
|
columns: PROVIDER_PHONE_COLUMNS,
|
|
9437
10558
|
handler: async (hctx) => {
|
|
9438
|
-
const orgUuid =
|
|
10559
|
+
const orgUuid = requireOrgRef(hctx.args);
|
|
9439
10560
|
const phoneNumber = hctx.args["phone-number"];
|
|
9440
10561
|
if (!phoneNumber) throw new CLIError("Missing required argument: --phone-number");
|
|
9441
10562
|
const numberType = hctx.args["number-type"] ?? "local";
|
|
@@ -9464,7 +10585,7 @@ var commands2 = [
|
|
|
9464
10585
|
requiresWorkspace: false,
|
|
9465
10586
|
columns: PROVIDER_PHONE_COLUMNS,
|
|
9466
10587
|
handler: async (hctx) => {
|
|
9467
|
-
const orgUuid =
|
|
10588
|
+
const orgUuid = requireOrgRef(hctx.args);
|
|
9468
10589
|
const providerPhoneUuid = hctx.args["provider-phone-uuid"];
|
|
9469
10590
|
const workspaceUuid = hctx.args["workspace-uuid"];
|
|
9470
10591
|
if (!providerPhoneUuid)
|
|
@@ -9496,7 +10617,7 @@ Create a workspace phone linked to this provider number (sets Twilio webhooks):
|
|
|
9496
10617
|
requiresWorkspace: false,
|
|
9497
10618
|
columns: PROVIDER_PHONE_COLUMNS,
|
|
9498
10619
|
handler: async (hctx) => {
|
|
9499
|
-
const orgUuid =
|
|
10620
|
+
const orgUuid = requireOrgRef(hctx.args);
|
|
9500
10621
|
const providerPhoneUuid = hctx.args["provider-phone-uuid"];
|
|
9501
10622
|
const newWorkspaceUuid = hctx.args["new-workspace-uuid"];
|
|
9502
10623
|
if (!providerPhoneUuid)
|
|
@@ -9522,7 +10643,7 @@ Create a workspace phone linked to this provider number (sets Twilio webhooks):
|
|
|
9522
10643
|
requiresWorkspace: false,
|
|
9523
10644
|
columns: PROVIDER_PHONE_COLUMNS,
|
|
9524
10645
|
handler: async (hctx) => {
|
|
9525
|
-
const orgUuid =
|
|
10646
|
+
const orgUuid = requireOrgRef(hctx.args);
|
|
9526
10647
|
const providerPhoneUuid = hctx.args["provider-phone-uuid"];
|
|
9527
10648
|
if (!providerPhoneUuid)
|
|
9528
10649
|
throw new CLIError("Missing required argument: --provider-phone-uuid");
|
|
@@ -9540,7 +10661,7 @@ Create a workspace phone linked to this provider number (sets Twilio webhooks):
|
|
|
9540
10661
|
],
|
|
9541
10662
|
requiresWorkspace: false,
|
|
9542
10663
|
handler: async (hctx) => {
|
|
9543
|
-
const orgUuid =
|
|
10664
|
+
const orgUuid = requireOrgRef(hctx.args);
|
|
9544
10665
|
const providerPhoneUuid = hctx.args["provider-phone-uuid"];
|
|
9545
10666
|
if (!providerPhoneUuid)
|
|
9546
10667
|
throw new CLIError("Missing required argument: --provider-phone-uuid");
|
|
@@ -9552,7 +10673,7 @@ Create a workspace phone linked to this provider number (sets Twilio webhooks):
|
|
|
9552
10673
|
var orgPhoneNumbersDomain = {
|
|
9553
10674
|
name: "org",
|
|
9554
10675
|
description: "Organization management",
|
|
9555
|
-
commands:
|
|
10676
|
+
commands: commands3
|
|
9556
10677
|
};
|
|
9557
10678
|
|
|
9558
10679
|
// src/lib/phone-numbers/defaults.ts
|
|
@@ -10154,7 +11275,7 @@ async function findOutboundPhoneUsers(client, workspace, phone) {
|
|
|
10154
11275
|
}
|
|
10155
11276
|
|
|
10156
11277
|
// ../../node_modules/libphonenumber-js/metadata.min.json.js
|
|
10157
|
-
var metadata_min_json_default = { "version": 4, "country_calling_codes": { "1": ["US", "AG", "AI", "AS", "BB", "BM", "BS", "CA", "DM", "DO", "GD", "GU", "JM", "KN", "KY", "LC", "MP", "MS", "PR", "SX", "TC", "TT", "VC", "VG", "VI"], "7": ["RU", "KZ"], "20": ["EG"], "27": ["ZA"], "30": ["GR"], "31": ["NL"], "32": ["BE"], "33": ["FR"], "34": ["ES"], "36": ["HU"], "39": ["IT", "VA"], "40": ["RO"], "41": ["CH"], "43": ["AT"], "44": ["GB", "GG", "IM", "JE"], "45": ["DK"], "46": ["SE"], "47": ["NO", "SJ"], "48": ["PL"], "49": ["DE"], "51": ["PE"], "52": ["MX"], "53": ["CU"], "54": ["AR"], "55": ["BR"], "56": ["CL"], "57": ["CO"], "58": ["VE"], "60": ["MY"], "61": ["AU", "CC", "CX"], "62": ["ID"], "63": ["PH"], "64": ["NZ"], "65": ["SG"], "66": ["TH"], "81": ["JP"], "82": ["KR"], "84": ["VN"], "86": ["CN"], "90": ["TR"], "91": ["IN"], "92": ["PK"], "93": ["AF"], "94": ["LK"], "95": ["MM"], "98": ["IR"], "211": ["SS"], "212": ["MA", "EH"], "213": ["DZ"], "216": ["TN"], "218": ["LY"], "220": ["GM"], "221": ["SN"], "222": ["MR"], "223": ["ML"], "224": ["GN"], "225": ["CI"], "226": ["BF"], "227": ["NE"], "228": ["TG"], "229": ["BJ"], "230": ["MU"], "231": ["LR"], "232": ["SL"], "233": ["GH"], "234": ["NG"], "235": ["TD"], "236": ["CF"], "237": ["CM"], "238": ["CV"], "239": ["ST"], "240": ["GQ"], "241": ["GA"], "242": ["CG"], "243": ["CD"], "244": ["AO"], "245": ["GW"], "246": ["IO"], "247": ["AC"], "248": ["SC"], "249": ["SD"], "250": ["RW"], "251": ["ET"], "252": ["SO"], "253": ["DJ"], "254": ["KE"], "255": ["TZ"], "256": ["UG"], "257": ["BI"], "258": ["MZ"], "260": ["ZM"], "261": ["MG"], "262": ["RE", "YT"], "263": ["ZW"], "264": ["NA"], "265": ["MW"], "266": ["LS"], "267": ["BW"], "268": ["SZ"], "269": ["KM"], "290": ["SH", "TA"], "291": ["ER"], "297": ["AW"], "298": ["FO"], "299": ["GL"], "350": ["GI"], "351": ["PT"], "352": ["LU"], "353": ["IE"], "354": ["IS"], "355": ["AL"], "356": ["MT"], "357": ["CY"], "358": ["FI", "AX"], "359": ["BG"], "370": ["LT"], "371": ["LV"], "372": ["EE"], "373": ["MD"], "374": ["AM"], "375": ["BY"], "376": ["AD"], "377": ["MC"], "378": ["SM"], "380": ["UA"], "381": ["RS"], "382": ["ME"], "383": ["XK"], "385": ["HR"], "386": ["SI"], "387": ["BA"], "389": ["MK"], "420": ["CZ"], "421": ["SK"], "423": ["LI"], "500": ["FK"], "501": ["BZ"], "502": ["GT"], "503": ["SV"], "504": ["HN"], "505": ["NI"], "506": ["CR"], "507": ["PA"], "508": ["PM"], "509": ["HT"], "590": ["GP", "BL", "MF"], "591": ["BO"], "592": ["GY"], "593": ["EC"], "594": ["GF"], "595": ["PY"], "596": ["MQ"], "597": ["SR"], "598": ["UY"], "599": ["CW", "BQ"], "670": ["TL"], "672": ["NF"], "673": ["BN"], "674": ["NR"], "675": ["PG"], "676": ["TO"], "677": ["SB"], "678": ["VU"], "679": ["FJ"], "680": ["PW"], "681": ["WF"], "682": ["CK"], "683": ["NU"], "685": ["WS"], "686": ["KI"], "687": ["NC"], "688": ["TV"], "689": ["PF"], "690": ["TK"], "691": ["FM"], "692": ["MH"], "850": ["KP"], "852": ["HK"], "853": ["MO"], "855": ["KH"], "856": ["LA"], "880": ["BD"], "886": ["TW"], "960": ["MV"], "961": ["LB"], "962": ["JO"], "963": ["SY"], "964": ["IQ"], "965": ["KW"], "966": ["SA"], "967": ["YE"], "968": ["OM"], "970": ["PS"], "971": ["AE"], "972": ["IL"], "973": ["BH"], "974": ["QA"], "975": ["BT"], "976": ["MN"], "977": ["NP"], "992": ["TJ"], "993": ["TM"], "994": ["AZ"], "995": ["GE"], "996": ["KG"], "998": ["UZ"] }, "countries": { "AC": ["247", "00", "(?:[01589]\\d|[2-467])\\d{4}", [5, 6]], "AD": ["376", "00", "(?:1|6\\d)\\d{7}|[135-9]\\d{5}", [6, 8, 9], [["(\\d{3})(\\d{3})", "$1 $2", ["[135-9]"]], ["(\\d{4})(\\d{4})", "$1 $2", ["1"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["6"]]]], "AE": ["971", "00", "(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}", [5, 6, 7, 8, 9, 10, 11, 12], [["(\\d{3})(\\d{2,9})", "$1 $2", ["60|8"]], ["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["[236]|[479][2-8]"], "0$1"], ["(\\d{3})(\\d)(\\d{5})", "$1 $2 $3", ["[479]"]], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["5"], "0$1"]], "0"], "AF": ["93", "00", "[2-7]\\d{8}", [9], [["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2-7]"], "0$1"]], "0"], "AG": ["1", "011", "(?:268|[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([457]\\d{6})$|1", "268$1", 0, "268"], "AI": ["1", "011", "(?:264|[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([2457]\\d{6})$|1", "264$1", 0, "264"], "AL": ["355", "00", "(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}", [6, 7, 8, 9], [["(\\d{3})(\\d{3,4})", "$1 $2", ["80|9"], "0$1"], ["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["4[2-6]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2358][2-5]|4"], "0$1"], ["(\\d{3})(\\d{5})", "$1 $2", ["[23578]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["6"], "0$1"]], "0"], "AM": ["374", "00", "(?:[1-489]\\d|55|60|77)\\d{6}", [8], [["(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["[89]0"], "0 $1"], ["(\\d{3})(\\d{5})", "$1 $2", ["2|3[12]"], "(0$1)"], ["(\\d{2})(\\d{6})", "$1 $2", ["1|47"], "(0$1)"], ["(\\d{2})(\\d{6})", "$1 $2", ["[3-9]"], "0$1"]], "0"], "AO": ["244", "00", "[29]\\d{8}", [9], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[29]"]]]], "AR": ["54", "00", "(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}", [10, 11], [["(\\d{4})(\\d{2})(\\d{4})", "$1 $2-$3", ["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])", "2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)", "2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]", "2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"], "0$1", 1], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2-$3", ["1"], "0$1", 1], ["(\\d{3})(\\d{3})(\\d{4})", "$1-$2-$3", ["[68]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2-$3", ["[23]"], "0$1", 1], ["(\\d)(\\d{4})(\\d{2})(\\d{4})", "$2 15-$3-$4", ["9(?:2[2-469]|3[3-578])", "9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))", "9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)", "9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]", "9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"], "0$1", 0, "$1 $2 $3-$4"], ["(\\d)(\\d{2})(\\d{4})(\\d{4})", "$2 15-$3-$4", ["91"], "0$1", 0, "$1 $2 $3-$4"], ["(\\d{3})(\\d{3})(\\d{5})", "$1-$2-$3", ["8"], "0$1"], ["(\\d)(\\d{3})(\\d{3})(\\d{4})", "$2 15-$3-$4", ["9"], "0$1", 0, "$1 $2 $3-$4"]], "0", 0, "0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?", "9$1"], "AS": ["1", "011", "(?:[58]\\d\\d|684|900)\\d{7}", [10], 0, "1", 0, "([267]\\d{6})$|1", "684$1", 0, "684"], "AT": ["43", "00", "1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}", [4, 5, 6, 7, 8, 9, 10, 11, 12, 13], [["(\\d)(\\d{3,12})", "$1 $2", ["1(?:11|[2-9])"], "0$1"], ["(\\d{3})(\\d{2})", "$1 $2", ["517"], "0$1"], ["(\\d{2})(\\d{3,5})", "$1 $2", ["5[079]"], "0$1"], ["(\\d{3})(\\d{3,10})", "$1 $2", ["(?:31|4)6|51|6(?:48|5[0-3579]|[6-9])|7(?:20|32|8)|[89]", "(?:31|4)6|51|6(?:485|5[0-3579]|[6-9])|7(?:20|32|8)|[89]"], "0$1"], ["(\\d{4})(\\d{3,9})", "$1 $2", ["[2-467]|5[2-6]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["5"], "0$1"], ["(\\d{2})(\\d{4})(\\d{4,7})", "$1 $2 $3", ["5"], "0$1"]], "0"], "AU": ["61", "001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011", "1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}", [5, 6, 7, 8, 9, 10, 12], [["(\\d{2})(\\d{3,4})", "$1 $2", ["16"], "0$1"], ["(\\d{2})(\\d{3})(\\d{2,4})", "$1 $2 $3", ["16"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["14|4"], "0$1"], ["(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["[2378]"], "(0$1)"], ["(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1(?:30|[89])"]]], "0", 0, "(183[12])|0", 0, 0, 0, [["(?:(?:241|349)0\\d\\d|8(?:51(?:0(?:0[03-9]|[12479]\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\d|7[89]|9[0-4])|[34]\\d\\d)|91(?:(?:[0-58]\\d|6[0135-9])\\d|7(?:0[0-24-9]|[1-9]\\d)|9(?:[0-46-9]\\d|5[0-79]))))\\d{3}|(?:2(?:[0-26-9]\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\d|2[0-8])|8(?:55|6[0-8]|[78]\\d|9[02-9]))\\d{6}", [9]], ["4(?:79[01]|83[0-36-9]|95[0-3])\\d{5}|4(?:[0-36]\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\d{6}", [9]], ["180(?:0\\d{3}|2)\\d{3}", [7, 10]], ["190[0-26]\\d{6}", [10]], 0, 0, 0, ["163\\d{2,6}", [5, 6, 7, 8, 9]], ["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}", [9]], ["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}", [6, 8, 10, 12]]], "0011"], "AW": ["297", "00", "(?:[25-79]\\d\\d|800)\\d{4}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["[25-9]"]]]], "AX": ["358", "00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))", "2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}", [5, 6, 7, 8, 9, 10, 11, 12], 0, "0", 0, 0, 0, 0, "18", 0, "00"], "AZ": ["994", "00", "365\\d{6}|(?:[124579]\\d|60|88)\\d{7}", [9], [["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["90"], "0$1"], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["1[28]|2|365|46", "1[28]|2|365[45]|46", "1[28]|2|365(?:4|5[02])|46"], "(0$1)"], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[13-9]"], "0$1"]], "0"], "BA": ["387", "00", "6\\d{8}|(?:[35689]\\d|49|70)\\d{6}", [8, 9], [["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["6[1-3]|[7-9]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2-$3", ["[3-5]|6[56]"], "0$1"], ["(\\d{2})(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["6"], "0$1"]], "0"], "BB": ["1", "011", "(?:246|[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([2-9]\\d{6})$|1", "246$1", 0, "246"], "BD": ["880", "00", "[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}", [6, 7, 8, 9, 10], [["(\\d{2})(\\d{4,6})", "$1-$2", ["31[5-8]|[459]1"], "0$1"], ["(\\d{3})(\\d{3,7})", "$1-$2", ["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:[15]|28|4[14])|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"], "0$1"], ["(\\d{4})(\\d{3,6})", "$1-$2", ["[13-9]|2[23]"], "0$1"], ["(\\d)(\\d{7,8})", "$1-$2", ["2"], "0$1"]], "0"], "BE": ["32", "00", "4\\d{8}|[1-9]\\d{7}", [8, 9], [["(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["(?:80|9)0"], "0$1"], ["(\\d)(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[239]|4[23]"], "0$1"], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[15-8]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["4"], "0$1"]], "0"], "BF": ["226", "00", "[024-7]\\d{7}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[024-7]"]]]], "BG": ["359", "00", "00800\\d{7}|[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}", [6, 7, 8, 9, 12], [["(\\d)(\\d)(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["2"], "0$1"], ["(\\d{3})(\\d{4})", "$1 $2", ["43[1-6]|70[1-9]"], "0$1"], ["(\\d)(\\d{3})(\\d{3,4})", "$1 $2 $3", ["2"], "0$1"], ["(\\d{2})(\\d{3})(\\d{2,3})", "$1 $2 $3", ["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["(?:70|8)0"], "0$1"], ["(\\d{3})(\\d{3})(\\d{2})", "$1 $2 $3", ["43[1-7]|7"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[48]|9[08]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["9"], "0$1"]], "0"], "BH": ["973", "00", "[136-9]\\d{7}", [8], [["(\\d{4})(\\d{4})", "$1 $2", ["[13679]|8[02-4679]"]]]], "BI": ["257", "00", "(?:[267]\\d|31)\\d{6}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2367]"]]]], "BJ": ["229", "00", "(?:01\\d|8)\\d{7}", [8, 10], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["0"]]]], "BL": ["590", "00", "7090\\d{5}|(?:[56]9|[89]\\d)\\d{7}", [9], 0, "0", 0, 0, 0, 0, 0, [["(?:59(?:0(?:2[7-9]|3[3-7]|5[12]|87)|87\\d)|80[6-9]\\d\\d)\\d{4}"], ["(?:69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))|7090[0-4])\\d{4}"], ["80[0-5]\\d{6}"], ["8[129]\\d{7}"], 0, 0, 0, 0, ["9(?:(?:39[5-7]|76[018])\\d|475[0-6])\\d{4}"]]], "BM": ["1", "011", "(?:441|[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([2-9]\\d{6})$|1", "441$1", 0, "441"], "BN": ["673", "00", "[2-578]\\d{6}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["[2-578]"]]]], "BO": ["591", "00(?:1\\d)?", "(?:[2-7]\\d\\d|8001)\\d{5}", [8, 9], [["(\\d)(\\d{7})", "$1 $2", ["[23]|4[46]|50"]], ["(\\d{8})", "$1", ["[5-7]"]], ["(\\d{3})(\\d{2})(\\d{4})", "$1 $2 $3", ["8"]]], "0", 0, "0(1\\d)?"], "BQ": ["599", "00", "(?:[34]1|7\\d)\\d{5}", [7], 0, 0, 0, 0, 0, 0, "[347]"], "BR": ["55", "00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)", "[1-467]\\d{9,10}|55[0-46-9]\\d{8}|[34]\\d{7}|55\\d{7,8}|(?:5[0-46-9]|[89]\\d)\\d{7,9}", [8, 9, 10, 11], [["(\\d{4})(\\d{4})", "$1-$2", ["300|4(?:0[02]|37|86)", "300|4(?:0(?:0|20)|370|864)"]], ["(\\d{3})(\\d{2,3})(\\d{4})", "$1 $2 $3", ["(?:[358]|90)0"], "0$1"], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2-$3", ["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"], "($1)"], ["(\\d{2})(\\d{5})(\\d{4})", "$1 $2-$3", ["[16][1-9]|[2-57-9]"], "($1)"]], "0", 0, "(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?", "$2"], "BS": ["1", "011", "(?:242|[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([3-8]\\d{6})$|1", "242$1", 0, "242"], "BT": ["975", "00", "[178]\\d{7}|[2-8]\\d{6}", [7, 8], [["(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["[2-6]|7[246]|8[2-4]"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["1[67]|[78]"]]]], "BW": ["267", "00", "(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}", [7, 8, 10], [["(\\d{2})(\\d{5})", "$1 $2", ["90"]], ["(\\d{3})(\\d{4})", "$1 $2", ["[24-6]|3[15-9]"]], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[37]"]], ["(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["0"]], ["(\\d{3})(\\d{4})(\\d{3})", "$1 $2 $3", ["8"]]]], "BY": ["375", "810", "(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}", [6, 7, 8, 9, 10, 11], [["(\\d{3})(\\d{3})", "$1 $2", ["800"], "8 $1"], ["(\\d{3})(\\d{2})(\\d{2,4})", "$1 $2 $3", ["800"], "8 $1"], ["(\\d{4})(\\d{2})(\\d{3})", "$1 $2-$3", ["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])", "1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"], "8 0$1"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2-$3-$4", ["1(?:[56]|7[467])|2[1-3]"], "8 0$1"], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2-$3-$4", ["[1-4]"], "8 0$1"], ["(\\d{3})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["[89]"], "8 $1"]], "8", 0, "0|80?", 0, 0, 0, 0, "8~10"], "BZ": ["501", "00", "(?:0800\\d|[2-8])\\d{6}", [7, 11], [["(\\d{3})(\\d{4})", "$1-$2", ["[2-8]"]], ["(\\d)(\\d{3})(\\d{4})(\\d{3})", "$1-$2-$3-$4", ["0"]]]], "CA": ["1", "011", "[2-9]\\d{9}|3\\d{6}", [7, 10], 0, "1", 0, 0, 0, 0, 0, [["(?:2(?:04|[23]6|[48]9|5[07]|63)|3(?:06|43|54|6[578]|82)|4(?:03|1[68]|[26]8|3[178]|50|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|[18]3|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|7[39])|9(?:0[25]|42))[2-9]\\d{6}", [10]], ["", [10]], ["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", [10]], ["900[2-9]\\d{6}", [10]], ["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|(?:5(?:2[125-9]|3[23]|44|66|77|88)|6(?:22|33))[2-9]\\d{6}", [10]], 0, ["310\\d{4}", [7]], 0, ["600[2-9]\\d{6}", [10]]]], "CC": ["61", "001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011", "1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}", [6, 7, 8, 9, 10, 12], 0, "0", 0, "([59]\\d{7})$|0", "8$1", 0, 0, [["8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\d|70[23]|959))\\d{3}", [9]], ["4(?:79[01]|83[0-36-9]|95[0-3])\\d{5}|4(?:[0-36]\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\d{6}", [9]], ["180(?:0\\d{3}|2)\\d{3}", [7, 10]], ["190[0-26]\\d{6}", [10]], 0, 0, 0, 0, ["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}", [9]], ["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}", [6, 8, 10, 12]]], "0011"], "CD": ["243", "00", "(?:(?:[189]|5\\d)\\d|2)\\d{7}|[1-68]\\d{6}", [7, 8, 9, 10], [["(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3", ["88"], "0$1"], ["(\\d{2})(\\d{5})", "$1 $2", ["[1-6]"], "0$1"], ["(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["2"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[89]"], "0$1"], ["(\\d{2})(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["5"], "0$1"]], "0"], "CF": ["236", "00", "8776\\d{4}|(?:[27]\\d|61)\\d{6}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[26-8]"]]]], "CG": ["242", "00", "222\\d{6}|(?:0\\d|80)\\d{7}", [9], [["(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["8"]], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[02]"]]]], "CH": ["41", "00", "8\\d{11}|[2-9]\\d{8}", [9, 12], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8[047]|90"], "0$1"], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-79]|81"], "0$1"], ["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["8"], "0$1"]], "0"], "CI": ["225", "00", "[02]\\d{9}", [10], [["(\\d{2})(\\d{2})(\\d)(\\d{5})", "$1 $2 $3 $4", ["2"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3 $4", ["0"]]]], "CK": ["682", "00", "[2-578]\\d{4}", [5], [["(\\d{2})(\\d{3})", "$1 $2", ["[2-578]"]]]], "CL": ["56", "(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0", "12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}", [9, 10, 11], [["(\\d{5})(\\d{4})", "$1 $2", ["219", "2196"], "($1)"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["60|809"]], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["44"]], ["(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["2[1-36]"], "($1)"], ["(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["9(?:10|[2-9])"]], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-8]|[1-9])"], "($1)"], ["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["60|8"]], ["(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"]], ["(\\d{3})(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["60"]]]], "CM": ["237", "00", "[26]\\d{8}|88\\d{6,7}", [8, 9], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["88"]], ["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["[26]|88"]]]], "CN": ["86", "00|1(?:[12]\\d|79)\\d\\d00", "(?:(?:1[03-689]|2\\d)\\d\\d|6)\\d{8}|1\\d{10}|[126]\\d{6}(?:\\d(?:\\d{2})?)?|86\\d{5,6}|(?:[3-579]\\d|8[0-57-9])\\d{5,9}", [7, 8, 9, 10, 11, 12], [["(\\d{2})(\\d{5,6})", "$1 $2", ["(?:10|2[0-57-9])[19]|3(?:[157]|35|49|9[1-68])|4(?:1[124-9]|2[179]|6[47-9]|7|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:07|1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3|4[13]|5[1-5]|7[0-79]|9[0-35-9])|(?:4[35]|59|85)[1-9]", "(?:10|2[0-57-9])(?:1[02]|9[56])|8078|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))1", "10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|80781|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))12", "10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|807812|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123", "10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123"], "0$1"], ["(\\d{3})(\\d{5,6})", "$1 $2", ["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]", "(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]", "85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])", "85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["(?:4|80)0"]], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["10|2(?:[02-57-9]|1[1-9])", "10|2(?:[02-57-9]|1[1-9])", "10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"], "0$1", 1], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"], "0$1", 1], ["(\\d{3})(\\d{7,8})", "$1 $2", ["9"]], ["(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["80"], "0$1", 1], ["(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["[3-578]"], "0$1", 1], ["(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["1[3-9]"]], ["(\\d{2})(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3 $4", ["[12]"], "0$1", 1]], "0", 0, "(1(?:[12]\\d|79)\\d\\d)|0", 0, 0, 0, 0, "00"], "CO": ["57", "00(?:4(?:[14]4|56)|[579])", "(?:46|60\\d\\d)\\d{6}|(?:1\\d|[39])\\d{9}", [8, 10, 11], [["(\\d{4})(\\d{4})", "$1 $2", ["46"]], ["(\\d{3})(\\d{7})", "$1 $2", ["6|90"], "($1)"], ["(\\d{3})(\\d{7})", "$1 $2", ["3[0-357]|9[14]"]], ["(\\d)(\\d{3})(\\d{7})", "$1-$2-$3", ["1"], "0$1", 0, "$1 $2 $3"]], "0", 0, "0([3579]|4(?:[14]4|56))?"], "CR": ["506", "00", "(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}", [8, 10], [["(\\d{4})(\\d{4})", "$1 $2", ["[2-7]|8[3-9]"]], ["(\\d{3})(\\d{3})(\\d{4})", "$1-$2-$3", ["[89]"]]], 0, 0, "(19(?:0[0-2468]|1[09]|20|66|77|99))"], "CU": ["53", "119", "(?:[2-7]|8\\d\\d)\\d{7}|[2-47]\\d{6}|[34]\\d{5}", [6, 7, 8, 10], [["(\\d{2})(\\d{4,6})", "$1 $2", ["2[1-4]|[34]"], "(0$1)"], ["(\\d)(\\d{6,7})", "$1 $2", ["7"], "(0$1)"], ["(\\d)(\\d{7})", "$1 $2", ["[56]"], "0$1"], ["(\\d{3})(\\d{7})", "$1 $2", ["8"], "0$1"]], "0"], "CV": ["238", "0", "(?:[2-59]\\d\\d|800)\\d{4}", [7], [["(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3", ["[2-589]"]]]], "CW": ["599", "00", "(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}", [7, 8], [["(\\d{3})(\\d{4})", "$1 $2", ["[3467]"]], ["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["9[4-8]"]]], 0, 0, 0, 0, 0, "[69]"], "CX": ["61", "001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011", "1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}", [6, 7, 8, 9, 10, 12], 0, "0", 0, "([59]\\d{7})$|0", "8$1", 0, 0, [["8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\d|7(?:0[01]|1[0-2])|958))\\d{3}", [9]], ["4(?:79[01]|83[0-36-9]|95[0-3])\\d{5}|4(?:[0-36]\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\d{6}", [9]], ["180(?:0\\d{3}|2)\\d{3}", [7, 10]], ["190[0-26]\\d{6}", [10]], 0, 0, 0, 0, ["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}", [9]], ["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}", [6, 8, 10, 12]]], "0011"], "CY": ["357", "00", "(?:[279]\\d|[58]0)\\d{6}", [8], [["(\\d{2})(\\d{6})", "$1 $2", ["[257-9]"]]]], "CZ": ["420", "00", "(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}", [9, 10, 11, 12], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2-8]|9[015-7]"]], ["(\\d{2})(\\d{3})(\\d{3})(\\d{2})", "$1 $2 $3 $4", ["96"]], ["(\\d{2})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["9"]], ["(\\d{3})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["9"]]]], "DE": ["49", "00", "[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[015]\\d|2[13]|31|[46][1-8])\\d{1,9}", [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [["(\\d{2})(\\d{3,13})", "$1 $2", ["3[02]|40|[68]9"], "0$1"], ["(\\d{3})(\\d{3,12})", "$1 $2", ["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1", "2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"], "0$1"], ["(\\d{4})(\\d{2,11})", "$1 $2", ["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]", "[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"], "0$1"], ["(\\d{3})(\\d{4})", "$1 $2", ["138"], "0$1"], ["(\\d{5})(\\d{2,10})", "$1 $2", ["3"], "0$1"], ["(\\d{3})(\\d{5,11})", "$1 $2", ["181"], "0$1"], ["(\\d{3})(\\d)(\\d{4,10})", "$1 $2 $3", ["1(?:3|80)|9"], "0$1"], ["(\\d{3})(\\d{7,8})", "$1 $2", ["1[67]"], "0$1"], ["(\\d{3})(\\d{7,12})", "$1 $2", ["8"], "0$1"], ["(\\d{5})(\\d{6})", "$1 $2", ["185", "1850", "18500"], "0$1"], ["(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["7"], "0$1"], ["(\\d{4})(\\d{7})", "$1 $2", ["18[68]"], "0$1"], ["(\\d{4})(\\d{7})", "$1 $2", ["15[1279]"], "0$1"], ["(\\d{5})(\\d{6})", "$1 $2", ["15[03568]", "15(?:[0568]|3[13])"], "0$1"], ["(\\d{3})(\\d{8})", "$1 $2", ["18"], "0$1"], ["(\\d{3})(\\d{2})(\\d{7,8})", "$1 $2 $3", ["1(?:6[023]|7)"], "0$1"], ["(\\d{4})(\\d{2})(\\d{7})", "$1 $2 $3", ["15[279]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{8})", "$1 $2 $3", ["15"], "0$1"]], "0"], "DJ": ["253", "00", "(?:2\\d|77)\\d{6}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[27]"]]]], "DK": ["45", "00", "[2-9]\\d{7}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-9]"]]]], "DM": ["1", "011", "(?:[58]\\d\\d|767|900)\\d{7}", [10], 0, "1", 0, "([2-7]\\d{6})$|1", "767$1", 0, "767"], "DO": ["1", "011", "(?:[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, 0, 0, 0, "8001|8[024]9"], "DZ": ["213", "00", "(?:[1-4]|[5-79]\\d|80)\\d{7}", [8, 9], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[1-4]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["9"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[5-8]"], "0$1"]], "0"], "EC": ["593", "00", "1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}", [8, 9, 10, 11], [["(\\d)(\\d{3})(\\d{4})", "$1 $2-$3", ["[2-7]"], "(0$1)", 0, "$1-$2-$3"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["9"], "0$1"], ["(\\d{4})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["1"]]], "0"], "EE": ["372", "00", "8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}", [7, 8, 10], [["(\\d{3})(\\d{4})", "$1 $2", ["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88", "[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]], ["(\\d{4})(\\d{3,4})", "$1 $2", ["[45]|8(?:00|[1-49])", "[45]|8(?:00[1-9]|[1-49])"]], ["(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["7"]], ["(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"]]]], "EG": ["20", "00", "[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}", [8, 9, 10], [["(\\d)(\\d{7,8})", "$1 $2", ["[23]"], "0$1"], ["(\\d{2})(\\d{6,7})", "$1 $2", ["1[35]|[4-6]|8[2468]|9[235-7]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[89]"], "0$1"], ["(\\d{2})(\\d{8})", "$1 $2", ["1"], "0$1"]], "0"], "EH": ["212", "00", "[5-8]\\d{8}", [9], 0, "0", 0, 0, 0, 0, 0, [["528[89]\\d{5}"], ["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[016-8]\\d|2[0-8]|5[0-5]))\\d{6}"], ["80[0-7]\\d{6}"], ["89\\d{7}"], 0, 0, 0, 0, ["(?:592(?:4[0-2]|93)|80[89]\\d\\d)\\d{4}"]]], "ER": ["291", "00", "[178]\\d{6}", [7], [["(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["[178]"], "0$1"]], "0"], "ES": ["34", "00", "(?:400|[5-9]\\d\\d)\\d{6}", [9], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[89]00"]], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[4-9]"]]]], "ET": ["251", "00", "(?:11|[2-57-9]\\d)\\d{7}", [9], [["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[1-57-9]"], "0$1"]], "0"], "FI": ["358", "00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))", "[1-35689]\\d{4}|7\\d{10,11}|(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}", [5, 6, 7, 8, 9, 10, 11, 12], [["(\\d{5})", "$1", ["20[2-59]"], "0$1"], ["(\\d{3})(\\d{3,7})", "$1 $2", ["(?:[1-3]0|[68])0|70[07-9]"], "0$1"], ["(\\d{2})(\\d{4,8})", "$1 $2", ["[14]|2[09]|50|7[135]"], "0$1"], ["(\\d{2})(\\d{6,10})", "$1 $2", ["7"], "0$1"], ["(\\d)(\\d{4,9})", "$1 $2", ["(?:19|[2568])[1-8]|3(?:0[1-9]|[1-9])|9"], "0$1"]], "0", 0, 0, 0, 0, "1[03-79]|[2-9]", 0, "00"], "FJ": ["679", "0(?:0|52)", "45\\d{5}|(?:0800\\d|[235-9])\\d{6}", [7, 11], [["(\\d{3})(\\d{4})", "$1 $2", ["[235-9]|45"]], ["(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["0"]]], 0, 0, 0, 0, 0, 0, 0, "00"], "FK": ["500", "00", "[2-7]\\d{4}", [5]], "FM": ["691", "00", "(?:[39]\\d\\d|820)\\d{4}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["[389]"]]]], "FO": ["298", "00", "[2-9]\\d{5}", [6], [["(\\d{6})", "$1", ["[2-9]"]]], 0, 0, "(10(?:01|[12]0|88))"], "FR": ["33", "00", "[1-9]\\d{8}", [9], [["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"], "0 $1"], ["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["[1-79]"], "0$1"]], "0"], "GA": ["241", "00", "(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}", [7, 8], [["(\\d)(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-7]"], "0$1"], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["0"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["11|[67]"], "0$1"]], 0, 0, "0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[467]\\d{6})", "$1"], "GB": ["44", "00", "[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}", [7, 9, 10], [["(\\d{3})(\\d{4})", "$1 $2", ["800", "8001", "80011", "800111", "8001111"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3", ["845", "8454", "84546", "845464"], "0$1"], ["(\\d{3})(\\d{6})", "$1 $2", ["800"], "0$1"], ["(\\d{5})(\\d{4,5})", "$1 $2", ["1(?:38|5[23]|69|76|94)", "1(?:(?:38|69)7|5(?:24|39)|768|946)", "1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"], "0$1"], ["(\\d{4})(\\d{5,6})", "$1 $2", ["1(?:[2-69][02-9]|[78])"], "0$1"], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["[25]|7(?:0|6[02-9])", "[25]|7(?:0|6(?:[03-9]|2[356]))"], "0$1"], ["(\\d{4})(\\d{6})", "$1 $2", ["7"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[1389]"], "0$1"]], "0", 0, "0|180020", 0, 0, 0, [["(?:1(?:1(?:3(?:[0-58]\\d\\d|73[0-5])|4(?:(?:[0-5]\\d|70)\\d|69[7-9])|(?:(?:5[0-26-9]|[78][0-49])\\d|6(?:[0-4]\\d|5[01]))\\d)|(?:2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\d)\\d|1(?:[0-7]\\d|8[0-3]))|(?:3(?:0\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\d)\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\d{3})\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\d)|76\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[5-7]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d{3}", [9, 10]], ["7(?:457[0-57-9]|700[01]|911[028])\\d{5}|7(?:[1-3]\\d\\d|4(?:[0-46-9]\\d|5[0-689])|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[024-9]\\d|1[02-9]|3[0-689]))\\d{6}", [10]], ["80[08]\\d{7}|800\\d{6}|8001111"], ["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[2-49]))\\d{7}|845464\\d", [7, 10]], ["70\\d{8}", [10]], 0, ["(?:3[0347]|55)\\d{8}", [10]], ["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}", [10]], ["56\\d{8}", [10]]], 0, " x"], "GD": ["1", "011", "(?:473|[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([2-9]\\d{6})$|1", "473$1", 0, "473"], "GE": ["995", "00", "(?:[3-57]\\d\\d|800)\\d{6}", [9], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["70"], "0$1"], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["32"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["5(?:[0-46-9]|5[0-57-9])|7", "5(?:[0-46-9]|5(?:[0-357-9]|44))|7"]], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[3-58]"], "0$1"]], "0"], "GF": ["594", "00", "(?:694\\d|7093)\\d{5}|(?:59|[89]\\d)\\d{7}", [9], [["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[5-7]|80[6-9]|9[47]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[89]"], "0$1"]], "0"], "GG": ["44", "00", "(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?", [7, 9, 10], 0, "0", 0, "([25-9]\\d{5})$|0|180020", "1481$1", 0, 0, [["1481[25-9]\\d{5}", [10]], ["7(?:(?:781|839)\\d|911[17])\\d{5}", [10]], ["80[08]\\d{7}|800\\d{6}|8001111"], ["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[0-3]))\\d{7}|845464\\d", [7, 10]], ["70\\d{8}", [10]], 0, ["(?:3[0347]|55)\\d{8}", [10]], ["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}", [10]], ["56\\d{8}", [10]]]], "GH": ["233", "00", "[235]\\d{8}|800\\d{5,6}", [8, 9], [["(\\d{3})(\\d{5})", "$1 $2", ["8"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2358]"], "0$1"]], "0"], "GI": ["350", "00", "(?:[25]\\d|60)\\d{6}", [8], [["(\\d{3})(\\d{5})", "$1 $2", ["2"]]]], "GL": ["299", "00", "(?:19|[2-689]\\d|70)\\d{4}", [6], [["(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["19|[2-9]"]]]], "GM": ["220", "00", "[2-9]\\d{6}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["[2-9]"]]]], "GN": ["224", "00", "722\\d{6}|(?:3|6\\d)\\d{7}", [8, 9], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["3"]], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[67]"]]]], "GP": ["590", "00", "7090\\d{5}|(?:[56]9|[89]\\d)\\d{7}", [9], [["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[5-79]|80[6-9]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"], "0$1"]], "0", 0, 0, 0, 0, 0, [["(?:59(?:0(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1-9]|5[3-579]|[68][0-689]|7[08]|9\\d)|87\\d)|80[6-9]\\d\\d)\\d{4}"], ["(?:69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))|7090[0-4])\\d{4}"], ["80[0-5]\\d{6}"], ["8[129]\\d{7}"], 0, 0, 0, 0, ["9(?:(?:39[5-7]|76[018])\\d|475[0-6])\\d{4}"]]], "GQ": ["240", "00", "222\\d{6}|(?:3\\d|55|[89]0)\\d{7}", [9], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[235]"]], ["(\\d{3})(\\d{6})", "$1 $2", ["[89]"]]]], "GR": ["30", "00", "5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}", [10, 11, 12], [["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["21|7"]], ["(\\d{4})(\\d{6})", "$1 $2", ["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2689]"]], ["(\\d{3})(\\d{3,4})(\\d{5})", "$1 $2 $3", ["8"]]]], "GT": ["502", "00", "80\\d{6}|(?:1\\d{3}|[2-7])\\d{7}", [8, 11], [["(\\d{4})(\\d{4})", "$1 $2", ["[2-8]"]], ["(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"]]]], "GU": ["1", "011", "(?:[58]\\d\\d|671|900)\\d{7}", [10], 0, "1", 0, "([2-9]\\d{6})$|1", "671$1", 0, "671"], "GW": ["245", "00", "[49]\\d{8}|4\\d{6}", [7, 9], [["(\\d{3})(\\d{4})", "$1 $2", ["40"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[49]"]]]], "GY": ["592", "001", "(?:[2-8]\\d{3}|9008)\\d{3}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["[2-9]"]]]], "HK": ["852", "00(?:30|5[09]|[126-9]?)", "8[0-46-9]\\d{6,7}|9\\d{4,7}|(?:[2-7]|9\\d{3})\\d{7}", [5, 6, 7, 8, 9, 11], [["(\\d{3})(\\d{2,5})", "$1 $2", ["900", "9003"]], ["(\\d{4})(\\d{4})", "$1 $2", ["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"]], ["(\\d{3})(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["9"]]], 0, 0, 0, 0, 0, 0, 0, "00"], "HN": ["504", "00", "8\\d{10}|[237-9]\\d{7}", [8, 11], [["(\\d{4})(\\d{4})", "$1-$2", ["[237-9]"]]]], "HR": ["385", "00", "[2-69]\\d{8}|80\\d{5,7}|[1-79]\\d{7}|6\\d{6}", [7, 8, 9], [["(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3", ["6[01]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2,3})", "$1 $2 $3", ["8"], "0$1"], ["(\\d)(\\d{4})(\\d{3})", "$1 $2 $3", ["1"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["6|7[245]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["9"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[2-57]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"], "0$1"]], "0"], "HT": ["509", "00", "[2-589]\\d{7}", [8], [["(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["[2-589]"]]]], "HU": ["36", "00", "[235-7]\\d{8}|[1-9]\\d{7}", [8, 9], [["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["1"], "(06 $1)"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"], "(06 $1)"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[2-9]"], "06 $1"]], "06"], "ID": ["62", "00[89]", "00[1-9]\\d{9,14}|(?:[1-36]|8\\d{5})\\d{6}|00\\d{9}|[1-9]\\d{8,10}|[2-9]\\d{7}", [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], [["(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["15"]], ["(\\d{2})(\\d{5,9})", "$1 $2", ["2[124]|[36]1"], "(0$1)"], ["(\\d{3})(\\d{5,7})", "$1 $2", ["800"], "0$1"], ["(\\d{3})(\\d{5,8})", "$1 $2", ["[2-79]"], "(0$1)"], ["(\\d{3})(\\d{3,4})(\\d{3})", "$1-$2-$3", ["8[1-35-9]"], "0$1"], ["(\\d{3})(\\d{6,8})", "$1 $2", ["1"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["804"], "0$1"], ["(\\d{3})(\\d)(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["80"], "0$1"], ["(\\d{3})(\\d{4})(\\d{4,5})", "$1-$2-$3", ["8"], "0$1"]], "0"], "IE": ["353", "00", "(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}", [7, 8, 9, 10], [["(\\d{2})(\\d{5})", "$1 $2", ["2[24-9]|47|58|6[237-9]|9[35-9]"], "(0$1)"], ["(\\d{3})(\\d{5})", "$1 $2", ["[45]0"], "(0$1)"], ["(\\d)(\\d{3,4})(\\d{4})", "$1 $2 $3", ["1"], "(0$1)"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[2569]|4[1-69]|7[14]"], "(0$1)"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["70"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["81"], "(0$1)"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[78]"], "0$1"], ["(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1"]], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["4"], "(0$1)"], ["(\\d{2})(\\d)(\\d{3})(\\d{4})", "$1 $2 $3 $4", ["8"], "0$1"]], "0"], "IL": ["972", "0(?:0|1[2-9])", "1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}", [7, 8, 9, 10, 11, 12], [["(\\d{4})(\\d{3})", "$1-$2", ["125"]], ["(\\d{4})(\\d{2})(\\d{2})", "$1-$2-$3", ["121"]], ["(\\d)(\\d{3})(\\d{4})", "$1-$2-$3", ["[2-489]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["[57]"], "0$1"], ["(\\d{4})(\\d{3})(\\d{3})", "$1-$2-$3", ["12"]], ["(\\d{4})(\\d{6})", "$1-$2", ["159"]], ["(\\d)(\\d{3})(\\d{3})(\\d{3})", "$1-$2-$3-$4", ["1[7-9]"]], ["(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})", "$1-$2 $3-$4", ["15"]]], "0"], "IM": ["44", "00", "1624\\d{6}|(?:[3578]\\d|90)\\d{8}", [10], 0, "0", 0, "([25-8]\\d{5})$|0|180020", "1624$1", 0, "74576|(?:16|7[56])24"], "IN": ["91", "00", "(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}", [8, 9, 10, 11, 12, 13], [["(\\d{8})", "$1", ["5(?:0|2[23]|3[03]|[67]1|88)", "5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)", "5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"], 0, 1], ["(\\d{4})(\\d{4,5})", "$1 $2", ["180", "1800"], 0, 1], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["140"], 0, 1], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["11|2[02]|33|4[04]|79[1-7]|80[2-46]", "11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])", "11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"], "0$1", 1], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67)[14]", "1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31)|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]", "1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:3171|5[15][2-6]|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|8(?:16|2[014]|3[126]|6[136]|7[78]|83)(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"], "0$1", 1], ["(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|3[129]|5[29]|6[02-5]|70)|807", "1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7(?:[23569]|8[0-57-9])|8[1-6])|7(?:1(?:[013-8]|9[6-9])|3(?:17|2[0-49]|9[2-57])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]", "1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|8(?:28[235-7]|3))|73179|807(?:1|9[1-3])|(?:1552|6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578])\\d|7(?:[23569]\\d|8[0-57-9])|8(?:[14-6]\\d|2[0-79]))|7(?:1(?:[013-8]\\d|9[6-9])|3(?:2[0-49]|9[2-57])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]))[2-7]"], "0$1", 1], ["(\\d{5})(\\d{5})", "$1 $2", ["16|[6-9]"], "0$1", 1], ["(\\d{4})(\\d{2,4})(\\d{4})", "$1 $2 $3", ["18[06]", "18[06]0"], 0, 1], ["(\\d{4})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["18"], 0, 1]], "0"], "IO": ["246", "00", "3\\d{6}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["3"]]]], "IQ": ["964", "00", "(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}", [8, 9, 10], [["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["1"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[2-6]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["7"], "0$1"]], "0"], "IR": ["98", "00", "[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}", [4, 5, 6, 7, 10], [["(\\d{4,5})", "$1", ["96"], "0$1"], ["(\\d{2})(\\d{4,5})", "$1 $2", ["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["9"], "0$1"], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["[1-8]"], "0$1"]], "0"], "IS": ["354", "00|1(?:0(?:01|[12]0)|100)", "(?:38\\d|[4-9])\\d{6}", [7, 9], [["(\\d{3})(\\d{4})", "$1 $2", ["[4-9]"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["3"]]], 0, 0, 0, 0, 0, 0, 0, "00"], "IT": ["39", "00", "0\\d{5,11}|1\\d{8,10}|3(?:[0-8]\\d{7,10}|9\\d{7,8})|(?:43|55|70)\\d{8}|8\\d{5}(?:\\d{2,4})?", [6, 7, 8, 9, 10, 11, 12], [["(\\d{2})(\\d{4,6})", "$1 $2", ["0[26]"]], ["(\\d{3})(\\d{3,6})", "$1 $2", ["0[13-57-9][0159]|8(?:03|4[17]|9[2-5])", "0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))"]], ["(\\d{4})(\\d{2,6})", "$1 $2", ["0(?:[13-579][2-46-8]|8[236-8])"]], ["(\\d{4})(\\d{4})", "$1 $2", ["894"]], ["(\\d{2})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["0[26]|5"]], ["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["1(?:44|[679])|[378]|43"]], ["(\\d{3})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["0[13-57-9][0159]|14"]], ["(\\d{2})(\\d{4})(\\d{5})", "$1 $2 $3", ["0[26]"]], ["(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["0"]], ["(\\d{3})(\\d{4})(\\d{4,5})", "$1 $2 $3", ["[03]"]]], 0, 0, 0, 0, 0, 0, [["0(?:669[0-79]\\d{1,6}|831\\d{2,8})|0(?:1(?:[0159]\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\d\\d|3(?:[0159]\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\d|6[0-8])|7(?:[0159]\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\d|2[3-578]|3[2356]|[6-8][1-5])|9(?:[0159]\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\d{2,7}"], ["3[2-9]\\d{7,8}|(?:31|43)\\d{8}", [9, 10]], ["80(?:0\\d{3}|3)\\d{3}", [6, 9]], ["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}", [6, 8, 9, 10]], ["1(?:78\\d|99)\\d{6}", [9, 10]], ["3[2-8]\\d{9,10}", [11, 12]], 0, 0, ["55\\d{8}", [10]], ["84(?:[08]\\d{3}|[17])\\d{3}", [6, 9]]]], "JE": ["44", "00", "1534\\d{6}|(?:[3578]\\d|90)\\d{8}", [10], 0, "0", 0, "([0-24-8]\\d{5})$|0|180020", "1534$1", 0, 0, [["1534[0-24-8]\\d{5}"], ["7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97\\d))\\d{5}"], ["80(?:07(?:35|81)|8901)\\d{4}"], ["(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\d{4}"], ["701511\\d{4}"], 0, ["(?:3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\d{4})\\d{4}"], ["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}"], ["56\\d{8}"]]], "JM": ["1", "011", "(?:[58]\\d\\d|658|900)\\d{7}", [10], 0, "1", 0, 0, 0, 0, "658|876"], "JO": ["962", "00", "(?:(?:[2689]|7\\d)\\d|32|427|53)\\d{6}", [8, 9], [["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["[2356]|87"], "(0$1)"], ["(\\d{3})(\\d{5,6})", "$1 $2", ["[89]"], "0$1"], ["(\\d{2})(\\d{7})", "$1 $2", ["70"], "0$1"], ["(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["[47]"], "0$1"]], "0"], "JP": ["81", "010", "00[1-9]\\d{6,14}|[25-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}", [8, 9, 10, 11, 12, 13, 14, 15, 16, 17], [["(\\d{3})(\\d{3})(\\d{3})", "$1-$2-$3", ["(?:12|57|99)0"], "0$1"], ["(\\d{4})(\\d)(\\d{4})", "$1-$2-$3", ["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51)|9(?:80|9[16])", "1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]", "1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["60"], "0$1"], ["(\\d)(\\d{4})(\\d{4})", "$1-$2-$3", ["3|4(?:2[09]|7[01])|6[1-9]", "3|4(?:2(?:0|9[02-69])|7(?:0[019]|1))|6[1-9]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[0459]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[26-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])", "1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9]|9[29])|5(?:2|3(?:[045]|9[0-8])|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|3(?:[29]|60)|49|51|6(?:[0-24]|36|5[0-3589]|7[23]|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]", "1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3(?:[045]|9(?:[0-58]|6[4-9]|7[0-35689]))|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|60|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[2-57-9]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|7(?:2[2-468]|3[78])|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{4})", "$1-$2-$3", ["[14]|[289][2-9]|5[3-9]|7[2-4679]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1-$2-$3", ["800"], "0$1"], ["(\\d{2})(\\d{4})(\\d{4})", "$1-$2-$3", ["[25-9]"], "0$1"]], "0", 0, "(000[2569]\\d{4,6})$|(?:(?:003768)0?)|0", "$1"], "KE": ["254", "000", "(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}", [7, 8, 9, 10], [["(\\d{2})(\\d{5,7})", "$1 $2", ["[24-6]"], "0$1"], ["(\\d{3})(\\d{6})", "$1 $2", ["[17]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[89]"], "0$1"]], "0"], "KG": ["996", "00", "8\\d{9}|[235-9]\\d{8}", [9, 10], [["(\\d{4})(\\d{5})", "$1 $2", ["3(?:1[346]|[24-79])"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[235-79]|88"], "0$1"], ["(\\d{3})(\\d{3})(\\d)(\\d{2,3})", "$1 $2 $3 $4", ["8"], "0$1"]], "0"], "KH": ["855", "00[14-9]", "1\\d{9}|[1-9]\\d{7,8}", [8, 9, 10], [["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[1-9]"], "0$1"], ["(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1"]]], "0"], "KI": ["686", "00", "(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}", [5, 8], 0, "0"], "KM": ["269", "00", "[3478]\\d{6}", [7], [["(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3", ["[3478]"]]]], "KN": ["1", "011", "(?:[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([2-7]\\d{6})$|1", "869$1", 0, "869"], "KP": ["850", "00|99", "85\\d{6}|(?:19\\d|[2-7])\\d{7}", [8, 10], [["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"], "0$1"], ["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["[2-7]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"], "0$1"]], "0"], "KR": ["82", "00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))", "00[1-9]\\d{8,11}|(?:[12]|5\\d{3})\\d{7}|[13-6]\\d{9}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}|(?:00|7)0\\d{8}", [5, 6, 8, 9, 10, 11, 12, 13, 14], [["(\\d{2})(\\d{3,4})", "$1-$2", ["(?:3[1-3]|[46][1-4]|5[1-5])1"], "0$1"], ["(\\d{4})(\\d{4})", "$1-$2", ["1"]], ["(\\d)(\\d{3,4})(\\d{4})", "$1-$2-$3", ["2"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["[36]0|8"], "0$1"], ["(\\d{2})(\\d{3,4})(\\d{4})", "$1-$2-$3", ["[1346]|5[1-5]"], "0$1"], ["(\\d{2})(\\d{4})(\\d{4})", "$1-$2-$3", ["[57]"], "0$1"], ["(\\d{2})(\\d{5})(\\d{4})", "$1-$2-$3", ["5"], "0$1"]], "0", 0, "0(8(?:[1-46-8]|5\\d\\d))?"], "KW": ["965", "00", "18\\d{5}|(?:[2569]\\d|41)\\d{6}", [7, 8], [["(\\d{4})(\\d{3,4})", "$1 $2", ["[169]|2(?:[235]|4[1-35-9])|52"]], ["(\\d{3})(\\d{5})", "$1 $2", ["[245]"]]]], "KY": ["1", "011", "(?:345|[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([2-9]\\d{6})$|1", "345$1", 0, "345"], "KZ": ["7", "810", "8\\d{13}|[78]\\d{9}", [10, 14], 0, "8", 0, 0, 0, 0, "7", 0, "8~10"], "LA": ["856", "00", "[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}", [8, 9, 10], [["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["2[13]|3[14]|[4-8]"], "0$1"], ["(\\d{2})(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["3"], "0$1"], ["(\\d{2})(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["[23]"], "0$1"]], "0"], "LB": ["961", "00", "[27-9]\\d{7}|[13-9]\\d{6}", [7, 8], [["(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["[13-69]|7(?:[2-57]|62|8[0-6]|9[04-9])|8[02-9]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[27-9]"]]], "0"], "LC": ["1", "011", "(?:[58]\\d\\d|758|900)\\d{7}", [10], 0, "1", 0, "([2-8]\\d{6})$|1", "758$1", 0, "758"], "LI": ["423", "00", "[68]\\d{8}|(?:[2378]\\d|90)\\d{5}", [7, 9], [["(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3", ["[2379]|8(?:0[09]|7)", "[2379]|8(?:0(?:02|9)|7)"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"]], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["69"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["6"]]], "0", 0, "(1001)|0"], "LK": ["94", "00", "[1-9]\\d{8}", [9], [["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["7"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[1-689]"], "0$1"]], "0"], "LR": ["231", "00", "(?:[2457]\\d|33|88)\\d{7}|(?:2\\d|[4-6])\\d{6}", [7, 8, 9], [["(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["4[67]|[56]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["2"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2-578]"], "0$1"]], "0"], "LS": ["266", "00", "(?:[256]\\d\\d|800)\\d{5}", [8], [["(\\d{4})(\\d{4})", "$1 $2", ["[2568]"]]]], "LT": ["370", "00", "(?:[3469]\\d|52|[78]0)\\d{6}", [8], [["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["52[0-7]"], "(0-$1)", 1], ["(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["[7-9]"], "0 $1", 1], ["(\\d{2})(\\d{6})", "$1 $2", ["37|4(?:[15]|6[1-8])"], "(0-$1)", 1], ["(\\d{3})(\\d{5})", "$1 $2", ["[3-6]"], "(0-$1)", 1]], "0", 0, "[08]"], "LU": ["352", "00", "35[013-9]\\d{4,8}|6\\d{8}|35\\d{2,4}|(?:[2457-9]\\d|3[0-46-9])\\d{2,9}", [4, 5, 6, 7, 8, 9, 10, 11], [["(\\d{2})(\\d{3})", "$1 $2", ["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]], ["(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]], ["(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3", ["20[2-689]"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})", "$1 $2 $3 $4", ["20"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})", "$1 $2 $3 $4", ["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]], ["(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["80[01]|90[015]"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["20"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["6"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})", "$1 $2 $3 $4 $5", ["20"]]], 0, 0, "(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)"], "LV": ["371", "00", "(?:[268]\\d|78|90)\\d{6}", [8], [["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2679]|8[01]"]]]], "LY": ["218", "00", "[2-9]\\d{8}", [9], [["(\\d{2})(\\d{7})", "$1-$2", ["[2-9]"], "0$1"]], "0"], "MA": ["212", "00", "[5-8]\\d{8}", [9], [["(\\d{4})(\\d{5})", "$1-$2", ["892"], "0$1"], ["(\\d{2})(\\d{7})", "$1-$2", ["8(?:0[0-7]|9)"], "0$1"], ["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["[5-8]"], "0$1"]], "0", 0, 0, 0, 0, "[5-8]"], "MC": ["377", "00", "(?:[3489]|[67]\\d)\\d{7}", [8, 9], [["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["4"], "0$1"], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[389]"]], ["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["[67]"], "0$1"]], "0"], "MD": ["373", "00", "(?:[235-7]\\d|[89]0)\\d{6}", [8], [["(\\d{3})(\\d{5})", "$1 $2", ["[89]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["22|3"], "0$1"], ["(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["[25-7]"], "0$1"]], "0"], "ME": ["382", "00", "(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}", [8, 9], [["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[2-9]"], "0$1"]], "0"], "MF": ["590", "00", "7090\\d{5}|(?:[56]9|[89]\\d)\\d{7}", [9], 0, "0", 0, 0, 0, 0, 0, [["(?:59(?:0(?:0[079]|[14]3|[27][79]|3[03-7]|5[0-268]|87)|87\\d)|80[6-9]\\d\\d)\\d{4}"], ["(?:69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))|7090[0-4])\\d{4}"], ["80[0-5]\\d{6}"], ["8[129]\\d{7}"], 0, 0, 0, 0, ["9(?:(?:39[5-7]|76[018])\\d|475[0-6])\\d{4}"]]], "MG": ["261", "00", "[23]\\d{8}", [9], [["(\\d{2})(\\d{2})(\\d{3})(\\d{2})", "$1 $2 $3 $4", ["[23]"], "0$1"]], "0", 0, "([24-9]\\d{6})$|0", "20$1"], "MH": ["692", "011", "329\\d{4}|(?:[256]\\d|45)\\d{5}", [7], [["(\\d{3})(\\d{4})", "$1-$2", ["[2-6]"]]], "1"], "MK": ["389", "00", "[2-578]\\d{7}", [8], [["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["2|34[47]|4(?:[37]7|5[47]|64)"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[347]"], "0$1"], ["(\\d{3})(\\d)(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[58]"], "0$1"]], "0"], "ML": ["223", "00", "[24-9]\\d{7}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[24-9]"]]]], "MM": ["95", "00", "1\\d{5,7}|95\\d{6}|(?:[4-7]|9[0-46-9])\\d{6,8}|(?:2|8\\d)\\d{5,8}", [6, 7, 8, 9, 10], [["(\\d)(\\d{2})(\\d{3})", "$1 $2 $3", ["16|2"], "0$1"], ["(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3", ["4(?:[2-46]|5[3-5])|5|6(?:[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-5]|(?:60|86)[23]"], "0$1"], ["(\\d)(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[12]|452|678|86", "[12]|452|6788|86"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[4-7]|8[1-35]"], "0$1"], ["(\\d)(\\d{3})(\\d{4,6})", "$1 $2 $3", ["9(?:2[0-4]|[35-9]|4[137-9])"], "0$1"], ["(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["2"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["8"], "0$1"], ["(\\d)(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["92"], "0$1"], ["(\\d)(\\d{5})(\\d{4})", "$1 $2 $3", ["9"], "0$1"]], "0"], "MN": ["976", "001", "[12]\\d{7,9}|[5-9]\\d{7}", [8, 9, 10], [["(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["11|2[16]"], "0$1"], ["(\\d{4})(\\d{4})", "$1 $2", ["[5-9]"]], ["(\\d{3})(\\d{5,6})", "$1 $2", ["[12]2[1-3]"], "0$1"], ["(\\d{4})(\\d{5,6})", "$1 $2", ["[12](?:27|3[2-8]|4[2-68]|5[1-4689])", "[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"], "0$1"], ["(\\d{5})(\\d{4,5})", "$1 $2", ["[12]"], "0$1"]], "0"], "MO": ["853", "00", "0800\\d{3}|(?:28|[68]\\d)\\d{6}", [7, 8], [["(\\d{4})(\\d{3})", "$1 $2", ["0"]], ["(\\d{4})(\\d{4})", "$1 $2", ["[268]"]]]], "MP": ["1", "011", "[58]\\d{9}|(?:67|90)0\\d{7}", [10], 0, "1", 0, "([2-9]\\d{6})$|1", "670$1", 0, "670"], "MQ": ["596", "00", "7091\\d{5}|(?:[56]9|[89]\\d)\\d{7}", [9], [["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[5-79]|8(?:0[6-9]|[36])"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"], "0$1"]], "0"], "MR": ["222", "00", "(?:[2-4]\\d\\d|800)\\d{5}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-48]"]]]], "MS": ["1", "011", "(?:[58]\\d\\d|664|900)\\d{7}", [10], 0, "1", 0, "([34]\\d{6})$|1", "664$1", 0, "664"], "MT": ["356", "00", "3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}", [8], [["(\\d{4})(\\d{4})", "$1 $2", ["[2357-9]"]]]], "MU": ["230", "0(?:0|[24-7]0|3[03])", "(?:[57]|8\\d\\d)\\d{7}|[2-468]\\d{6}", [7, 8, 10], [["(\\d{3})(\\d{4})", "$1 $2", ["[2-46]|8[013]"]], ["(\\d{4})(\\d{4})", "$1 $2", ["[57]"]], ["(\\d{5})(\\d{5})", "$1 $2", ["8"]]], 0, 0, 0, 0, 0, 0, 0, "020"], "MV": ["960", "0(?:0|19)", "(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}", [7, 10], [["(\\d{3})(\\d{4})", "$1-$2", ["[34679]"]], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[89]"]]], 0, 0, 0, 0, 0, 0, 0, "00"], "MW": ["265", "00", "(?:[1289]\\d|31|77)\\d{7}|1\\d{6}", [7, 9], [["(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["1[2-9]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[1-37-9]"], "0$1"]], "0"], "MX": ["52", "0[09]", "[2-9]\\d{9}", [10], [["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["33|5[56]|81"]], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2-9]"]]], 0, 0, 0, 0, 0, 0, 0, "00"], "MY": ["60", "00", "1\\d{8,9}|(?:3\\d|[4-9])\\d{7}", [8, 9, 10], [["(\\d)(\\d{3})(\\d{4})", "$1-$2 $3", ["[4-79]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1-$2 $3", ["1(?:[02469]|[378][1-9]|53)|8", "1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8"], "0$1"], ["(\\d)(\\d{4})(\\d{4})", "$1-$2 $3", ["3"], "0$1"], ["(\\d)(\\d{3})(\\d{2})(\\d{4})", "$1-$2-$3-$4", ["1(?:[367]|80)"]], ["(\\d{3})(\\d{3})(\\d{4})", "$1-$2 $3", ["15"], "0$1"], ["(\\d{2})(\\d{4})(\\d{4})", "$1-$2 $3", ["1"], "0$1"]], "0"], "MZ": ["258", "00", "(?:2|8\\d)\\d{7}", [8, 9], [["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["2|8[2-9]"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"]]]], "NA": ["264", "00", "[68]\\d{7,8}", [8, 9], [["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["88"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["6"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["87"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["8"], "0$1"]], "0"], "NC": ["687", "00", "(?:050|[2-57-9]\\d\\d)\\d{3}", [6], [["(\\d{2})(\\d{2})(\\d{2})", "$1.$2.$3", ["[02-57-9]"]]]], "NE": ["227", "00", "[027-9]\\d{7}", [8], [["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["08"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[089]|2[013]|7[0467]"]]]], "NF": ["672", "00", "[13]\\d{5}", [6], [["(\\d{2})(\\d{4})", "$1 $2", ["1[0-3]"]], ["(\\d)(\\d{5})", "$1 $2", ["[13]"]]], 0, 0, "([0-258]\\d{4})$", "3$1"], "NG": ["234", "009", "(?:20|9\\d)\\d{8}|[78]\\d{9,13}", [10, 11, 12, 13, 14], [["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[7-9]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["20[129]"], "0$1"], ["(\\d{4})(\\d{2})(\\d{4})", "$1 $2 $3", ["2"], "0$1"], ["(\\d{3})(\\d{4})(\\d{4,5})", "$1 $2 $3", ["[78]"], "0$1"], ["(\\d{3})(\\d{5})(\\d{5,6})", "$1 $2 $3", ["[78]"], "0$1"]], "0"], "NI": ["505", "00", "(?:1800|[25-8]\\d{3})\\d{4}", [8], [["(\\d{4})(\\d{4})", "$1 $2", ["[125-8]"]]]], "NL": ["31", "00", "(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8]))\\d{6}|8\\d{6,9}|9\\d{6,10}|1\\d{4,5}", [5, 6, 7, 8, 9, 10, 11], [["(\\d{3})(\\d{4,7})", "$1 $2", ["[89]0"], "0$1"], ["(\\d{2})(\\d{7})", "$1 $2", ["66"], "0$1"], ["(\\d)(\\d{8})", "$1 $2", ["6"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[1-578]|91"], "0$1"], ["(\\d{3})(\\d{3})(\\d{5})", "$1 $2 $3", ["9"], "0$1"]], "0"], "NO": ["47", "00", "(?:0|[2-9]\\d{3})\\d{4}", [5, 8], [["(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["8"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-79]"]]], 0, 0, 0, 0, 0, "[02-689]|7[0-8]"], "NP": ["977", "00", "(?:1\\d|9)\\d{9}|[1-9]\\d{7}", [8, 10, 11], [["(\\d)(\\d{7})", "$1-$2", ["1[2-6]"], "0$1"], ["(\\d{2})(\\d{6})", "$1-$2", ["1[01]|[2-8]|9(?:[1-59]|[67][2-6])"], "0$1"], ["(\\d{3})(\\d{7})", "$1-$2", ["9"]]], "0"], "NR": ["674", "00", "(?:222|444|(?:55|8\\d)\\d|666|777|999)\\d{4}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["[24-9]"]]]], "NU": ["683", "00", "(?:[4-7]|888\\d)\\d{3}", [4, 7], [["(\\d{3})(\\d{4})", "$1 $2", ["8"]]]], "NZ": ["64", "0(?:0|161)", "[1289]\\d{9}|50\\d{5}(?:\\d{2,3})?|[27-9]\\d{7,8}|(?:[34]\\d|6[0-35-9])\\d{6}|8\\d{4,6}", [5, 6, 7, 8, 9, 10], [["(\\d{2})(\\d{3,8})", "$1 $2", ["8[1-79]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2,3})", "$1 $2 $3", ["50[036-8]|8|90", "50(?:[0367]|88)|8|90"], "0$1"], ["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["24|[346]|7[2-57-9]|9[2-9]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["2(?:10|74)|[589]"], "0$1"], ["(\\d{2})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["1|2[028]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,5})", "$1 $2 $3", ["2(?:[169]|7[0-35-9])|7"], "0$1"]], "0", 0, 0, 0, 0, 0, 0, "00"], "OM": ["968", "00", "(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}", [7, 8, 9], [["(\\d{3})(\\d{4,6})", "$1 $2", ["[58]"]], ["(\\d{2})(\\d{6})", "$1 $2", ["2"]], ["(\\d{4})(\\d{4})", "$1 $2", ["[179]"]]]], "PA": ["507", "00", "(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}", [7, 8, 10, 11], [["(\\d{3})(\\d{4})", "$1-$2", ["[1-57-9]"]], ["(\\d{4})(\\d{4})", "$1-$2", ["[68]"]], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["8"]]]], "PE": ["51", "00|19(?:1[124]|77|90)00", "(?:[14-8]|9\\d)\\d{7}", [8, 9], [["(\\d{3})(\\d{5})", "$1 $2", ["80"], "(0$1)"], ["(\\d)(\\d{7})", "$1 $2", ["1"], "(0$1)"], ["(\\d{2})(\\d{6})", "$1 $2", ["[4-8]"], "(0$1)"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["9"]]], "0", 0, 0, 0, 0, 0, 0, "00", " Anexo "], "PF": ["689", "00", "4\\d{5}(?:\\d{2})?|8\\d{7,8}", [6, 8, 9], [["(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["44"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["4|8[7-9]"]], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"]]]], "PG": ["675", "00|140[1-3]", "(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}", [7, 8], [["(\\d{3})(\\d{4})", "$1 $2", ["18|[2-69]|85"]], ["(\\d{4})(\\d{4})", "$1 $2", ["[78]"]]], 0, 0, 0, 0, 0, 0, 0, "00"], "PH": ["63", "00", "(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}", [6, 8, 9, 10, 11, 12, 13], [["(\\d)(\\d{5})", "$1 $2", ["2"], "(0$1)"], ["(\\d{4})(\\d{4,6})", "$1 $2", ["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2", "3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"], "(0$1)"], ["(\\d{5})(\\d{4})", "$1 $2", ["346|4(?:27|9[35])|883", "3469|4(?:279|9(?:30|56))|8834"], "(0$1)"], ["(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["2"], "(0$1)"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[3-7]|8[2-8]"], "(0$1)"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[89]"], "0$1"], ["(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"]], ["(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})", "$1 $2 $3 $4", ["1"]]], "0"], "PK": ["92", "00", "122\\d{6}|[24-8]\\d{10,11}|9(?:[013-9]\\d{8,10}|2(?:[01]\\d\\d|2(?:[06-8]\\d|1[01]))\\d{7})|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}", [8, 9, 10, 11, 12], [["(\\d{3})(\\d{3})(\\d{2,7})", "$1 $2 $3", ["[89]0"], "0$1"], ["(\\d{4})(\\d{5})", "$1 $2", ["1"]], ["(\\d{3})(\\d{6,7})", "$1 $2", ["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])", "9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"], "(0$1)"], ["(\\d{2})(\\d{7,8})", "$1 $2", ["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"], "(0$1)"], ["(\\d{5})(\\d{5})", "$1 $2", ["58"], "(0$1)"], ["(\\d{3})(\\d{7})", "$1 $2", ["3"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"], "(0$1)"], ["(\\d{3})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["[24-9]"], "(0$1)"]], "0"], "PL": ["48", "00", "(?:6|8\\d\\d)\\d{7}|[1-9]\\d{6}(?:\\d{2})?|[26]\\d{5}", [6, 7, 8, 9, 10], [["(\\d{5})", "$1", ["19"]], ["(\\d{3})(\\d{3})", "$1 $2", ["11|20|64"]], ["(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3", ["30|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1", "30|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]], ["(\\d{3})(\\d{2})(\\d{2,3})", "$1 $2 $3", ["64"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)"]], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["1[2-8]|[2-7]|8[1-79]|9[145]"]], ["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["8"]]]], "PM": ["508", "00", "[78]\\d{8}|[2-9]\\d{5}", [6, 9], [["(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["[2-9]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["7"]], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"], "0$1"]], "0"], "PR": ["1", "011", "(?:[589]\\d\\d|787)\\d{7}", [10], 0, "1", 0, 0, 0, 0, "787|939"], "PS": ["970", "00", "[2489]2\\d{6}|(?:1\\d|5)\\d{8}", [8, 9, 10], [["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["[2489]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["5"], "0$1"], ["(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1"]]], "0"], "PT": ["351", "00", "1693\\d{5}|(?:[26-9]\\d|30)\\d{7}", [9], [["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["2[12]"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["16|[236-9]"]]]], "PW": ["680", "01[12]", "(?:[24-8]\\d\\d|345|900)\\d{4}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["[2-9]"]]]], "PY": ["595", "00", "[36-8]\\d{5,8}|4\\d{6,8}|59\\d{6}|9\\d{5,10}|(?:2\\d|5[0-8])\\d{6,7}", [6, 7, 8, 9, 10, 11], [["(\\d{3})(\\d{3,6})", "$1 $2", ["[2-9]0"], "0$1"], ["(\\d{2})(\\d{5})", "$1 $2", ["3[289]|4[246-8]|61|7[1-3]|8[1-36]"], "(0$1)"], ["(\\d{3})(\\d{4,5})", "$1 $2", ["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"], "(0$1)"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"], "(0$1)"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["87"]], ["(\\d{3})(\\d{6})", "$1 $2", ["9(?:[5-79]|8[1-7])"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2-8]"], "0$1"], ["(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["9"]]], "0"], "QA": ["974", "00", "800\\d{4}|(?:2|800)\\d{6}|(?:0080|[3-7])\\d{7}", [7, 8, 9, 11], [["(\\d{3})(\\d{4})", "$1 $2", ["2[136]|8"]], ["(\\d{4})(\\d{4})", "$1 $2", ["[3-7]"]]]], "RE": ["262", "00", "709\\d{6}|(?:26|[689]\\d)\\d{7}", [9], [["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[26-9]"], "0$1"]], "0", 0, 0, 0, 0, 0, [["2631[0-6]\\d{4}|26(?:2\\d|30|88)\\d{5}"], ["(?:69(?:2\\d\\d|3(?:[06][0-6]|1[0-3]|2[0-2]|3[0-39]|4\\d|5[0-5]|7[0-37]|8[0-8]|9[0-479]))|7092[0-3])\\d{4}"], ["80\\d{7}"], ["89[1-37-9]\\d{6}"], 0, 0, 0, 0, ["9(?:399[0-3]|479[0-6]|76(?:2[278]|3[0-37]))\\d{4}"], ["8(?:1[019]|2[0156]|84|90)\\d{6}"]]], "RO": ["40", "00", "(?:[236-8]\\d|90)\\d{7}|[23]\\d{5}", [6, 9], [["(\\d{3})(\\d{3})", "$1 $2", ["2[3-6]", "2[3-6]\\d9"], "0$1"], ["(\\d{2})(\\d{4})", "$1 $2", ["219|31"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[23]1"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[236-9]"], "0$1"]], "0", 0, 0, 0, 0, 0, 0, 0, " int "], "RS": ["381", "00", "38[02-9]\\d{6,9}|6\\d{7,9}|90\\d{4,8}|38\\d{5,6}|(?:7\\d\\d|800)\\d{3,9}|(?:[12]\\d|3[0-79])\\d{5,10}", [6, 7, 8, 9, 10, 11, 12], [["(\\d{3})(\\d{3,9})", "$1 $2", ["(?:2[389]|39)0|[7-9]"], "0$1"], ["(\\d{2})(\\d{5,10})", "$1 $2", ["[1-36]"], "0$1"]], "0"], "RU": ["7", "810", "8\\d{13}|[347-9]\\d{9}", [10, 14], [["(\\d{4})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["7(?:1[0-8]|2[1-9])", "7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:1[23]|[2-9]2))", "7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"], "8 ($1)", 1], ["(\\d{5})(\\d)(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["7(?:1[0-68]|2[1-9])", "7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))", "7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"], "8 ($1)", 1], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["7"], "8 ($1)", 1], ["(\\d{3})(\\d{3})(\\d{2})(\\d{2})", "$1 $2-$3-$4", ["[349]|8(?:[02-7]|1[1-8])"], "8 ($1)", 1], ["(\\d{4})(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["8"], "8 ($1)"]], "8", 0, 0, 0, 0, "[3489]", 0, "8~10"], "RW": ["250", "00", "(?:06|[27]\\d\\d|[89]00)\\d{6}", [8, 9], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["0"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["2"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[7-9]"], "0$1"]], "0"], "SA": ["966", "00", "(?:[15]\\d|800|92)\\d{7}", [9, 10], [["(\\d{4})(\\d{5})", "$1 $2", ["9"]], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["5"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["8"]]], "0"], "SB": ["677", "0[01]", "[6-9]\\d{6}|[1-6]\\d{4}", [5, 7], [["(\\d{2})(\\d{5})", "$1 $2", ["6[89]|7|8[4-9]|9(?:[1-8]|9[0-8])"]]]], "SC": ["248", "010|0[0-2]", "(?:[2489]\\d|64)\\d{5}", [7], [["(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["[246]|9[57]"]]], 0, 0, 0, 0, 0, 0, 0, "00"], "SD": ["249", "00", "[19]\\d{8}", [9], [["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[19]"], "0$1"]], "0"], "SE": ["46", "00", "(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}", [6, 7, 8, 9, 10, 12], [["(\\d{2})(\\d{2,3})(\\d{2})", "$1-$2 $3", ["20"], "0$1", 0, "$1 $2 $3"], ["(\\d{3})(\\d{4})", "$1-$2", ["9(?:00|39|44|9)"], "0$1", 0, "$1 $2"], ["(\\d{2})(\\d{3})(\\d{2})", "$1-$2 $3", ["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"], "0$1", 0, "$1 $2 $3"], ["(\\d)(\\d{2,3})(\\d{2})(\\d{2})", "$1-$2 $3 $4", ["8"], "0$1", 0, "$1 $2 $3 $4"], ["(\\d{3})(\\d{2,3})(\\d{2})", "$1-$2 $3", ["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"], "0$1", 0, "$1 $2 $3"], ["(\\d{3})(\\d{2,3})(\\d{3})", "$1-$2 $3", ["9(?:00|39|44)"], "0$1", 0, "$1 $2 $3"], ["(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})", "$1-$2 $3 $4", ["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"], "0$1", 0, "$1 $2 $3 $4"], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1-$2 $3 $4", ["10|7"], "0$1", 0, "$1 $2 $3 $4"], ["(\\d)(\\d{3})(\\d{3})(\\d{2})", "$1-$2 $3 $4", ["8"], "0$1", 0, "$1 $2 $3 $4"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1-$2 $3 $4", ["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"], "0$1", 0, "$1 $2 $3 $4"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{3})", "$1-$2 $3 $4", ["9"], "0$1", 0, "$1 $2 $3 $4"], ["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1-$2 $3 $4 $5", ["[26]"], "0$1", 0, "$1 $2 $3 $4 $5"]], "0"], "SG": ["65", "0[0-3]\\d", "(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}", [8, 10, 11], [["(\\d{4})(\\d{4})", "$1 $2", ["[369]|8(?:0[1-9]|[1-9])"]], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["8"]], ["(\\d{4})(\\d{4})(\\d{3})", "$1 $2 $3", ["7"]], ["(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"]]]], "SH": ["290", "00", "(?:[256]\\d|8)\\d{3}", [4, 5], 0, 0, 0, 0, 0, 0, "[256]"], "SI": ["386", "00|10(?:22|66|88|99)", "[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}", [5, 6, 7, 8], [["(\\d{2})(\\d{3,6})", "$1 $2", ["8[09]|9"], "0$1"], ["(\\d{3})(\\d{5})", "$1 $2", ["59|8"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[37][01]|4[013]|51|6"], "0$1"], ["(\\d)(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[1-57]"], "(0$1)"]], "0", 0, 0, 0, 0, 0, 0, "00"], "SJ": ["47", "00", "0\\d{4}|(?:[489]\\d|79)\\d{6}", [5, 8], 0, 0, 0, 0, 0, 0, "79"], "SK": ["421", "00", "[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}", [6, 7, 9], [["(\\d)(\\d{2})(\\d{3,4})", "$1 $2 $3", ["21"], "0$1"], ["(\\d{2})(\\d{2})(\\d{2,3})", "$1 $2 $3", ["[3-5][1-8]1", "[3-5][1-8]1[67]"], "0$1"], ["(\\d)(\\d{3})(\\d{3})(\\d{2})", "$1 $2 $3 $4", ["2"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[689]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[3-5]"], "0$1"]], "0"], "SL": ["232", "00", "(?:[237-9]\\d|66)\\d{6}", [8], [["(\\d{2})(\\d{6})", "$1 $2", ["[236-9]"], "(0$1)"]], "0"], "SM": ["378", "00", "(?:0549|[5-7]\\d)\\d{6}", [8, 10], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[5-7]"]], ["(\\d{4})(\\d{6})", "$1 $2", ["0"]]], 0, 0, "([89]\\d{5})$", "0549$1"], "SN": ["221", "00", "(?:[378]\\d|93)\\d{7}", [9], [["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"]], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[379]"]]]], "SO": ["252", "00", "[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}", [6, 7, 8, 9], [["(\\d{2})(\\d{4})", "$1 $2", ["8[125]"]], ["(\\d{6})", "$1", ["[134]"]], ["(\\d)(\\d{6})", "$1 $2", ["[15]|2[0-79]|3[0-46-8]|4[0-7]"]], ["(\\d{2})(\\d{5,7})", "$1 $2", ["1|28|9[2-9]"]], ["(\\d)(\\d{7})", "$1 $2", ["[267]|904"]], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[346-9]"]]], "0"], "SR": ["597", "00", "(?:[2-5]|[6-9]\\d)\\d{5}", [6, 7], [["(\\d{2})(\\d{2})(\\d{2})", "$1-$2-$3", ["56"]], ["(\\d{3})(\\d{3})", "$1-$2", ["[2-5]"]], ["(\\d{3})(\\d{4})", "$1-$2", ["[6-9]"]]]], "SS": ["211", "00", "[19]\\d{8}", [9], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[19]"], "0$1"]], "0"], "ST": ["239", "00", "(?:22|9\\d)\\d{5}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["[29]"]]]], "SV": ["503", "00", "[25-7]\\d{7}|(?:80\\d|900)\\d{4}(?:\\d{4})?", [7, 8, 11], [["(\\d{3})(\\d{4})", "$1 $2", ["[89]"]], ["(\\d{4})(\\d{4})", "$1 $2", ["[25-7]"]], ["(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["[89]"]]]], "SX": ["1", "011", "7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "(5\\d{6})$|1", "721$1", 0, "721"], "SY": ["963", "00", "[1-359]\\d{8}|[1-5]\\d{7}", [8, 9], [["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[1-4]|5[1-3]"], "0$1", 1], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[59]"], "0$1", 1]], "0"], "SZ": ["268", "00", "0800\\d{4}|(?:[237]\\d|900)\\d{6}", [8, 9], [["(\\d{4})(\\d{4})", "$1 $2", ["[0237]"]], ["(\\d{5})(\\d{4})", "$1 $2", ["9"]]]], "TA": ["290", "00", "8\\d{3}", [4], 0, 0, 0, 0, 0, 0, "8"], "TC": ["1", "011", "(?:[58]\\d\\d|649|900)\\d{7}", [10], 0, "1", 0, "([2-479]\\d{6})$|1", "649$1", 0, "649"], "TD": ["235", "00|16", "(?:22|[3689]\\d|77)\\d{6}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[236-9]"]]], 0, 0, 0, 0, 0, 0, 0, "00"], "TG": ["228", "00", "[279]\\d{7}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[279]"]]]], "TH": ["66", "00[1-9]", "(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}", [8, 9, 10, 13], [["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["2"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[13-9]"], "0$1"], ["(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1"]]], "0"], "TJ": ["992", "810", "(?:[0-57-9]\\d|66)\\d{7}", [9], [["(\\d{6})(\\d)(\\d{2})", "$1 $2 $3", ["331", "3317"]], ["(\\d{3})(\\d{2})(\\d{4})", "$1 $2 $3", ["44[02-479]|[34]7"]], ["(\\d{4})(\\d)(\\d{4})", "$1 $2 $3", ["3(?:[1245]|3[12])"]], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["\\d"]]], 0, 0, 0, 0, 0, 0, 0, "8~10"], "TK": ["690", "00", "[2-47]\\d{3,6}", [4, 5, 6, 7]], "TL": ["670", "00", "7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}", [7, 8], [["(\\d{3})(\\d{4})", "$1 $2", ["[2-489]|70"]], ["(\\d{4})(\\d{4})", "$1 $2", ["7"]]]], "TM": ["993", "810", "[1-7]\\d{7}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2-$3-$4", ["12"], "(8 $1)"], ["(\\d{3})(\\d)(\\d{2})(\\d{2})", "$1 $2-$3-$4", ["[1-5]"], "(8 $1)"], ["(\\d{2})(\\d{6})", "$1 $2", ["[67]"], "8 $1"]], "8", 0, 0, 0, 0, 0, 0, "8~10"], "TN": ["216", "00", "[2-57-9]\\d{7}", [8], [["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2-57-9]"]]]], "TO": ["676", "00", "(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}", [5, 7], [["(\\d{2})(\\d{3})", "$1-$2", ["[2-4]|50|6[09]|7[0-24-69]|8[05]"]], ["(\\d{4})(\\d{3})", "$1 $2", ["0"]], ["(\\d{3})(\\d{4})", "$1 $2", ["[5-9]"]]]], "TR": ["90", "00", "4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}", [7, 10, 12, 13], [["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["512|8[01589]|90"], "0$1", 1], ["(\\d{3})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["5[0-79]"], "0$1", 1], ["(\\d{3})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[24][1-8]|3[1-9]"], "(0$1)", 1], ["(\\d{3})(\\d{3})(\\d{6,7})", "$1 $2 $3", ["80"], "0$1", 1]], "0"], "TT": ["1", "011", "(?:[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([2-46-8]\\d{6})$|1", "868$1", 0, "868"], "TV": ["688", "00", "(?:2|7\\d\\d|90)\\d{4}", [5, 6, 7], [["(\\d{2})(\\d{3})", "$1 $2", ["2"]], ["(\\d{2})(\\d{4})", "$1 $2", ["90"]], ["(\\d{2})(\\d{5})", "$1 $2", ["7"]]]], "TW": ["886", "0(?:0[25-79]|19)", "[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}", [7, 8, 9, 10, 11], [["(\\d{2})(\\d)(\\d{4})", "$1 $2 $3", ["202"], "0$1"], ["(\\d{3})(\\d{5})", "$1 $2", ["826"], "0$1"], ["(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["83"], "0$1"], ["(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["82"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[25]0|37|49|8[09]"], "0$1"], ["(\\d)(\\d{3,4})(\\d{4})", "$1 $2 $3", ["[23568]|4(?:0[02-48]|[1-478])|7[1-9]", "[23568]|4(?:0[2-48]|[1-478])|(?:400|7)[1-9]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[49]"], "0$1"], ["(\\d{2})(\\d{4})(\\d{4,5})", "$1 $2 $3", ["7"], "0$1"]], "0", 0, 0, 0, 0, 0, 0, 0, "#"], "TZ": ["255", "00[056]", "(?:[25-8]\\d|41|90)\\d{7}", [9], [["(\\d{3})(\\d{2})(\\d{4})", "$1 $2 $3", ["[89]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[24]"], "0$1"], ["(\\d{2})(\\d{7})", "$1 $2", ["5"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[67]"], "0$1"]], "0"], "UA": ["380", "00", "[89]\\d{9}|[3-9]\\d{8}", [9, 10], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]", "6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"], "0$1"], ["(\\d{4})(\\d{5})", "$1 $2", ["3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])", "3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[3-7]|89|9[1-9]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[89]"], "0$1"]], "0", 0, 0, 0, 0, 0, 0, "0~0"], "UG": ["256", "00[057]", "800\\d{6}|(?:[29]0|[347]\\d)\\d{7}", [9], [["(\\d{4})(\\d{5})", "$1 $2", ["202", "2024"], "0$1"], ["(\\d{3})(\\d{6})", "$1 $2", ["[27-9]|4(?:6[45]|[7-9])"], "0$1"], ["(\\d{2})(\\d{7})", "$1 $2", ["[34]"], "0$1"]], "0"], "US": ["1", "011", "[2-9]\\d{9}|3\\d{6}", [10], [["(\\d{3})(\\d{4})", "$1-$2", ["310"], 0, 1], ["(\\d{3})(\\d{3})(\\d{4})", "($1) $2-$3", ["[2-9]"], 0, 1, "$1-$2-$3"]], "1", 0, 0, 0, 0, 0, [["(?:472[2-47-9]|983[2-57-9])\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[02469]|8[13])|3(?:0[1-57-9]|1[02-9]|2[013-79]|3[0-24679]|4[167]|5[0-3]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-269])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[0-2478]|4[0378]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[0168]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\d{6}"], [""], ["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"], ["900[2-9]\\d{6}"], ["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\d{6}"]]], "UY": ["598", "0(?:0|1[3-9]\\d)", "0004\\d{2,9}|[1249]\\d{7}|2\\d{3,4}|(?:[49]\\d|80)\\d{5}", [4, 5, 6, 7, 8, 9, 10, 11, 12, 13], [["(\\d{4,5})", "$1", ["21"]], ["(\\d{3})(\\d{3,4})", "$1 $2", ["0"]], ["(\\d{3})(\\d{4})", "$1 $2", ["[49]0|8"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["9"], "0$1"], ["(\\d{4})(\\d{4})", "$1 $2", ["[124]"]], ["(\\d{3})(\\d{3})(\\d{2,4})", "$1 $2 $3", ["0"]], ["(\\d{3})(\\d{3})(\\d{3})(\\d{2,4})", "$1 $2 $3 $4", ["0"]]], "0", 0, 0, 0, 0, 0, 0, "00", " int. "], "UZ": ["998", "00", "(?:20|33|[5-9]\\d)\\d{7}", [9], [["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[235-9]"]]]], "VA": ["39", "00", "0\\d{5,10}|3[0-8]\\d{7,10}|55\\d{8}|8\\d{5}(?:\\d{2,4})?|(?:1\\d|39)\\d{7,8}", [6, 7, 8, 9, 10, 11, 12], 0, 0, 0, 0, 0, 0, "06698"], "VC": ["1", "011", "(?:[58]\\d\\d|784|900)\\d{7}", [10], 0, "1", 0, "([2-7]\\d{6})$|1", "784$1", 0, "784"], "VE": ["58", "00", "[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}", [10], [["(\\d{3})(\\d{7})", "$1-$2", ["[24-689]"], "0$1"]], "0"], "VG": ["1", "011", "(?:284|[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([2-578]\\d{6})$|1", "284$1", 0, "284"], "VI": ["1", "011", "[58]\\d{9}|(?:34|90)0\\d{7}", [10], 0, "1", 0, "([2-9]\\d{6})$|1", "340$1", 0, "340"], "VN": ["84", "00", "[12]\\d{9}|[135-9]\\d{8}|[16]\\d{6,7}|7\\d{6}", [7, 8, 9, 10], [["(\\d{4})(\\d{4,6})", "$1 $2", ["1(?:2[02]|[89])"], 0, 1], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["1[26]|6"], "0$1", 1], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[357-9]"], "0$1", 1], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["2[48]"], "0$1", 1], ["(\\d{3})(\\d{4})(\\d{3})", "$1 $2 $3", ["2"], "0$1", 1]], "0"], "VU": ["678", "00", "[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}", [5, 7], [["(\\d{3})(\\d{4})", "$1 $2", ["[57-9]"]]]], "WF": ["681", "00", "(?:40|72|8\\d{4})\\d{4}|[89]\\d{5}", [6, 9], [["(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["[47-9]"]], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"]]]], "WS": ["685", "0", "(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}", [5, 6, 7, 10], [["(\\d{5})", "$1", ["[2-5]|6[1-9]"]], ["(\\d{3})(\\d{3,7})", "$1 $2", ["[68]"]], ["(\\d{2})(\\d{5})", "$1 $2", ["7"]]]], "XK": ["383", "00", "2\\d{7,8}|3\\d{7,11}|(?:4\\d\\d|[89]00)\\d{5}", [8, 9, 10, 11, 12], [["(\\d{3})(\\d{5})", "$1 $2", ["[89]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2-4]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["2|39"], "0$1"], ["(\\d{2})(\\d{7,10})", "$1 $2", ["3"], "0$1"]], "0"], "YE": ["967", "00", "(?:1|7\\d)\\d{7}|[1-7]\\d{6}", [7, 8, 9], [["(\\d)(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[1-6]|7(?:[24-6]|8[0-7])"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["7"], "0$1"]], "0"], "YT": ["262", "00", "(?:639\\d|7093)\\d{5}|(?:26|80|9\\d)\\d{7}", [9], 0, "0", 0, 0, 0, 0, 0, [["26(?:89\\d|9(?:0[0-467]|15|5[0-4]|6\\d|[78]0))\\d{4}"], ["(?:639(?:0[0-79]|1[019]|[267]\\d|3[09]|40|5[05-9]|9[04-79])|7093[5-7])\\d{4}"], ["80\\d{7}"], 0, 0, 0, 0, 0, ["9(?:(?:39|47)8[01]|769\\d)\\d{4}"]]], "ZA": ["27", "00", "[1-79]\\d{8}|8\\d{4,9}", [5, 6, 7, 8, 9, 10], [["(\\d{2})(\\d{3,4})", "$1 $2", ["8[1-4]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{2,3})", "$1 $2 $3", ["8[1-4]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["860"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[1-9]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["8"], "0$1"]], "0"], "ZM": ["260", "00", "800\\d{6}|(?:21|[579]\\d|63)\\d{7}", [9], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[28]"], "0$1"], ["(\\d{2})(\\d{7})", "$1 $2", ["[579]"], "0$1"]], "0"], "ZW": ["263", "00", "2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}", [5, 6, 7, 8, 9, 10], [["(\\d{3})(\\d{3,5})", "$1 $2", ["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"], "0$1"], ["(\\d)(\\d{3})(\\d{2,4})", "$1 $2 $3", ["[49]"], "0$1"], ["(\\d{3})(\\d{4})", "$1 $2", ["80"], "0$1"], ["(\\d{2})(\\d{7})", "$1 $2", ["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2", "2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"], "(0$1)"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["7"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)", "2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"], "0$1"], ["(\\d{4})(\\d{6})", "$1 $2", ["8"], "0$1"], ["(\\d{2})(\\d{3,5})", "$1 $2", ["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["29[013-9]|39|54"], "0$1"], ["(\\d{4})(\\d{3,5})", "$1 $2", ["(?:25|54)8", "258|5483"], "0$1"]], "0"] }, "nonGeographic": { "800": ["800", 0, "(?:00|[1-9]\\d)\\d{6}", [8], [["(\\d{4})(\\d{4})", "$1 $2", ["\\d"]]], 0, 0, 0, 0, 0, 0, [0, 0, ["(?:00|[1-9]\\d)\\d{6}"]]], "808": ["808", 0, "[1-9]\\d{7}", [8], [["(\\d{4})(\\d{4})", "$1 $2", ["[1-9]"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 0, ["[1-9]\\d{7}"]]], "870": ["870", 0, "7\\d{11}|[235-7]\\d{8}", [9, 12], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[235-7]"]]], 0, 0, 0, 0, 0, 0, [0, ["(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}"], 0, 0, 0, 0, 0, 0, ["2\\d{8}", [9]]]], "878": ["878", 0, "10\\d{10}", [12], [["(\\d{2})(\\d{5})(\\d{5})", "$1 $2 $3", ["1"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, ["10\\d{10}"]]], "881": ["881", 0, "6\\d{9}|[0-36-9]\\d{8}", [9, 10], [["(\\d)(\\d{3})(\\d{5})", "$1 $2 $3", ["[0-37-9]"]], ["(\\d)(\\d{3})(\\d{5,6})", "$1 $2 $3", ["6"]]], 0, 0, 0, 0, 0, 0, [0, ["6\\d{9}|[0-36-9]\\d{8}"]]], "882": ["882", 0, "[13]\\d{6}(?:\\d{2,5})?|[19]\\d{7}|(?:[25]\\d\\d|4)\\d{7}(?:\\d{2})?", [7, 8, 9, 10, 11, 12], [["(\\d{2})(\\d{5})", "$1 $2", ["16|342"]], ["(\\d{2})(\\d{6})", "$1 $2", ["49"]], ["(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["1[36]|9"]], ["(\\d{2})(\\d{4})(\\d{3})", "$1 $2 $3", ["3[23]"]], ["(\\d{2})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["16"]], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["10|23|3(?:[15]|4[57])|4|5[12]"]], ["(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["34"]], ["(\\d{2})(\\d{4,5})(\\d{5})", "$1 $2 $3", ["[1-35]"]]], 0, 0, 0, 0, 0, 0, [0, ["342\\d{4}|(?:337|49)\\d{6}|(?:3(?:2|47|7\\d{3})|5(?:0\\d{3}|2[0-2]))\\d{7}", [7, 8, 9, 10, 12]], 0, 0, 0, ["348[57]\\d{7}", [11]], 0, 0, ["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:345\\d|9[89])\\d{6}|(?:10|2(?:3|85\\d)|3(?:[15]|[69]\\d\\d)|4[15-8]|51)\\d{8}"]]], "883": ["883", 0, "(?:[1-4]\\d|51)\\d{6,10}", [8, 9, 10, 11, 12], [["(\\d{3})(\\d{3})(\\d{2,8})", "$1 $2 $3", ["[14]|2[24-689]|3[02-689]|51[24-9]"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["510"]], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["21"]], ["(\\d{4})(\\d{4})(\\d{4})", "$1 $2 $3", ["51[13]"]], ["(\\d{3})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["[235]"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, ["(?:2(?:00\\d\\d|10)|(?:370[1-9]|51\\d0)\\d)\\d{7}|51(?:00\\d{5}|[24-9]0\\d{4,7})|(?:1[0-79]|2[24-689]|3[02-689]|4[0-4])0\\d{5,9}"]]], "888": ["888", 0, "\\d{11}", [11], [["(\\d{3})(\\d{3})(\\d{5})", "$1 $2 $3"]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, ["\\d{11}"]]], "979": ["979", 0, "[1359]\\d{8}", [9], [["(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["[1359]"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, ["[1359]\\d{8}"]]] } };
|
|
11278
|
+
var metadata_min_json_default = { "version": 4, "country_calling_codes": { "1": ["US", "AG", "AI", "AS", "BB", "BM", "BS", "CA", "DM", "DO", "GD", "GU", "JM", "KN", "KY", "LC", "MP", "MS", "PR", "SX", "TC", "TT", "VC", "VG", "VI"], "7": ["RU", "KZ"], "20": ["EG"], "27": ["ZA"], "30": ["GR"], "31": ["NL"], "32": ["BE"], "33": ["FR"], "34": ["ES"], "36": ["HU"], "39": ["IT", "VA"], "40": ["RO"], "41": ["CH"], "43": ["AT"], "44": ["GB", "GG", "IM", "JE"], "45": ["DK"], "46": ["SE"], "47": ["NO", "SJ"], "48": ["PL"], "49": ["DE"], "51": ["PE"], "52": ["MX"], "53": ["CU"], "54": ["AR"], "55": ["BR"], "56": ["CL"], "57": ["CO"], "58": ["VE"], "60": ["MY"], "61": ["AU", "CC", "CX"], "62": ["ID"], "63": ["PH"], "64": ["NZ"], "65": ["SG"], "66": ["TH"], "81": ["JP"], "82": ["KR"], "84": ["VN"], "86": ["CN"], "90": ["TR"], "91": ["IN"], "92": ["PK"], "93": ["AF"], "94": ["LK"], "95": ["MM"], "98": ["IR"], "211": ["SS"], "212": ["MA", "EH"], "213": ["DZ"], "216": ["TN"], "218": ["LY"], "220": ["GM"], "221": ["SN"], "222": ["MR"], "223": ["ML"], "224": ["GN"], "225": ["CI"], "226": ["BF"], "227": ["NE"], "228": ["TG"], "229": ["BJ"], "230": ["MU"], "231": ["LR"], "232": ["SL"], "233": ["GH"], "234": ["NG"], "235": ["TD"], "236": ["CF"], "237": ["CM"], "238": ["CV"], "239": ["ST"], "240": ["GQ"], "241": ["GA"], "242": ["CG"], "243": ["CD"], "244": ["AO"], "245": ["GW"], "246": ["IO"], "247": ["AC"], "248": ["SC"], "249": ["SD"], "250": ["RW"], "251": ["ET"], "252": ["SO"], "253": ["DJ"], "254": ["KE"], "255": ["TZ"], "256": ["UG"], "257": ["BI"], "258": ["MZ"], "260": ["ZM"], "261": ["MG"], "262": ["RE", "YT"], "263": ["ZW"], "264": ["NA"], "265": ["MW"], "266": ["LS"], "267": ["BW"], "268": ["SZ"], "269": ["KM"], "290": ["SH", "TA"], "291": ["ER"], "297": ["AW"], "298": ["FO"], "299": ["GL"], "350": ["GI"], "351": ["PT"], "352": ["LU"], "353": ["IE"], "354": ["IS"], "355": ["AL"], "356": ["MT"], "357": ["CY"], "358": ["FI", "AX"], "359": ["BG"], "370": ["LT"], "371": ["LV"], "372": ["EE"], "373": ["MD"], "374": ["AM"], "375": ["BY"], "376": ["AD"], "377": ["MC"], "378": ["SM"], "380": ["UA"], "381": ["RS"], "382": ["ME"], "383": ["XK"], "385": ["HR"], "386": ["SI"], "387": ["BA"], "389": ["MK"], "420": ["CZ"], "421": ["SK"], "423": ["LI"], "500": ["FK"], "501": ["BZ"], "502": ["GT"], "503": ["SV"], "504": ["HN"], "505": ["NI"], "506": ["CR"], "507": ["PA"], "508": ["PM"], "509": ["HT"], "590": ["GP", "BL", "MF"], "591": ["BO"], "592": ["GY"], "593": ["EC"], "594": ["GF"], "595": ["PY"], "596": ["MQ"], "597": ["SR"], "598": ["UY"], "599": ["CW", "BQ"], "670": ["TL"], "672": ["NF"], "673": ["BN"], "674": ["NR"], "675": ["PG"], "676": ["TO"], "677": ["SB"], "678": ["VU"], "679": ["FJ"], "680": ["PW"], "681": ["WF"], "682": ["CK"], "683": ["NU"], "685": ["WS"], "686": ["KI"], "687": ["NC"], "688": ["TV"], "689": ["PF"], "690": ["TK"], "691": ["FM"], "692": ["MH"], "850": ["KP"], "852": ["HK"], "853": ["MO"], "855": ["KH"], "856": ["LA"], "880": ["BD"], "886": ["TW"], "960": ["MV"], "961": ["LB"], "962": ["JO"], "963": ["SY"], "964": ["IQ"], "965": ["KW"], "966": ["SA"], "967": ["YE"], "968": ["OM"], "970": ["PS"], "971": ["AE"], "972": ["IL"], "973": ["BH"], "974": ["QA"], "975": ["BT"], "976": ["MN"], "977": ["NP"], "992": ["TJ"], "993": ["TM"], "994": ["AZ"], "995": ["GE"], "996": ["KG"], "998": ["UZ"] }, "countries": { "AC": ["247", "00", "(?:[01589]\\d|[2-467])\\d{4}", [5, 6]], "AD": ["376", "00", "(?:1|6\\d)\\d{7}|[135-9]\\d{5}", [6, 8, 9], [["(\\d{3})(\\d{3})", "$1 $2", ["[135-9]"]], ["(\\d{4})(\\d{4})", "$1 $2", ["1"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["6"]]]], "AE": ["971", "00", "(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}", [5, 6, 7, 8, 9, 10, 11, 12], [["(\\d{3})(\\d{2,9})", "$1 $2", ["60|8"]], ["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["[236]|[479][2-8]"], "0$1"], ["(\\d{3})(\\d)(\\d{5})", "$1 $2 $3", ["[479]"]], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["5"], "0$1"]], "0"], "AF": ["93", "00", "[2-7]\\d{8}", [9], [["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2-7]"], "0$1"]], "0"], "AG": ["1", "011", "(?:268|[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([457]\\d{6})$|1", "268$1", 0, "268"], "AI": ["1", "011", "(?:264|[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([2457]\\d{6})$|1", "264$1", 0, "264"], "AL": ["355", "00", "(?:700\\d\\d|900)\\d{3}|8\\d{5,7}|(?:[2-5]|6\\d)\\d{7}", [6, 7, 8, 9], [["(\\d{3})(\\d{3,4})", "$1 $2", ["80|9"], "0$1"], ["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["4[2-6]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2358][2-5]|4"], "0$1"], ["(\\d{3})(\\d{5})", "$1 $2", ["[23578]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["6"], "0$1"]], "0"], "AM": ["374", "00", "(?:[1-489]\\d|55|60|77)\\d{6}", [8], [["(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["[89]0"], "0 $1"], ["(\\d{3})(\\d{5})", "$1 $2", ["2|3[12]"], "(0$1)"], ["(\\d{2})(\\d{6})", "$1 $2", ["1|47"], "(0$1)"], ["(\\d{2})(\\d{6})", "$1 $2", ["[3-9]"], "0$1"]], "0"], "AO": ["244", "00", "[29]\\d{8}", [9], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[29]"]]]], "AR": ["54", "00", "(?:11|[89]\\d\\d)\\d{8}|[2368]\\d{9}", [10, 11], [["(\\d{4})(\\d{2})(\\d{4})", "$1 $2-$3", ["2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])", "2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)", "2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]", "2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"], "0$1", 1], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2-$3", ["1"], "0$1", 1], ["(\\d{3})(\\d{3})(\\d{4})", "$1-$2-$3", ["[68]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2-$3", ["[23]"], "0$1", 1], ["(\\d)(\\d{4})(\\d{2})(\\d{4})", "$2 15-$3-$4", ["9(?:2[2-469]|3[3-578])", "9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))", "9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)", "9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]", "9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]"], "0$1", 0, "$1 $2 $3-$4"], ["(\\d)(\\d{2})(\\d{4})(\\d{4})", "$2 15-$3-$4", ["91"], "0$1", 0, "$1 $2 $3-$4"], ["(\\d{3})(\\d{3})(\\d{5})", "$1-$2-$3", ["8"], "0$1"], ["(\\d)(\\d{3})(\\d{3})(\\d{4})", "$2 15-$3-$4", ["9"], "0$1", 0, "$1 $2 $3-$4"]], "0", 0, "0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?", "9$1"], "AS": ["1", "011", "(?:[58]\\d\\d|684|900)\\d{7}", [10], 0, "1", 0, "([267]\\d{6})$|1", "684$1", 0, "684"], "AT": ["43", "00", "1\\d{3,12}|2\\d{6,12}|43(?:(?:0\\d|5[02-9])\\d{3,9}|2\\d{4,5}|[3467]\\d{4}|8\\d{4,6}|9\\d{4,7})|5\\d{4,12}|8\\d{7,12}|9\\d{8,12}|(?:[367]\\d|4[0-24-9])\\d{4,11}", [4, 5, 6, 7, 8, 9, 10, 11, 12, 13], [["(\\d)(\\d{3,12})", "$1 $2", ["1(?:11|[2-9])"], "0$1"], ["(\\d{3})(\\d{2})", "$1 $2", ["517"], "0$1"], ["(\\d{2})(\\d{3,5})", "$1 $2", ["5[079]"], "0$1"], ["(\\d{3})(\\d{3,10})", "$1 $2", ["(?:31|4)6|51|6(?:48|5[0-3579]|[6-9])|7(?:20|32|8)|[89]", "(?:31|4)6|51|6(?:485|5[0-3579]|[6-9])|7(?:20|32|8)|[89]"], "0$1"], ["(\\d{4})(\\d{3,9})", "$1 $2", ["[2-467]|5[2-6]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["5"], "0$1"], ["(\\d{2})(\\d{4})(\\d{4,7})", "$1 $2 $3", ["5"], "0$1"]], "0"], "AU": ["61", "001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011", "1(?:[0-79]\\d{7}(?:\\d(?:\\d{2})?)?|8[0-24-9]\\d{7})|[2-478]\\d{8}|1\\d{4,7}", [5, 6, 7, 8, 9, 10, 12], [["(\\d{2})(\\d{3,4})", "$1 $2", ["16"], "0$1"], ["(\\d{2})(\\d{3})(\\d{2,4})", "$1 $2 $3", ["16"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["14|4"], "0$1"], ["(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["[2378]"], "(0$1)"], ["(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1(?:30|[89])"]]], "0", 0, "(183[12])|0", 0, 0, 0, [["(?:(?:241|349)0\\d\\d|8(?:51(?:0(?:0[03-9]|[12479]\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\d|7[89]|9[0-4])|[34]\\d\\d)|91(?:(?:[0-58]\\d|6[0135-9])\\d|7(?:0[0-24-9]|[1-9]\\d)|9(?:[0-46-9]\\d|5[0-79]))))\\d{3}|(?:2(?:[0-26-9]\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\d|2[0-8])|8(?:55|6[0-8]|[78]\\d|9[02-9]))\\d{6}", [9]], ["4(?:79[01]|83[0-36-9]|95[0-3])\\d{5}|4(?:[0-36]\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\d{6}", [9]], ["180(?:0\\d{3}|2)\\d{3}", [7, 10]], ["190[0-26]\\d{6}", [10]], 0, 0, 0, ["163\\d{2,6}", [5, 6, 7, 8, 9]], ["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}", [9]], ["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}", [6, 8, 10, 12]]], "0011"], "AW": ["297", "00", "(?:[25-79]\\d\\d|800)\\d{4}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["[25-9]"]]]], "AX": ["358", "00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))", "2\\d{4,9}|35\\d{4,5}|(?:60\\d\\d|800)\\d{4,6}|7\\d{5,11}|(?:[14]\\d|3[0-46-9]|50)\\d{4,8}", [5, 6, 7, 8, 9, 10, 11, 12], 0, "0", 0, 0, 0, 0, "18", 0, "00"], "AZ": ["994", "00", "365\\d{6}|(?:[124579]\\d|60|88)\\d{7}", [9], [["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["90"], "0$1"], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["1[28]|2|365|46", "1[28]|2|365[45]|46", "1[28]|2|365(?:4|5[02])|46"], "(0$1)"], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[13-9]"], "0$1"]], "0"], "BA": ["387", "00", "6\\d{8}|(?:[35689]\\d|49|70)\\d{6}", [8, 9], [["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["6[1-3]|[7-9]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2-$3", ["[3-5]|6[56]"], "0$1"], ["(\\d{2})(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["6"], "0$1"]], "0"], "BB": ["1", "011", "(?:246|[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([2-9]\\d{6})$|1", "246$1", 0, "246"], "BD": ["880", "00", "[1-469]\\d{9}|8[0-79]\\d{7,8}|[2-79]\\d{8}|[2-9]\\d{7}|[3-9]\\d{6}|[57-9]\\d{5}", [6, 7, 8, 9, 10], [["(\\d{2})(\\d{4,6})", "$1-$2", ["31[5-8]|[459]1"], "0$1"], ["(\\d{3})(\\d{3,7})", "$1-$2", ["3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:[15]|28|4[14])|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]"], "0$1"], ["(\\d{4})(\\d{3,6})", "$1-$2", ["[13-9]|2[23]"], "0$1"], ["(\\d)(\\d{7,8})", "$1-$2", ["2"], "0$1"]], "0"], "BE": ["32", "00", "4\\d{8}|[1-9]\\d{7}", [8, 9], [["(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["(?:80|9)0"], "0$1"], ["(\\d)(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[239]|4[23]"], "0$1"], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[15-8]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["4"], "0$1"]], "0"], "BF": ["226", "00", "[024-7]\\d{7}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[024-7]"]]]], "BG": ["359", "00", "00800\\d{7}|[2-7]\\d{6,7}|[89]\\d{6,8}|2\\d{5}", [6, 7, 8, 9, 12], [["(\\d)(\\d)(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["2"], "0$1"], ["(\\d{3})(\\d{4})", "$1 $2", ["43[1-6]|70[1-9]"], "0$1"], ["(\\d)(\\d{3})(\\d{3,4})", "$1 $2 $3", ["2"], "0$1"], ["(\\d{2})(\\d{3})(\\d{2,3})", "$1 $2 $3", ["[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["(?:70|8)0"], "0$1"], ["(\\d{3})(\\d{3})(\\d{2})", "$1 $2 $3", ["43[1-7]|7"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[48]|9[08]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["9"], "0$1"]], "0"], "BH": ["973", "00", "[136-9]\\d{7}", [8], [["(\\d{4})(\\d{4})", "$1 $2", ["[13679]|8[02-4679]"]]]], "BI": ["257", "00", "(?:[267]\\d|31)\\d{6}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2367]"]]]], "BJ": ["229", "00", "(?:01\\d|8)\\d{7}", [8, 10], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["0"]]]], "BL": ["590", "00", "7090\\d{5}|(?:[56]9|[89]\\d)\\d{7}", [9], 0, "0", 0, 0, 0, 0, 0, [["(?:59(?:0(?:2[7-9]|3[3-7]|5[12]|87)|87\\d)|80[6-9]\\d\\d)\\d{4}"], ["(?:69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))|7090[0-4])\\d{4}"], ["80[0-5]\\d{6}"], ["8[129]\\d{7}"], 0, 0, 0, 0, ["9(?:(?:39[5-7]|76[018])\\d|475[0-6])\\d{4}"]]], "BM": ["1", "011", "(?:441|[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([2-9]\\d{6})$|1", "441$1", 0, "441"], "BN": ["673", "00", "[2-578]\\d{6}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["[2-578]"]]]], "BO": ["591", "00(?:1\\d)?", "(?:[2-7]\\d\\d|8001)\\d{5}", [8, 9], [["(\\d)(\\d{7})", "$1 $2", ["[23]|4[46]|50"]], ["(\\d{8})", "$1", ["[5-7]"]], ["(\\d{3})(\\d{2})(\\d{4})", "$1 $2 $3", ["8"]]], "0", 0, "0(1\\d)?"], "BQ": ["599", "00", "(?:[34]1|7\\d)\\d{5}", [7], 0, 0, 0, 0, 0, 0, "[347]"], "BR": ["55", "00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)", "[1-467]\\d{9,10}|55[0-46-9]\\d{8}|[34]\\d{7}|55\\d{7,8}|(?:5[0-46-9]|[89]\\d)\\d{7,9}", [8, 9, 10, 11], [["(\\d{4})(\\d{4})", "$1-$2", ["300|4(?:0[02]|37|86)", "300|4(?:0(?:0|20)|370|864)"]], ["(\\d{3})(\\d{2,3})(\\d{4})", "$1 $2 $3", ["(?:[358]|90)0"], "0$1"], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2-$3", ["(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]"], "($1)"], ["(\\d{2})(\\d{5})(\\d{4})", "$1 $2-$3", ["[16][1-9]|[2-57-9]"], "($1)"]], "0", 0, "(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\d{10,11}))?", "$2"], "BS": ["1", "011", "(?:242|[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([3-8]\\d{6})$|1", "242$1", 0, "242"], "BT": ["975", "00", "[178]\\d{7}|[2-8]\\d{6}", [7, 8], [["(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["[2-6]|7[246]|8[2-4]"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["1[67]|[78]"]]]], "BW": ["267", "00", "(?:0800|(?:[37]|800)\\d)\\d{6}|(?:[2-6]\\d|90)\\d{5}", [7, 8, 10], [["(\\d{2})(\\d{5})", "$1 $2", ["90"]], ["(\\d{3})(\\d{4})", "$1 $2", ["[24-6]|3[15-9]"]], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[37]"]], ["(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["0"]], ["(\\d{3})(\\d{4})(\\d{3})", "$1 $2 $3", ["8"]]]], "BY": ["375", "810", "(?:[12]\\d|33|44|902)\\d{7}|8(?:0[0-79]\\d{5,7}|[1-7]\\d{9})|8(?:1[0-489]|[5-79]\\d)\\d{7}|8[1-79]\\d{6,7}|8[0-79]\\d{5}|8\\d{5}", [6, 7, 8, 9, 10, 11], [["(\\d{3})(\\d{3})", "$1 $2", ["800"], "8 $1"], ["(\\d{3})(\\d{2})(\\d{2,4})", "$1 $2 $3", ["800"], "8 $1"], ["(\\d{4})(\\d{2})(\\d{3})", "$1 $2-$3", ["1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])", "1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])"], "8 0$1"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2-$3-$4", ["1(?:[56]|7[467])|2[1-3]"], "8 0$1"], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2-$3-$4", ["[1-4]"], "8 0$1"], ["(\\d{3})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["[89]"], "8 $1"]], "8", 0, "0|80?", 0, 0, 0, 0, "8~10"], "BZ": ["501", "00", "(?:0800\\d|[2-8])\\d{6}", [7, 11], [["(\\d{3})(\\d{4})", "$1-$2", ["[2-8]"]], ["(\\d)(\\d{3})(\\d{4})(\\d{3})", "$1-$2-$3-$4", ["0"]]]], "CA": ["1", "011", "[2-9]\\d{9}|3\\d{6}", [7, 10], 0, "1", 0, 0, 0, 0, 0, [["(?:2(?:04|[23]6|[48]9|5[07]|63)|3(?:06|43|54|6[578]|82)|4(?:03|1[68]|[26]8|3[178]|50|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|[18]3|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|7[39])|9(?:0[25]|42))[2-9]\\d{6}", [10]], ["", [10]], ["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}", [10]], ["900[2-9]\\d{6}", [10]], ["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|(?:5(?:2[125-9]|3[23]|44|66|77|88)|6(?:22|33))[2-9]\\d{6}", [10]], 0, ["310\\d{4}", [7]], 0, ["600[2-9]\\d{6}", [10]]]], "CC": ["61", "001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011", "1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}", [6, 7, 8, 9, 10, 12], 0, "0", 0, "([59]\\d{7})$|0", "8$1", 0, 0, [["8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\d|70[23]|959))\\d{3}", [9]], ["4(?:79[01]|83[0-36-9]|95[0-3])\\d{5}|4(?:[0-36]\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\d{6}", [9]], ["180(?:0\\d{3}|2)\\d{3}", [7, 10]], ["190[0-26]\\d{6}", [10]], 0, 0, 0, 0, ["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}", [9]], ["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}", [6, 8, 10, 12]]], "0011"], "CD": ["243", "00", "(?:(?:[189]|5\\d)\\d|2)\\d{7}|[1-68]\\d{6}", [7, 8, 9, 10], [["(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3", ["88"], "0$1"], ["(\\d{2})(\\d{5})", "$1 $2", ["[1-6]"], "0$1"], ["(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["2"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[89]"], "0$1"], ["(\\d{2})(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["5"], "0$1"]], "0"], "CF": ["236", "00", "8776\\d{4}|(?:[27]\\d|61)\\d{6}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[26-8]"]]]], "CG": ["242", "00", "222\\d{6}|(?:0\\d|80)\\d{7}", [9], [["(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["8"]], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[02]"]]]], "CH": ["41", "00", "8\\d{11}|[2-9]\\d{8}", [9, 12], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8[047]|90"], "0$1"], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-79]|81"], "0$1"], ["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["8"], "0$1"]], "0"], "CI": ["225", "00", "[02]\\d{9}", [10], [["(\\d{2})(\\d{2})(\\d)(\\d{5})", "$1 $2 $3 $4", ["2"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3 $4", ["0"]]]], "CK": ["682", "00", "[2-578]\\d{4}", [5], [["(\\d{2})(\\d{3})", "$1 $2", ["[2-578]"]]]], "CL": ["56", "(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0", "12300\\d{6}|6\\d{9,10}|[2-9]\\d{8}", [9, 10, 11], [["(\\d{5})(\\d{4})", "$1 $2", ["219", "2196"], "($1)"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["60|809"]], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["44"]], ["(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["2[1-36]"], "($1)"], ["(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["9(?:10|[2-9])"]], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-8]|[1-9])"], "($1)"], ["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["60|8"]], ["(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"]], ["(\\d{3})(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["60"]]]], "CM": ["237", "00", "[26]\\d{8}|88\\d{6,7}", [8, 9], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["88"]], ["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["[26]|88"]]]], "CN": ["86", "00|1(?:[12]\\d|79)\\d\\d00", "(?:(?:1[03-689]|2\\d)\\d\\d|6)\\d{8}|1\\d{10}|[126]\\d{6}(?:\\d(?:\\d{2})?)?|86\\d{5,6}|(?:[3-579]\\d|8[0-57-9])\\d{5,9}", [7, 8, 9, 10, 11, 12], [["(\\d{2})(\\d{5,6})", "$1 $2", ["(?:10|2[0-57-9])[19]|3(?:[157]|35|49|9[1-68])|4(?:1[124-9]|2[179]|6[47-9]|7|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:07|1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3|4[13]|5[1-5]|7[0-79]|9[0-35-9])|(?:4[35]|59|85)[1-9]", "(?:10|2[0-57-9])(?:1[02]|9[56])|8078|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))1", "10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|80781|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))12", "10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|807812|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123", "10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\d|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123"], "0$1"], ["(\\d{3})(\\d{5,6})", "$1 $2", ["3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]", "(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))[19]", "85[23](?:10|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:10|9[56])", "85[23](?:100|95)|(?:3(?:[157]\\d|35|49|9[1-68])|4(?:[17]\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))(?:100|9[56])"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["(?:4|80)0"]], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["10|2(?:[02-57-9]|1[1-9])", "10|2(?:[02-57-9]|1[1-9])", "10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])"], "0$1", 1], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]"], "0$1", 1], ["(\\d{3})(\\d{7,8})", "$1 $2", ["9"]], ["(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["80"], "0$1", 1], ["(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["[3-578]"], "0$1", 1], ["(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["1[3-9]"]], ["(\\d{2})(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3 $4", ["[12]"], "0$1", 1]], "0", 0, "(1(?:[12]\\d|79)\\d\\d)|0", 0, 0, 0, 0, "00"], "CO": ["57", "00(?:4(?:[14]4|56)|[579])", "(?:46|60\\d\\d)\\d{6}|(?:1\\d|[39])\\d{9}", [8, 10, 11], [["(\\d{4})(\\d{4})", "$1 $2", ["46"]], ["(\\d{3})(\\d{7})", "$1 $2", ["6|90"], "($1)"], ["(\\d{3})(\\d{7})", "$1 $2", ["3[0-357]|9[14]"]], ["(\\d)(\\d{3})(\\d{7})", "$1-$2-$3", ["1"], "0$1", 0, "$1 $2 $3"]], "0", 0, "0([3579]|4(?:[14]4|56))?"], "CR": ["506", "00", "(?:8\\d|90)\\d{8}|(?:[24-8]\\d{3}|3005)\\d{4}", [8, 10], [["(\\d{4})(\\d{4})", "$1 $2", ["[2-7]|8[3-9]"]], ["(\\d{3})(\\d{3})(\\d{4})", "$1-$2-$3", ["[89]"]]], 0, 0, "(19(?:0[0-2468]|1[09]|20|66|77|99))"], "CU": ["53", "119", "(?:[2-7]|8\\d\\d)\\d{7}|[2-47]\\d{6}|[34]\\d{5}", [6, 7, 8, 10], [["(\\d{2})(\\d{4,6})", "$1 $2", ["2[1-4]|[34]"], "(0$1)"], ["(\\d)(\\d{6,7})", "$1 $2", ["7"], "(0$1)"], ["(\\d)(\\d{7})", "$1 $2", ["[56]"], "0$1"], ["(\\d{3})(\\d{7})", "$1 $2", ["8"], "0$1"]], "0"], "CV": ["238", "0", "(?:[2-59]\\d\\d|800)\\d{4}", [7], [["(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3", ["[2-589]"]]]], "CW": ["599", "00", "(?:[34]1|60|(?:7|9\\d)\\d)\\d{5}", [7, 8], [["(\\d{3})(\\d{4})", "$1 $2", ["[3467]"]], ["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["9[4-8]"]]], 0, 0, 0, 0, 0, "[69]"], "CX": ["61", "001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011", "1(?:[0-79]\\d{8}(?:\\d{2})?|8[0-24-9]\\d{7})|[148]\\d{8}|1\\d{5,7}", [6, 7, 8, 9, 10, 12], 0, "0", 0, "([59]\\d{7})$|0", "8$1", 0, 0, [["8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\d|7(?:0[01]|1[0-2])|958))\\d{3}", [9]], ["4(?:79[01]|83[0-36-9]|95[0-3])\\d{5}|4(?:[0-36]\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\d{6}", [9]], ["180(?:0\\d{3}|2)\\d{3}", [7, 10]], ["190[0-26]\\d{6}", [10]], 0, 0, 0, 0, ["14(?:5(?:1[0458]|[23][458])|71\\d)\\d{4}", [9]], ["13(?:00\\d{6}(?:\\d{2})?|45[0-4]\\d{3})|13\\d{4}", [6, 8, 10, 12]]], "0011"], "CY": ["357", "00", "(?:[279]\\d|[58]0)\\d{6}", [8], [["(\\d{2})(\\d{6})", "$1 $2", ["[257-9]"]]]], "CZ": ["420", "00", "(?:[2-578]\\d|60)\\d{7}|9\\d{8,11}", [9, 10, 11, 12], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2-8]|9[015-7]"]], ["(\\d{2})(\\d{3})(\\d{3})(\\d{2})", "$1 $2 $3 $4", ["96"]], ["(\\d{2})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["9"]], ["(\\d{3})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["9"]]]], "DE": ["49", "00", "[2579]\\d{5,14}|49(?:[34]0|69|8\\d)\\d\\d?|49(?:37|49|60|7[089]|9\\d)\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\d{1,8}|(?:1|[368]\\d|4[0-8])\\d{3,13}|49(?:[015]\\d|2[13]|31|[46][1-8])\\d{1,9}", [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [["(\\d{2})(\\d{3,13})", "$1 $2", ["3[02]|40|[68]9"], "0$1"], ["(\\d{3})(\\d{3,12})", "$1 $2", ["2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1", "2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1"], "0$1"], ["(\\d{4})(\\d{2,11})", "$1 $2", ["[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]", "[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]"], "0$1"], ["(\\d{3})(\\d{4})", "$1 $2", ["138"], "0$1"], ["(\\d{5})(\\d{2,10})", "$1 $2", ["3"], "0$1"], ["(\\d{3})(\\d{5,11})", "$1 $2", ["181"], "0$1"], ["(\\d{3})(\\d)(\\d{4,10})", "$1 $2 $3", ["1(?:3|80)|9"], "0$1"], ["(\\d{3})(\\d{7,8})", "$1 $2", ["1[67]"], "0$1"], ["(\\d{3})(\\d{7,12})", "$1 $2", ["8"], "0$1"], ["(\\d{5})(\\d{6})", "$1 $2", ["185", "1850", "18500"], "0$1"], ["(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["7"], "0$1"], ["(\\d{4})(\\d{7})", "$1 $2", ["18[68]"], "0$1"], ["(\\d{4})(\\d{7})", "$1 $2", ["15[1279]"], "0$1"], ["(\\d{5})(\\d{6})", "$1 $2", ["15[03568]", "15(?:[0568]|3[13])"], "0$1"], ["(\\d{3})(\\d{8})", "$1 $2", ["18"], "0$1"], ["(\\d{3})(\\d{2})(\\d{7,8})", "$1 $2 $3", ["1(?:6[023]|7)"], "0$1"], ["(\\d{4})(\\d{2})(\\d{7})", "$1 $2 $3", ["15[279]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{8})", "$1 $2 $3", ["15"], "0$1"]], "0"], "DJ": ["253", "00", "(?:2\\d|77)\\d{6}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[27]"]]]], "DK": ["45", "00", "[2-9]\\d{7}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-9]"]]]], "DM": ["1", "011", "(?:[58]\\d\\d|767|900)\\d{7}", [10], 0, "1", 0, "([2-7]\\d{6})$|1", "767$1", 0, "767"], "DO": ["1", "011", "(?:[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, 0, 0, 0, "8001|8[024]9"], "DZ": ["213", "00", "(?:[1-4]|[5-79]\\d|80)\\d{7}", [8, 9], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[1-4]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["9"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[5-8]"], "0$1"]], "0"], "EC": ["593", "00", "1\\d{9,10}|(?:[2-7]|9\\d)\\d{7}", [8, 9, 10, 11], [["(\\d)(\\d{3})(\\d{4})", "$1 $2-$3", ["[2-7]"], "(0$1)", 0, "$1-$2-$3"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["9"], "0$1"], ["(\\d{4})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["1"]]], "0"], "EE": ["372", "00", "8\\d{9}|[4578]\\d{7}|(?:[3-8]\\d|90)\\d{5}", [7, 8, 10], [["(\\d{3})(\\d{4})", "$1 $2", ["[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88", "[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88"]], ["(\\d{4})(\\d{3,4})", "$1 $2", ["[45]|8(?:00|[1-49])", "[45]|8(?:00[1-9]|[1-49])"]], ["(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["7"]], ["(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"]]]], "EG": ["20", "00", "[189]\\d{8,9}|[24-6]\\d{8}|[135]\\d{7}", [8, 9, 10], [["(\\d)(\\d{7,8})", "$1 $2", ["[23]"], "0$1"], ["(\\d{2})(\\d{6,7})", "$1 $2", ["1[35]|[4-6]|8[2468]|9[235-7]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[89]"], "0$1"], ["(\\d{2})(\\d{8})", "$1 $2", ["1"], "0$1"]], "0"], "EH": ["212", "00", "[5-8]\\d{8}", [9], 0, "0", 0, 0, 0, 0, 0, [["528[89]\\d{5}"], ["(?:6(?:[0-79]\\d|8[0-247-9])|7(?:[016-8]\\d|2[0-8]|3[01]|5[0-5]))\\d{6}"], ["80[0-7]\\d{6}"], ["89\\d{7}"], 0, 0, 0, 0, ["(?:592(?:4[0-2]|93)|80[89]\\d\\d)\\d{4}"]]], "ER": ["291", "00", "[178]\\d{6}", [7], [["(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["[178]"], "0$1"]], "0"], "ES": ["34", "00", "(?:400|[5-9]\\d\\d)\\d{6}", [9], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[89]00"]], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[4-9]"]]]], "ET": ["251", "00", "(?:11|[2-57-9]\\d)\\d{7}", [9], [["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[1-57-9]"], "0$1"]], "0"], "FI": ["358", "00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))", "[1-35689]\\d{4}|7\\d{10,11}|(?:[124-7]\\d|3[0-46-9])\\d{8}|[1-9]\\d{5,8}", [5, 6, 7, 8, 9, 10, 11, 12], [["(\\d{5})", "$1", ["20[2-59]"], "0$1"], ["(\\d{3})(\\d{3,7})", "$1 $2", ["(?:[1-3]0|[68])0|70[07-9]"], "0$1"], ["(\\d{2})(\\d{4,8})", "$1 $2", ["[14]|2[09]|50|7[135]"], "0$1"], ["(\\d{2})(\\d{6,10})", "$1 $2", ["7"], "0$1"], ["(\\d)(\\d{4,9})", "$1 $2", ["(?:19|[2568])[1-8]|3(?:0[1-9]|[1-9])|9"], "0$1"]], "0", 0, 0, 0, 0, "1[03-79]|[2-9]", 0, "00"], "FJ": ["679", "0(?:0|52)", "45\\d{5}|(?:0800\\d|[235-9])\\d{6}", [7, 11], [["(\\d{3})(\\d{4})", "$1 $2", ["[235-9]|45"]], ["(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["0"]]], 0, 0, 0, 0, 0, 0, 0, "00"], "FK": ["500", "00", "[2-7]\\d{4}", [5]], "FM": ["691", "00", "(?:[39]\\d\\d|820)\\d{4}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["[389]"]]]], "FO": ["298", "00", "[2-9]\\d{5}", [6], [["(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["[2-9]"]]], 0, 0, "(10(?:01|[12]0|88))"], "FR": ["33", "00", "[1-9]\\d{8}", [9], [["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"], "0 $1"], ["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["[1-79]"], "0$1"]], "0"], "GA": ["241", "00", "(?:[067]\\d|11)\\d{6}|[2-7]\\d{6}", [7, 8], [["(\\d)(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-7]"], "0$1"], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["0"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["11|[67]"], "0$1"]], 0, 0, "0(11\\d{6}|60\\d{6}|61\\d{6}|6[256]\\d{6}|7[467]\\d{6})", "$1"], "GB": ["44", "00", "[1-357-9]\\d{9}|[18]\\d{8}|8\\d{6}", [7, 9, 10], [["(\\d{3})(\\d{4})", "$1 $2", ["800", "8001", "80011", "800111", "8001111"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3", ["845", "8454", "84546", "845464"], "0$1"], ["(\\d{3})(\\d{6})", "$1 $2", ["800"], "0$1"], ["(\\d{5})(\\d{4,5})", "$1 $2", ["1(?:38|5[23]|69|76|94)", "1(?:(?:38|69)7|5(?:24|39)|768|946)", "1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)"], "0$1"], ["(\\d{4})(\\d{5,6})", "$1 $2", ["1(?:[2-69][02-9]|[78])"], "0$1"], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["[25]|7(?:0|6[02-9])", "[25]|7(?:0|6(?:[03-9]|2[356]))"], "0$1"], ["(\\d{4})(\\d{6})", "$1 $2", ["7"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[1389]"], "0$1"]], "0", 0, "0|180020", 0, 0, 0, [["(?:1(?:1(?:3(?:[0-58]\\d\\d|73[0-5])|4(?:(?:[0-5]\\d|70)\\d|69[7-9])|(?:(?:5[0-26-9]|[78][0-49])\\d|6(?:[0-4]\\d|5[01]))\\d)|(?:2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\d)\\d|1(?:[0-7]\\d|8[0-3]))|(?:3(?:0\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\d)\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\d{3})\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\d)|76\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[5-7]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d{3}", [9, 10]], ["7(?:457[0-57-9]|700[01]|911[028])\\d{5}|7(?:[1-3]\\d\\d|4(?:[0-46-9]\\d|5[0-689])|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[024-9]\\d|1[02-9]|3[0-689]))\\d{6}", [10]], ["80[08]\\d{7}|800\\d{6}|8001111"], ["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[2-49]))\\d{7}|845464\\d", [7, 10]], ["70\\d{8}", [10]], 0, ["(?:3[0347]|55)\\d{8}", [10]], ["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}", [10]], ["56\\d{8}", [10]]], 0, " x"], "GD": ["1", "011", "(?:473|[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([2-9]\\d{6})$|1", "473$1", 0, "473"], "GE": ["995", "00", "(?:[3-57]\\d\\d|800)\\d{6}", [9], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["70"], "0$1"], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["32"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[57]"]], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[348]"], "0$1"]], "0"], "GF": ["594", "00", "(?:694\\d|7093)\\d{5}|(?:59|[89]\\d)\\d{7}", [9], [["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[5-7]|80[6-9]|9[47]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[89]"], "0$1"]], "0"], "GG": ["44", "00", "(?:1481|[357-9]\\d{3})\\d{6}|8\\d{6}(?:\\d{2})?", [7, 9, 10], 0, "0", 0, "([25-9]\\d{5})$|0|180020", "1481$1", 0, 0, [["1481[25-9]\\d{5}", [10]], ["7(?:(?:781|839)\\d|911[17])\\d{5}", [10]], ["80[08]\\d{7}|800\\d{6}|8001111"], ["(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\d|8[0-3]))\\d{7}|845464\\d", [7, 10]], ["70\\d{8}", [10]], 0, ["(?:3[0347]|55)\\d{8}", [10]], ["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}", [10]], ["56\\d{8}", [10]]]], "GH": ["233", "00", "[235]\\d{8}|800\\d{5,6}", [8, 9], [["(\\d{3})(\\d{5})", "$1 $2", ["8"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2358]"], "0$1"]], "0"], "GI": ["350", "00", "(?:[25]\\d|60)\\d{6}", [8], [["(\\d{3})(\\d{5})", "$1 $2", ["2"]]]], "GL": ["299", "00", "(?:19|[2-689]\\d|70)\\d{4}", [6], [["(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["19|[2-9]"]]]], "GM": ["220", "00", "[2-9]\\d{6}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["[2-9]"]]]], "GN": ["224", "00", "722\\d{6}|(?:3|6\\d)\\d{7}", [8, 9], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["3"]], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[67]"]]]], "GP": ["590", "00", "7090\\d{5}|(?:[56]9|[89]\\d)\\d{7}", [9], [["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[5-79]|80[6-9]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"], "0$1"]], "0", 0, 0, 0, 0, 0, [["(?:59(?:0(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1-9]|5[3-579]|[68][0-689]|7[08]|9\\d)|87\\d)|80[6-9]\\d\\d)\\d{4}"], ["(?:69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))|7090[0-4])\\d{4}"], ["80[0-5]\\d{6}"], ["8[129]\\d{7}"], 0, 0, 0, 0, ["9(?:(?:39[5-7]|76[018])\\d|475[0-6])\\d{4}"]]], "GQ": ["240", "00", "222\\d{6}|(?:3\\d|55|[89]0)\\d{7}", [9], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[235]"]], ["(\\d{3})(\\d{6})", "$1 $2", ["[89]"]]]], "GR": ["30", "00", "5005000\\d{3}|8\\d{9,11}|(?:[269]\\d|70)\\d{8}", [10, 11, 12], [["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["21|7"]], ["(\\d{4})(\\d{6})", "$1 $2", ["2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5"]], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2689]"]], ["(\\d{3})(\\d{3,4})(\\d{5})", "$1 $2 $3", ["8"]]]], "GT": ["502", "00", "80\\d{6}|(?:1\\d{3}|[2-7])\\d{7}", [8, 11], [["(\\d{4})(\\d{4})", "$1 $2", ["[2-8]"]], ["(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"]]]], "GU": ["1", "011", "(?:[58]\\d\\d|671|900)\\d{7}", [10], 0, "1", 0, "([2-9]\\d{6})$|1", "671$1", 0, "671"], "GW": ["245", "00", "[49]\\d{8}|4\\d{6}", [7, 9], [["(\\d{3})(\\d{4})", "$1 $2", ["40"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[49]"]]]], "GY": ["592", "001", "(?:[2-8]\\d{3}|9008)\\d{3}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["[2-9]"]]]], "HK": ["852", "00(?:30|5[09]|[126-9]?)", "8[0-46-9]\\d{6,7}|9\\d{4,7}|(?:[2-7]|9\\d{3})\\d{7}", [5, 6, 7, 8, 9, 11], [["(\\d{3})(\\d{2,5})", "$1 $2", ["900", "9003"]], ["(\\d{4})(\\d{4})", "$1 $2", ["[2-7]|8[1-4]|9(?:0[1-9]|[1-8])"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"]], ["(\\d{3})(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["9"]]], 0, 0, 0, 0, 0, 0, 0, "00"], "HN": ["504", "00", "8\\d{10}|[237-9]\\d{7}", [8, 11], [["(\\d{4})(\\d{4})", "$1-$2", ["[237-9]"]]]], "HR": ["385", "00", "[2-69]\\d{8}|80\\d{5,7}|[1-79]\\d{7}|6\\d{6}", [7, 8, 9], [["(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3", ["6[01]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2,3})", "$1 $2 $3", ["8"], "0$1"], ["(\\d)(\\d{4})(\\d{3})", "$1 $2 $3", ["1"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["6|7[245]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["9"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[2-57]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"], "0$1"]], "0"], "HT": ["509", "00", "[2-589]\\d{7}", [8], [["(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["[2-589]"]]]], "HU": ["36", "00", "[235-7]\\d{8}|[1-9]\\d{7}", [8, 9], [["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["1"], "(06 $1)"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]"], "(06 $1)"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[2-9]"], "06 $1"]], "06"], "ID": ["62", "00[89]", "00[1-9]\\d{9,14}|(?:[1-36]|8\\d{5})\\d{6}|00\\d{9}|[1-9]\\d{8,10}|[2-9]\\d{7}", [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], [["(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["15"]], ["(\\d{2})(\\d{5,9})", "$1 $2", ["2[124]|[36]1"], "(0$1)"], ["(\\d{3})(\\d{5,7})", "$1 $2", ["800"], "0$1"], ["(\\d{3})(\\d{5,8})", "$1 $2", ["[2-79]"], "(0$1)"], ["(\\d{3})(\\d{3,4})(\\d{3})", "$1-$2-$3", ["8[1-35-9]"], "0$1"], ["(\\d{3})(\\d{6,8})", "$1 $2", ["1"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["804"], "0$1"], ["(\\d{3})(\\d)(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["80"], "0$1"], ["(\\d{3})(\\d{4})(\\d{4,5})", "$1-$2-$3", ["8"], "0$1"]], "0"], "IE": ["353", "00", "(?:1\\d|[2569])\\d{6,8}|4\\d{6,9}|7\\d{8}|8\\d{8,9}", [7, 8, 9, 10], [["(\\d{2})(\\d{5})", "$1 $2", ["2[24-9]|47|58|6[237-9]|9[35-9]"], "(0$1)"], ["(\\d{3})(\\d{5})", "$1 $2", ["[45]0"], "(0$1)"], ["(\\d)(\\d{3,4})(\\d{4})", "$1 $2 $3", ["1"], "(0$1)"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[2569]|4[1-69]|7[14]"], "(0$1)"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["70"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["81"], "(0$1)"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[78]"], "0$1"], ["(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1"]], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["4"], "(0$1)"], ["(\\d{2})(\\d)(\\d{3})(\\d{4})", "$1 $2 $3 $4", ["8"], "0$1"]], "0"], "IL": ["972", "0(?:0|1[2-9])", "1\\d{6}(?:\\d{3,5})?|[57]\\d{8}|[1-489]\\d{7}", [7, 8, 9, 10, 11, 12], [["(\\d{4})(\\d{3})", "$1-$2", ["125"]], ["(\\d{4})(\\d{2})(\\d{2})", "$1-$2-$3", ["121"]], ["(\\d)(\\d{3})(\\d{4})", "$1-$2-$3", ["[2-489]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["[57]"], "0$1"], ["(\\d{4})(\\d{3})(\\d{3})", "$1-$2-$3", ["12"]], ["(\\d{4})(\\d{6})", "$1-$2", ["159"]], ["(\\d)(\\d{3})(\\d{3})(\\d{3})", "$1-$2-$3-$4", ["1[7-9]"]], ["(\\d{3})(\\d{1,2})(\\d{3})(\\d{4})", "$1-$2 $3-$4", ["15"]]], "0"], "IM": ["44", "00", "1624\\d{6}|(?:[3578]\\d|90)\\d{8}", [10], 0, "0", 0, "([25-8]\\d{5})$|0|180020", "1624$1", 0, "74576|(?:16|7[56])24"], "IN": ["91", "00", "(?:000800|[2-9]\\d\\d)\\d{7}|1\\d{7,12}", [8, 9, 10, 11, 12, 13], [["(\\d{8})", "$1", ["5(?:0|2[23]|3[03]|[67]1|88)", "5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)", "5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)"], 0, 1], ["(\\d{4})(\\d{4,5})", "$1 $2", ["180", "1800"], 0, 1], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["140"], 0, 1], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["11|2[02]|33|4[04]|79[1-7]|80[2-46]", "11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])", "11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])"], "0$1", 1], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67)[14]", "1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31)|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]", "1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:3171|5[15][2-6]|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|8(?:16|2[014]|3[126]|6[136]|7[78]|83)(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]"], "0$1", 1], ["(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|3[129]|5[29]|6[02-5]|70)|807", "1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7(?:[23569]|8[0-57-9])|8[1-6])|7(?:1(?:[013-8]|9[6-9])|3(?:17|2[0-49]|9[2-57])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]", "1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|8(?:28[235-7]|3))|73179|807(?:1|9[1-3])|(?:1552|6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578])\\d|7(?:[23569]\\d|8[0-57-9])|8(?:[14-6]\\d|2[0-79]))|7(?:1(?:[013-8]\\d|9[6-9])|3(?:2[0-49]|9[2-57])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\d|5[0-367])|70[13-7]))[2-7]"], "0$1", 1], ["(\\d{5})(\\d{5})", "$1 $2", ["16|[6-9]"], "0$1", 1], ["(\\d{4})(\\d{2,4})(\\d{4})", "$1 $2 $3", ["18[06]", "18[06]0"], 0, 1], ["(\\d{4})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["18"], 0, 1]], "0"], "IO": ["246", "00", "3\\d{6}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["3"]]]], "IQ": ["964", "00", "(?:1|7\\d\\d)\\d{7}|[2-6]\\d{7,8}", [8, 9, 10], [["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["1"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[2-6]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["7"], "0$1"]], "0"], "IR": ["98", "00", "[1-9]\\d{9}|(?:[1-8]\\d\\d|9)\\d{3,4}", [4, 5, 6, 7, 10], [["(\\d{4,5})", "$1", ["96"], "0$1"], ["(\\d{2})(\\d{4,5})", "$1 $2", ["(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["9"], "0$1"], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["[1-8]"], "0$1"]], "0"], "IS": ["354", "00|1(?:0(?:01|[12]0)|100)", "(?:38\\d|[4-9])\\d{6}", [7, 9], [["(\\d{3})(\\d{4})", "$1 $2", ["[4-9]"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["3"]]], 0, 0, 0, 0, 0, 0, 0, "00"], "IT": ["39", "00", "0\\d{5,11}|1\\d{8,10}|3(?:[0-8]\\d{7,10}|9\\d{7,8})|(?:43|55|70)\\d{8}|8\\d{5}(?:\\d{2,4})?", [6, 7, 8, 9, 10, 11, 12], [["(\\d{2})(\\d{4,6})", "$1 $2", ["0[26]"]], ["(\\d{3})(\\d{3,6})", "$1 $2", ["0[13-57-9][0159]|8(?:03|4[17]|9[2-5])", "0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))"]], ["(\\d{4})(\\d{2,6})", "$1 $2", ["0(?:[13-579][2-46-8]|8[236-8])"]], ["(\\d{4})(\\d{4})", "$1 $2", ["894"]], ["(\\d{2})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["0[26]|5"]], ["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["1(?:44|[679])|[378]|43"]], ["(\\d{3})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["0[13-57-9][0159]|14"]], ["(\\d{2})(\\d{4})(\\d{5})", "$1 $2 $3", ["0[26]"]], ["(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["0"]], ["(\\d{3})(\\d{4})(\\d{4,5})", "$1 $2 $3", ["[03]"]]], 0, 0, 0, 0, 0, 0, [["0(?:669[0-79]\\d{1,6}|831\\d{2,8})|0(?:1(?:[0159]\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\d\\d|3(?:[0159]\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\d|6[0-8])|7(?:[0159]\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\d|2[3-578]|3[2356]|[6-8][1-5])|9(?:[0159]\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\d{2,7}"], ["3[2-9]\\d{7,8}|(?:31|43)\\d{8}", [9, 10]], ["80(?:0\\d{3}|3)\\d{3}", [6, 9]], ["(?:0878\\d{3}|89(?:2\\d|3[04]|4(?:[0-4]|[5-9]\\d\\d)|5[0-4]))\\d\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\d{6}", [6, 8, 9, 10]], ["1(?:78\\d|99)\\d{6}", [9, 10]], ["3[2-8]\\d{9,10}", [11, 12]], 0, 0, ["55\\d{8}", [10]], ["84(?:[08]\\d{3}|[17])\\d{3}", [6, 9]]]], "JE": ["44", "00", "1534\\d{6}|(?:[3578]\\d|90)\\d{8}", [10], 0, "0", 0, "([0-24-8]\\d{5})$|0|180020", "1534$1", 0, 0, [["1534[0-24-8]\\d{5}"], ["7(?:(?:(?:50|82)9|937)\\d|7(?:00[378]|97\\d))\\d{5}"], ["80(?:07(?:35|81)|8901)\\d{4}"], ["(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\d{4}"], ["701511\\d{4}"], 0, ["(?:3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\d{4})\\d{4}"], ["76(?:464|652)\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\d{6}"], ["56\\d{8}"]]], "JM": ["1", "011", "(?:[58]\\d\\d|658|900)\\d{7}", [10], 0, "1", 0, 0, 0, 0, "658|876"], "JO": ["962", "00", "(?:(?:[2689]|7\\d)\\d|32|427|53)\\d{6}", [8, 9], [["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["[2356]|87"], "(0$1)"], ["(\\d{3})(\\d{5,6})", "$1 $2", ["[89]"], "0$1"], ["(\\d{2})(\\d{7})", "$1 $2", ["70"], "0$1"], ["(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["[47]"], "0$1"]], "0"], "JP": ["81", "010", "00[1-9]\\d{6,14}|[25-9]\\d{9}|(?:00|[1-9]\\d\\d)\\d{6}", [8, 9, 10, 11, 12, 13, 14, 15, 16, 17], [["(\\d{3})(\\d{3})(\\d{3})", "$1-$2-$3", ["(?:12|57|99)0"], "0$1"], ["(\\d{4})(\\d)(\\d{4})", "$1-$2-$3", ["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51)|9(?:80|9[16])", "1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]", "1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["60"], "0$1"], ["(\\d)(\\d{4})(\\d{4})", "$1-$2-$3", ["3|4(?:2[09]|7[01])|6[1-9]", "3|4(?:2(?:0|9[02-69])|7(?:0[019]|1))|6[1-9]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[0459]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[26-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])", "1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9]|9[29])|5(?:2|3(?:[045]|9[0-8])|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|3(?:[29]|60)|49|51|6(?:[0-24]|36|5[0-3589]|7[23]|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]", "1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3(?:[045]|9(?:[0-58]|6[4-9]|7[0-35689]))|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|60|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[2-57-9]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|7(?:2[2-468]|3[78])|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{4})", "$1-$2-$3", ["[14]|[289][2-9]|5[3-9]|7[2-4679]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1-$2-$3", ["800"], "0$1"], ["(\\d{2})(\\d{4})(\\d{4})", "$1-$2-$3", ["[25-9]"], "0$1"]], "0", 0, "(000[2569]\\d{4,6})$|(?:(?:003768)0?)|0", "$1"], "KE": ["254", "000", "(?:[17]\\d\\d|900)\\d{6}|(?:2|80)0\\d{6,7}|[4-6]\\d{6,8}", [7, 8, 9, 10], [["(\\d{2})(\\d{5,7})", "$1 $2", ["[24-6]"], "0$1"], ["(\\d{3})(\\d{6})", "$1 $2", ["[17]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[89]"], "0$1"]], "0"], "KG": ["996", "00", "8\\d{9}|[235-9]\\d{8}", [9, 10], [["(\\d{4})(\\d{5})", "$1 $2", ["3(?:1[346]|[24-79])"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[235-79]|88"], "0$1"], ["(\\d{3})(\\d{3})(\\d)(\\d{2,3})", "$1 $2 $3 $4", ["8"], "0$1"]], "0"], "KH": ["855", "00[14-9]", "1\\d{9}|[1-9]\\d{7,8}", [8, 9, 10], [["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[1-9]"], "0$1"], ["(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1"]]], "0"], "KI": ["686", "00", "(?:[37]\\d|6[0-79])\\d{6}|(?:[2-48]\\d|50)\\d{3}", [5, 8], 0, "0"], "KM": ["269", "00", "[3478]\\d{6}", [7], [["(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3", ["[3478]"]]]], "KN": ["1", "011", "(?:[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([2-7]\\d{6})$|1", "869$1", 0, "869"], "KP": ["850", "00|99", "85\\d{6}|(?:19\\d|[2-7])\\d{7}", [8, 10], [["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"], "0$1"], ["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["[2-7]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"], "0$1"]], "0"], "KR": ["82", "00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))", "00[1-9]\\d{8,11}|(?:[12]|5\\d{3})\\d{7}|[13-6]\\d{9}|(?:[1-6]\\d|80)\\d{7}|[3-6]\\d{4,5}|(?:00|7)0\\d{8}", [5, 6, 8, 9, 10, 11, 12, 13, 14], [["(\\d{2})(\\d{3,4})", "$1-$2", ["(?:3[1-3]|[46][1-4]|5[1-5])1"], "0$1"], ["(\\d{4})(\\d{4})", "$1-$2", ["1"]], ["(\\d)(\\d{3,4})(\\d{4})", "$1-$2-$3", ["2"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1-$2-$3", ["[36]0|8"], "0$1"], ["(\\d{2})(\\d{3,4})(\\d{4})", "$1-$2-$3", ["[1346]|5[1-5]"], "0$1"], ["(\\d{2})(\\d{4})(\\d{4})", "$1-$2-$3", ["[57]"], "0$1"], ["(\\d{2})(\\d{5})(\\d{4})", "$1-$2-$3", ["5"], "0$1"]], "0", 0, "0(8(?:[1-46-8]|5\\d\\d))?"], "KW": ["965", "00", "18\\d{5}|(?:[2569]\\d|41)\\d{6}", [7, 8], [["(\\d{4})(\\d{3,4})", "$1 $2", ["[169]|2(?:[235]|4[1-35-9])|52"]], ["(\\d{3})(\\d{5})", "$1 $2", ["[245]"]]]], "KY": ["1", "011", "(?:345|[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([2-9]\\d{6})$|1", "345$1", 0, "345"], "KZ": ["7", "810", "8\\d{13}|[78]\\d{9}", [10, 14], 0, "8", 0, 0, 0, 0, "7", 0, "8~10"], "LA": ["856", "00", "[23]\\d{9}|3\\d{8}|(?:[235-8]\\d|41)\\d{6}", [8, 9, 10], [["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["2[13]|3[14]|[4-8]"], "0$1"], ["(\\d{2})(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["3"], "0$1"], ["(\\d{2})(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["[23]"], "0$1"]], "0"], "LB": ["961", "00", "[27-9]\\d{7}|[13-9]\\d{6}", [7, 8], [["(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["[13-69]|7(?:[2-57]|62|8[0-6]|9[04-9])|8[02-9]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[27-9]"]]], "0"], "LC": ["1", "011", "(?:[58]\\d\\d|758|900)\\d{7}", [10], 0, "1", 0, "([2-8]\\d{6})$|1", "758$1", 0, "758"], "LI": ["423", "00", "[68]\\d{8}|(?:[2378]\\d|90)\\d{5}", [7, 9], [["(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3", ["[2379]|8(?:0[09]|7)", "[2379]|8(?:0(?:02|9)|7)"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"]], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["69"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["6"]]], "0", 0, "(1001)|0"], "LK": ["94", "00", "[1-9]\\d{8}", [9], [["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["7"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[1-689]"], "0$1"]], "0"], "LR": ["231", "00", "(?:[2457]\\d|33|88)\\d{7}|(?:2\\d|[4-6])\\d{6}", [7, 8, 9], [["(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["4[67]|[56]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["2"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2-578]"], "0$1"]], "0"], "LS": ["266", "00", "(?:[256]\\d\\d|800)\\d{5}", [8], [["(\\d{4})(\\d{4})", "$1 $2", ["[2568]"]]]], "LT": ["370", "00", "(?:[3469]\\d|52|[78]0)\\d{6}", [8], [["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["52[0-7]"], "(0-$1)", 1], ["(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["[7-9]"], "0 $1", 1], ["(\\d{2})(\\d{6})", "$1 $2", ["37|4(?:[15]|6[1-8])"], "(0-$1)", 1], ["(\\d{3})(\\d{5})", "$1 $2", ["[3-6]"], "(0-$1)", 1]], "0", 0, "[08]"], "LU": ["352", "00", "35[013-9]\\d{4,8}|6\\d{8}|35\\d{2,4}|(?:[2457-9]\\d|3[0-46-9])\\d{2,9}", [4, 5, 6, 7, 8, 9, 10, 11], [["(\\d{2})(\\d{3})", "$1 $2", ["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]], ["(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])"]], ["(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3", ["20[2-689]"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})", "$1 $2 $3 $4", ["20"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{1,5})", "$1 $2 $3 $4", ["[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]"]], ["(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["80[01]|90[015]"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3 $4", ["20"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["6"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})", "$1 $2 $3 $4 $5", ["20"]]], 0, 0, "(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\d)"], "LV": ["371", "00", "(?:[268]\\d|78|90)\\d{6}", [8], [["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2679]|8[01]"]]]], "LY": ["218", "00", "[2-9]\\d{8}", [9], [["(\\d{2})(\\d{7})", "$1-$2", ["[2-9]"], "0$1"]], "0"], "MA": ["212", "00", "[5-8]\\d{8}", [9], [["(\\d{4})(\\d{5})", "$1-$2", ["892"], "0$1"], ["(\\d{2})(\\d{7})", "$1-$2", ["8(?:0[0-7]|9)"], "0$1"], ["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["[5-8]"], "0$1"]], "0", 0, 0, 0, 0, "[5-8]"], "MC": ["377", "00", "(?:[3489]|[67]\\d)\\d{7}", [8, 9], [["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["4"], "0$1"], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[389]"]], ["(\\d)(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4 $5", ["[67]"], "0$1"]], "0"], "MD": ["373", "00", "(?:[235-7]\\d|[89]0)\\d{6}", [8], [["(\\d{3})(\\d{5})", "$1 $2", ["[89]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["22|3"], "0$1"], ["(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["[25-7]"], "0$1"]], "0"], "ME": ["382", "00", "(?:20|[3-79]\\d)\\d{6}|80\\d{6,7}", [8, 9], [["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[2-9]"], "0$1"]], "0"], "MF": ["590", "00", "7090\\d{5}|(?:[56]9|[89]\\d)\\d{7}", [9], 0, "0", 0, 0, 0, 0, 0, [["(?:59(?:0(?:0[079]|[14]3|[27][79]|3[03-7]|5[0-268]|87)|87\\d)|80[6-9]\\d\\d)\\d{4}"], ["(?:69(?:0\\d\\d|1(?:2[2-9]|3[0-5]))|7090[0-4])\\d{4}"], ["80[0-5]\\d{6}"], ["8[129]\\d{7}"], 0, 0, 0, 0, ["9(?:(?:39[5-7]|76[018])\\d|475[0-6])\\d{4}"]]], "MG": ["261", "00", "[23]\\d{8}", [9], [["(\\d{2})(\\d{2})(\\d{3})(\\d{2})", "$1 $2 $3 $4", ["[23]"], "0$1"]], "0", 0, "([24-9]\\d{6})$|0", "20$1"], "MH": ["692", "011", "329\\d{4}|(?:[256]\\d|45)\\d{5}", [7], [["(\\d{3})(\\d{4})", "$1-$2", ["[2-6]"]]], "1"], "MK": ["389", "00", "[2-578]\\d{7}", [8], [["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["2|34[47]|4(?:[37]7|5[47]|64)"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[347]"], "0$1"], ["(\\d{3})(\\d)(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[58]"], "0$1"]], "0"], "ML": ["223", "00", "[24-9]\\d{7}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[24-9]"]]]], "MM": ["95", "00", "1\\d{5,7}|95\\d{6}|(?:[4-7]|9[0-46-9])\\d{6,8}|(?:2|8\\d)\\d{5,8}", [6, 7, 8, 9, 10], [["(\\d)(\\d{2})(\\d{3})", "$1 $2 $3", ["16|2"], "0$1"], ["(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3", ["4(?:[2-46]|5[3-5])|5|6(?:[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-5]|(?:60|86)[23]"], "0$1"], ["(\\d)(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[12]|452|678|86", "[12]|452|6788|86"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[4-7]|8[1-35]"], "0$1"], ["(\\d)(\\d{3})(\\d{4,6})", "$1 $2 $3", ["9(?:2[0-4]|[35-9]|4[137-9])"], "0$1"], ["(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["2"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["8"], "0$1"], ["(\\d)(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["92"], "0$1"], ["(\\d)(\\d{5})(\\d{4})", "$1 $2 $3", ["9"], "0$1"]], "0"], "MN": ["976", "001", "[12]\\d{7,9}|[5-9]\\d{7}", [8, 9, 10], [["(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["11|2[16]"], "0$1"], ["(\\d{4})(\\d{4})", "$1 $2", ["[5-9]"]], ["(\\d{3})(\\d{5,6})", "$1 $2", ["[12]2[1-3]"], "0$1"], ["(\\d{4})(\\d{5,6})", "$1 $2", ["[12](?:27|3[2-8]|4[2-68]|5[1-4689])", "[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]"], "0$1"], ["(\\d{5})(\\d{4,5})", "$1 $2", ["[12]"], "0$1"]], "0"], "MO": ["853", "00", "0800\\d{3}|(?:28|[68]\\d)\\d{6}", [7, 8], [["(\\d{4})(\\d{3})", "$1 $2", ["0"]], ["(\\d{4})(\\d{4})", "$1 $2", ["[268]"]]]], "MP": ["1", "011", "[58]\\d{9}|(?:67|90)0\\d{7}", [10], 0, "1", 0, "([2-9]\\d{6})$|1", "670$1", 0, "670"], "MQ": ["596", "00", "7091\\d{5}|(?:[56]9|[89]\\d)\\d{7}", [9], [["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[5-79]|8(?:0[6-9]|[36])"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"], "0$1"]], "0"], "MR": ["222", "00", "(?:[2-4]\\d\\d|800)\\d{5}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-48]"]]]], "MS": ["1", "011", "(?:[58]\\d\\d|664|900)\\d{7}", [10], 0, "1", 0, "([34]\\d{6})$|1", "664$1", 0, "664"], "MT": ["356", "00", "3550\\d{4}|(?:[2579]\\d\\d|800)\\d{5}", [8], [["(\\d{4})(\\d{4})", "$1 $2", ["[2357-9]"]]]], "MU": ["230", "0(?:0|[24-7]0|3[03])", "(?:[57]|8\\d\\d)\\d{7}|[2-468]\\d{6}", [7, 8, 10], [["(\\d{3})(\\d{4})", "$1 $2", ["[2-46]|8[013]"]], ["(\\d{4})(\\d{4})", "$1 $2", ["[57]"]], ["(\\d{5})(\\d{5})", "$1 $2", ["8"]]], 0, 0, 0, 0, 0, 0, 0, "020"], "MV": ["960", "0(?:0|19)", "(?:800|9[0-57-9]\\d)\\d{7}|[34679]\\d{6}", [7, 10], [["(\\d{3})(\\d{4})", "$1-$2", ["[34679]"]], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[89]"]]], 0, 0, 0, 0, 0, 0, 0, "00"], "MW": ["265", "00", "(?:[1289]\\d|31|77)\\d{7}|1\\d{6}", [7, 9], [["(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["1[2-9]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[1-37-9]"], "0$1"]], "0"], "MX": ["52", "0[09]", "[2-9]\\d{9}", [10], [["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["33|5[56]|81"]], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[2-9]"]]], 0, 0, 0, 0, 0, 0, 0, "00"], "MY": ["60", "00", "1\\d{8,9}|(?:3\\d|[4-9])\\d{7}", [8, 9, 10], [["(\\d)(\\d{3})(\\d{4})", "$1-$2 $3", ["[4-79]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1-$2 $3", ["1(?:[02469]|[378][1-9]|53)|8", "1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8"], "0$1"], ["(\\d)(\\d{4})(\\d{4})", "$1-$2 $3", ["3"], "0$1"], ["(\\d)(\\d{3})(\\d{2})(\\d{4})", "$1-$2-$3-$4", ["1(?:[367]|80)"]], ["(\\d{3})(\\d{3})(\\d{4})", "$1-$2 $3", ["15"], "0$1"], ["(\\d{2})(\\d{4})(\\d{4})", "$1-$2 $3", ["1"], "0$1"]], "0"], "MZ": ["258", "00", "(?:2|8\\d)\\d{7}", [8, 9], [["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["2|8[2-9]"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["8"]]]], "NA": ["264", "00", "[68]\\d{7,8}", [8, 9], [["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["88"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["6"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["87"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["8"], "0$1"]], "0"], "NC": ["687", "00", "(?:050|[2-57-9]\\d\\d)\\d{3}", [6], [["(\\d{2})(\\d{2})(\\d{2})", "$1.$2.$3", ["[02-57-9]"]]]], "NE": ["227", "00", "[027-9]\\d{7}", [8], [["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["08"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[089]|2[013]|7[0467]"]]]], "NF": ["672", "00", "[13]\\d{5}", [6], [["(\\d{2})(\\d{4})", "$1 $2", ["1[0-3]"]], ["(\\d)(\\d{5})", "$1 $2", ["[13]"]]], 0, 0, "([0-258]\\d{4})$", "3$1"], "NG": ["234", "009", "(?:20|9\\d)\\d{8}|[78]\\d{9,13}", [10, 11, 12, 13, 14], [["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[7-9]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["20[129]"], "0$1"], ["(\\d{4})(\\d{2})(\\d{4})", "$1 $2 $3", ["2"], "0$1"], ["(\\d{3})(\\d{4})(\\d{4,5})", "$1 $2 $3", ["[78]"], "0$1"], ["(\\d{3})(\\d{5})(\\d{5,6})", "$1 $2 $3", ["[78]"], "0$1"]], "0"], "NI": ["505", "00", "(?:1800|[25-8]\\d{3})\\d{4}", [8], [["(\\d{4})(\\d{4})", "$1 $2", ["[125-8]"]]]], "NL": ["31", "00", "(?:[124-7]\\d\\d|3(?:[02-9]\\d|1[0-8]))\\d{6}|8\\d{6,9}|9\\d{6,10}|1\\d{4,5}", [5, 6, 7, 8, 9, 10, 11], [["(\\d{3})(\\d{4,7})", "$1 $2", ["[89]0"], "0$1"], ["(\\d{2})(\\d{7})", "$1 $2", ["66"], "0$1"], ["(\\d)(\\d{8})", "$1 $2", ["6"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[1-578]|91"], "0$1"], ["(\\d{3})(\\d{3})(\\d{5})", "$1 $2 $3", ["9"], "0$1"]], "0"], "NO": ["47", "00", "(?:0|[2-9]\\d{3})\\d{4}", [5, 8], [["(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["8"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[2-79]"]]], 0, 0, 0, 0, 0, "[02-689]|7[0-8]"], "NP": ["977", "00", "(?:1\\d|9)\\d{9}|[1-9]\\d{7}", [8, 10, 11], [["(\\d)(\\d{7})", "$1-$2", ["1[2-6]"], "0$1"], ["(\\d{2})(\\d{6})", "$1-$2", ["1[01]|[2-8]|9(?:[1-59]|[67][2-6])"], "0$1"], ["(\\d{3})(\\d{7})", "$1-$2", ["9"]]], "0"], "NR": ["674", "00", "(?:222|444|(?:55|8\\d)\\d|666|777|999)\\d{4}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["[24-9]"]]]], "NU": ["683", "00", "(?:[4-7]|888\\d)\\d{3}", [4, 7], [["(\\d{3})(\\d{4})", "$1 $2", ["8"]]]], "NZ": ["64", "0(?:0|161)", "[1289]\\d{9}|50\\d{5}(?:\\d{2,3})?|[27-9]\\d{7,8}|(?:[34]\\d|6[0-35-9])\\d{6}|8\\d{4,6}", [5, 6, 7, 8, 9, 10], [["(\\d{2})(\\d{3,8})", "$1 $2", ["8[1-79]"], "0$1"], ["(\\d{3})(\\d{2})(\\d{2,3})", "$1 $2 $3", ["50[036-8]|8|90", "50(?:[0367]|88)|8|90"], "0$1"], ["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["24|[346]|7[2-57-9]|9[2-9]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["2(?:10|74)|[589]"], "0$1"], ["(\\d{2})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["1|2[028]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,5})", "$1 $2 $3", ["2(?:[169]|7[0-35-9])|7"], "0$1"]], "0", 0, 0, 0, 0, 0, 0, "00"], "OM": ["968", "00", "(?:1505|[279]\\d{3}|500)\\d{4}|800\\d{5,6}", [7, 8, 9], [["(\\d{3})(\\d{4,6})", "$1 $2", ["[58]"]], ["(\\d{2})(\\d{6})", "$1 $2", ["2"]], ["(\\d{4})(\\d{4})", "$1 $2", ["[179]"]]]], "PA": ["507", "00", "(?:00800|8\\d{3})\\d{6}|[68]\\d{7}|[1-57-9]\\d{6}", [7, 8, 10, 11], [["(\\d{3})(\\d{4})", "$1-$2", ["[1-57-9]"]], ["(\\d{4})(\\d{4})", "$1-$2", ["[68]"]], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["8"]]]], "PE": ["51", "00|19(?:1[124]|77|90)00", "(?:[14-8]|9\\d)\\d{7}", [8, 9], [["(\\d{3})(\\d{5})", "$1 $2", ["80"], "(0$1)"], ["(\\d)(\\d{7})", "$1 $2", ["1"], "(0$1)"], ["(\\d{2})(\\d{6})", "$1 $2", ["[4-8]"], "(0$1)"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["9"]]], "0", 0, 0, 0, 0, 0, 0, "00", " Anexo "], "PF": ["689", "00", "4\\d{5}(?:\\d{2})?|8\\d{7,8}", [6, 8, 9], [["(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["44"]], ["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["4|8[7-9]"]], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"]]]], "PG": ["675", "00|140[1-3]", "(?:180|[78]\\d{3})\\d{4}|(?:[2-589]\\d|64)\\d{5}", [7, 8], [["(\\d{3})(\\d{4})", "$1 $2", ["18|[2-69]|85"]], ["(\\d{4})(\\d{4})", "$1 $2", ["[78]"]]], 0, 0, 0, 0, 0, 0, 0, "00"], "PH": ["63", "00", "(?:[2-7]|9\\d)\\d{8}|2\\d{5}|(?:1800|8)\\d{7,9}", [6, 8, 9, 10, 11, 12, 13], [["(\\d)(\\d{5})", "$1 $2", ["2"], "(0$1)"], ["(\\d{4})(\\d{4,6})", "$1 $2", ["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2", "3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"], "(0$1)"], ["(\\d{5})(\\d{4})", "$1 $2", ["346|4(?:27|9[35])|883", "3469|4(?:279|9(?:30|56))|8834"], "(0$1)"], ["(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["2"], "(0$1)"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[3-7]|8[2-8]"], "(0$1)"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["[89]"], "0$1"], ["(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"]], ["(\\d{4})(\\d{1,2})(\\d{3})(\\d{4})", "$1 $2 $3 $4", ["1"]]], "0"], "PK": ["92", "00", "122\\d{6}|[24-8]\\d{10,11}|9(?:[013-9]\\d{8,10}|2(?:[01]\\d\\d|2(?:[06-8]\\d|1[01]))\\d{7})|(?:[2-8]\\d{3}|92(?:[0-7]\\d|8[1-9]))\\d{6}|[24-9]\\d{8}|[89]\\d{7}", [8, 9, 10, 11, 12], [["(\\d{3})(\\d{3})(\\d{2,7})", "$1 $2 $3", ["[89]0"], "0$1"], ["(\\d{4})(\\d{5})", "$1 $2", ["1"]], ["(\\d{3})(\\d{6,7})", "$1 $2", ["2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])", "9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]"], "(0$1)"], ["(\\d{2})(\\d{7,8})", "$1 $2", ["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"], "(0$1)"], ["(\\d{5})(\\d{5})", "$1 $2", ["58"], "(0$1)"], ["(\\d{3})(\\d{7})", "$1 $2", ["3"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91"], "(0$1)"], ["(\\d{3})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["[24-9]"], "(0$1)"]], "0"], "PL": ["48", "00", "(?:6|8\\d\\d)\\d{7}|[1-9]\\d{6}(?:\\d{2})?|[26]\\d{5}", [6, 7, 8, 9, 10], [["(\\d{5})", "$1", ["19"]], ["(\\d{3})(\\d{3})", "$1 $2", ["11|20|64"]], ["(\\d{2})(\\d{2})(\\d{3})", "$1 $2 $3", ["30|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1", "30|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19"]], ["(\\d{3})(\\d{2})(\\d{2,3})", "$1 $2 $3", ["64"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)"]], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["1[2-8]|[2-7]|8[1-79]|9[145]"]], ["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["8"]]]], "PM": ["508", "00", "[78]\\d{8}|[2-9]\\d{5}", [6, 9], [["(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["[2-9]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["7"]], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"], "0$1"]], "0"], "PR": ["1", "011", "(?:[589]\\d\\d|787)\\d{7}", [10], 0, "1", 0, 0, 0, 0, "787|939"], "PS": ["970", "00", "[2489]2\\d{6}|(?:1\\d|5)\\d{8}", [8, 9, 10], [["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["[2489]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["5"], "0$1"], ["(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1"]]], "0"], "PT": ["351", "00", "1693\\d{5}|(?:[26-9]\\d|30)\\d{7}", [9], [["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["2[12]"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["16|[236-9]"]]]], "PW": ["680", "01[12]", "(?:[24-8]\\d\\d|345|900)\\d{4}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["[2-9]"]]]], "PY": ["595", "00", "[36-8]\\d{5,8}|4\\d{6,8}|59\\d{6}|9\\d{5,10}|(?:2\\d|5[0-8])\\d{6,7}", [6, 7, 8, 9, 10, 11], [["(\\d{3})(\\d{3,6})", "$1 $2", ["[2-9]0"], "0$1"], ["(\\d{2})(\\d{5})", "$1 $2", ["3[289]|4[246-8]|61|7[1-3]|8[1-36]"], "(0$1)"], ["(\\d{3})(\\d{4,5})", "$1 $2", ["2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85"], "(0$1)"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]"], "(0$1)"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["87"]], ["(\\d{3})(\\d{6})", "$1 $2", ["9(?:[5-79]|8[1-7])"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2-8]"], "0$1"], ["(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["9"]]], "0"], "QA": ["974", "00", "800\\d{4}|(?:2|800)\\d{6}|(?:0080|[3-7])\\d{7}", [7, 8, 9, 11], [["(\\d{3})(\\d{4})", "$1 $2", ["2[136]|8"]], ["(\\d{4})(\\d{4})", "$1 $2", ["[3-7]"]]]], "RE": ["262", "00", "709\\d{6}|(?:26|[689]\\d)\\d{7}", [9], [["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[26-9]"], "0$1"]], "0", 0, 0, 0, 0, 0, [["2631[0-6]\\d{4}|26(?:2\\d|30|88)\\d{5}"], ["(?:69(?:2\\d\\d|3(?:[06][0-6]|1[0-3]|2[0-2]|3[0-39]|4\\d|5[0-5]|7[0-37]|8[0-8]|9[0-479]))|7092[0-3])\\d{4}"], ["80\\d{7}"], ["89[1-37-9]\\d{6}"], 0, 0, 0, 0, ["9(?:399[0-3]|479[0-6]|76(?:2[278]|3[0-37]))\\d{4}"], ["8(?:1[019]|2[0156]|84|90)\\d{6}"]]], "RO": ["40", "00", "(?:[236-8]\\d|90)\\d{7}|[23]\\d{5}", [6, 9], [["(\\d{3})(\\d{3})", "$1 $2", ["2[3-6]", "2[3-6]\\d9"], "0$1"], ["(\\d{2})(\\d{4})", "$1 $2", ["219|31"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[23]1"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[236-9]"], "0$1"]], "0", 0, 0, 0, 0, 0, 0, 0, " int "], "RS": ["381", "00", "38[02-9]\\d{6,9}|6\\d{7,9}|90\\d{4,8}|38\\d{5,6}|(?:7\\d\\d|800)\\d{3,9}|(?:[12]\\d|3[0-79])\\d{5,10}", [6, 7, 8, 9, 10, 11, 12], [["(\\d{3})(\\d{3,9})", "$1 $2", ["(?:2[389]|39)0|[7-9]"], "0$1"], ["(\\d{2})(\\d{5,10})", "$1 $2", ["[1-36]"], "0$1"]], "0"], "RU": ["7", "810", "8\\d{13}|[347-9]\\d{9}", [10, 14], [["(\\d{4})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["7(?:1[0-8]|2[1-9])", "7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:1[23]|[2-9]2))", "7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2"], "8 ($1)", 1], ["(\\d{5})(\\d)(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["7(?:1[0-68]|2[1-9])", "7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))", "7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]"], "8 ($1)", 1], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["7"], "8 ($1)", 1], ["(\\d{3})(\\d{3})(\\d{2})(\\d{2})", "$1 $2-$3-$4", ["[349]|8(?:[02-7]|1[1-8])"], "8 ($1)", 1], ["(\\d{4})(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["8"], "8 ($1)"]], "8", 0, 0, 0, 0, "[3489]", 0, "8~10"], "RW": ["250", "00", "(?:06|[27]\\d\\d|[89]00)\\d{6}", [8, 9], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["0"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["2"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[7-9]"], "0$1"]], "0"], "SA": ["966", "00", "(?:[15]\\d|800|92)\\d{7}", [9, 10], [["(\\d{4})(\\d{5})", "$1 $2", ["9"]], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["5"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["8"]]], "0"], "SB": ["677", "0[01]", "[6-9]\\d{6}|[1-6]\\d{4}", [5, 7], [["(\\d{2})(\\d{5})", "$1 $2", ["6[89]|7|8[4-9]|9(?:[1-8]|9[0-8])"]]]], "SC": ["248", "010|0[0-2]", "(?:[2489]\\d|64)\\d{5}", [7], [["(\\d)(\\d{3})(\\d{3})", "$1 $2 $3", ["[246]|9[57]"]]], 0, 0, 0, 0, 0, 0, 0, "00"], "SD": ["249", "00", "[19]\\d{8}", [9], [["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[19]"], "0$1"]], "0"], "SE": ["46", "00", "(?:[26]\\d\\d|9)\\d{9}|[1-9]\\d{8}|[1-689]\\d{7}|[1-4689]\\d{6}|2\\d{5}", [6, 7, 8, 9, 10, 12], [["(\\d{2})(\\d{2,3})(\\d{2})", "$1-$2 $3", ["20"], "0$1", 0, "$1 $2 $3"], ["(\\d{3})(\\d{4})", "$1-$2", ["9(?:00|39|44|9)"], "0$1", 0, "$1 $2"], ["(\\d{2})(\\d{3})(\\d{2})", "$1-$2 $3", ["[12][136]|3[356]|4[0246]|6[03]|90[1-9]"], "0$1", 0, "$1 $2 $3"], ["(\\d)(\\d{2,3})(\\d{2})(\\d{2})", "$1-$2 $3 $4", ["8"], "0$1", 0, "$1 $2 $3 $4"], ["(\\d{3})(\\d{2,3})(\\d{2})", "$1-$2 $3", ["1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"], "0$1", 0, "$1 $2 $3"], ["(\\d{3})(\\d{2,3})(\\d{3})", "$1-$2 $3", ["9(?:00|39|44)"], "0$1", 0, "$1 $2 $3"], ["(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})", "$1-$2 $3 $4", ["1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]"], "0$1", 0, "$1 $2 $3 $4"], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1-$2 $3 $4", ["10|7"], "0$1", 0, "$1 $2 $3 $4"], ["(\\d)(\\d{3})(\\d{3})(\\d{2})", "$1-$2 $3 $4", ["8"], "0$1", 0, "$1 $2 $3 $4"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1-$2 $3 $4", ["[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])"], "0$1", 0, "$1 $2 $3 $4"], ["(\\d{3})(\\d{2})(\\d{2})(\\d{3})", "$1-$2 $3 $4", ["9"], "0$1", 0, "$1 $2 $3 $4"], ["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1-$2 $3 $4 $5", ["[26]"], "0$1", 0, "$1 $2 $3 $4 $5"]], "0"], "SG": ["65", "0[0-3]\\d", "(?:(?:1\\d|8)\\d\\d|7000)\\d{7}|[3689]\\d{7}", [8, 10, 11], [["(\\d{4})(\\d{4})", "$1 $2", ["[369]|8(?:0[1-9]|[1-9])"]], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["8"]], ["(\\d{4})(\\d{4})(\\d{3})", "$1 $2 $3", ["7"]], ["(\\d{4})(\\d{3})(\\d{4})", "$1 $2 $3", ["1"]]]], "SH": ["290", "00", "(?:[256]\\d|8)\\d{3}", [4, 5], 0, 0, 0, 0, 0, 0, "[256]"], "SI": ["386", "00|10(?:22|66|88|99)", "[1-7]\\d{7}|8\\d{4,7}|90\\d{4,6}", [5, 6, 7, 8], [["(\\d{2})(\\d{3,6})", "$1 $2", ["8[09]|9"], "0$1"], ["(\\d{3})(\\d{5})", "$1 $2", ["59|8"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[37][01]|4[013]|51|6"], "0$1"], ["(\\d)(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[1-57]"], "(0$1)"]], "0", 0, 0, 0, 0, 0, 0, "00"], "SJ": ["47", "00", "0\\d{4}|(?:[489]\\d|79)\\d{6}", [5, 8], 0, 0, 0, 0, 0, 0, "79"], "SK": ["421", "00", "[2-689]\\d{8}|[2-59]\\d{6}|[2-5]\\d{5}", [6, 7, 9], [["(\\d)(\\d{2})(\\d{3,4})", "$1 $2 $3", ["21"], "0$1"], ["(\\d{2})(\\d{2})(\\d{2,3})", "$1 $2 $3", ["[3-5][1-8]1", "[3-5][1-8]1[67]"], "0$1"], ["(\\d)(\\d{3})(\\d{3})(\\d{2})", "$1 $2 $3 $4", ["2"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[689]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[3-5]"], "0$1"]], "0"], "SL": ["232", "00", "(?:[237-9]\\d|66)\\d{6}", [8], [["(\\d{2})(\\d{6})", "$1 $2", ["[236-9]"], "(0$1)"]], "0"], "SM": ["378", "00", "(?:0549|[5-7]\\d)\\d{6}", [8, 10], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[5-7]"]], ["(\\d{4})(\\d{6})", "$1 $2", ["0"]]], 0, 0, "([89]\\d{5})$", "0549$1"], "SN": ["221", "00", "(?:[378]\\d|93)\\d{7}", [9], [["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"]], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[379]"]]]], "SO": ["252", "00", "[346-9]\\d{8}|[12679]\\d{7}|[1-5]\\d{6}|[1348]\\d{5}", [6, 7, 8, 9], [["(\\d{2})(\\d{4})", "$1 $2", ["8[125]"]], ["(\\d{6})", "$1", ["[134]"]], ["(\\d)(\\d{6})", "$1 $2", ["[15]|2[0-79]|3[0-46-8]|4[0-7]"]], ["(\\d{2})(\\d{5,7})", "$1 $2", ["1|28|9[2-9]"]], ["(\\d)(\\d{7})", "$1 $2", ["[267]|904"]], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[346-9]"]]], "0"], "SR": ["597", "00", "(?:[2-5]|[6-9]\\d)\\d{5}", [6, 7], [["(\\d{2})(\\d{2})(\\d{2})", "$1-$2-$3", ["56"]], ["(\\d{3})(\\d{3})", "$1-$2", ["[2-5]"]], ["(\\d{3})(\\d{4})", "$1-$2", ["[6-9]"]]]], "SS": ["211", "00", "[19]\\d{8}", [9], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[19]"], "0$1"]], "0"], "ST": ["239", "00", "(?:22|9\\d)\\d{5}", [7], [["(\\d{3})(\\d{4})", "$1 $2", ["[29]"]]]], "SV": ["503", "00", "[25-7]\\d{7}|(?:80\\d|900)\\d{4}(?:\\d{4})?", [7, 8, 11], [["(\\d{3})(\\d{4})", "$1 $2", ["[89]"]], ["(\\d{4})(\\d{4})", "$1 $2", ["[25-7]"]], ["(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["[89]"]]]], "SX": ["1", "011", "7215\\d{6}|(?:[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "(5\\d{6})$|1", "721$1", 0, "721"], "SY": ["963", "00", "[1-359]\\d{8}|[1-5]\\d{7}", [8, 9], [["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[1-4]|5[1-3]"], "0$1", 1], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[59]"], "0$1", 1]], "0"], "SZ": ["268", "00", "0800\\d{4}|(?:[237]\\d|900)\\d{6}", [8, 9], [["(\\d{4})(\\d{4})", "$1 $2", ["[0237]"]], ["(\\d{5})(\\d{4})", "$1 $2", ["9"]]]], "TA": ["290", "00", "8\\d{3}", [4], 0, 0, 0, 0, 0, 0, "8"], "TC": ["1", "011", "(?:[58]\\d\\d|649|900)\\d{7}", [10], 0, "1", 0, "([2-479]\\d{6})$|1", "649$1", 0, "649"], "TD": ["235", "00|16", "(?:22|[3689]\\d|77)\\d{6}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[236-9]"]]], 0, 0, 0, 0, 0, 0, 0, "00"], "TG": ["228", "00", "[279]\\d{7}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[279]"]]]], "TH": ["66", "00[1-9]", "(?:001800|[2-57]|[689]\\d)\\d{7}|1\\d{7,9}", [8, 9, 10, 13], [["(\\d)(\\d{3})(\\d{4})", "$1 $2 $3", ["2"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[13-9]"], "0$1"], ["(\\d{4})(\\d{3})(\\d{3})", "$1 $2 $3", ["1"]]], "0"], "TJ": ["992", "810", "(?:[0-57-9]\\d|66)\\d{7}", [9], [["(\\d{6})(\\d)(\\d{2})", "$1 $2 $3", ["331", "3317"]], ["(\\d{3})(\\d{2})(\\d{4})", "$1 $2 $3", ["44[02-479]|[34]7"]], ["(\\d{4})(\\d)(\\d{4})", "$1 $2 $3", ["3(?:[1245]|3[12])"]], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["\\d"]]], 0, 0, 0, 0, 0, 0, 0, "8~10"], "TK": ["690", "00", "[2-47]\\d{3,6}", [4, 5, 6, 7]], "TL": ["670", "00", "7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}", [7, 8], [["(\\d{3})(\\d{4})", "$1 $2", ["[2-489]|70"]], ["(\\d{4})(\\d{4})", "$1 $2", ["7"]]]], "TM": ["993", "810", "[1-7]\\d{7}", [8], [["(\\d{2})(\\d{2})(\\d{2})(\\d{2})", "$1 $2-$3-$4", ["12"], "(8 $1)"], ["(\\d{3})(\\d)(\\d{2})(\\d{2})", "$1 $2-$3-$4", ["[1-5]"], "(8 $1)"], ["(\\d{2})(\\d{6})", "$1 $2", ["[67]"], "8 $1"]], "8", 0, 0, 0, 0, 0, 0, "8~10"], "TN": ["216", "00", "[2-57-9]\\d{7}", [8], [["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2-57-9]"]]]], "TO": ["676", "00", "(?:0800|(?:[5-8]\\d\\d|999)\\d)\\d{3}|[2-8]\\d{4}", [5, 7], [["(\\d{2})(\\d{3})", "$1-$2", ["[2-4]|50|6[09]|7[0-24-69]|8[05]"]], ["(\\d{4})(\\d{3})", "$1 $2", ["0"]], ["(\\d{3})(\\d{4})", "$1 $2", ["[5-9]"]]]], "TR": ["90", "00", "4\\d{6}|8\\d{11,12}|(?:[2-58]\\d\\d|900)\\d{7}", [7, 10, 12, 13], [["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["512|8[01589]|90"], "0$1", 1], ["(\\d{3})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["5[0-79]"], "0$1", 1], ["(\\d{3})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[24][1-8]|3[1-9]"], "(0$1)", 1], ["(\\d{3})(\\d{3})(\\d{6,7})", "$1 $2 $3", ["80"], "0$1", 1]], "0"], "TT": ["1", "011", "(?:[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([2-46-8]\\d{6})$|1", "868$1", 0, "868"], "TV": ["688", "00", "(?:2|7\\d\\d|90)\\d{4}", [5, 6, 7], [["(\\d{2})(\\d{3})", "$1 $2", ["2"]], ["(\\d{2})(\\d{4})", "$1 $2", ["90"]], ["(\\d{2})(\\d{5})", "$1 $2", ["7"]]]], "TW": ["886", "0(?:0[25-79]|19)", "[2-689]\\d{8}|7\\d{9,10}|[2-8]\\d{7}|2\\d{6}", [7, 8, 9, 10, 11], [["(\\d{2})(\\d)(\\d{4})", "$1 $2 $3", ["202"], "0$1"], ["(\\d{3})(\\d{5})", "$1 $2", ["826"], "0$1"], ["(\\d{3})(\\d{2})(\\d{3})", "$1 $2 $3", ["83"], "0$1"], ["(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["82"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[25]0|37|49|8[09]"], "0$1"], ["(\\d)(\\d{3,4})(\\d{4})", "$1 $2 $3", ["[23568]|4(?:0[02-48]|[1-478])|7[1-9]", "[23568]|4(?:0[2-48]|[1-478])|(?:400|7)[1-9]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[49]"], "0$1"], ["(\\d{2})(\\d{4})(\\d{4,5})", "$1 $2 $3", ["7"], "0$1"]], "0", 0, 0, 0, 0, 0, 0, 0, "#"], "TZ": ["255", "00[056]", "(?:[25-8]\\d|41|90)\\d{7}", [9], [["(\\d{3})(\\d{2})(\\d{4})", "$1 $2 $3", ["[89]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[24]"], "0$1"], ["(\\d{2})(\\d{7})", "$1 $2", ["5"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[67]"], "0$1"]], "0"], "UA": ["380", "00", "[89]\\d{9}|[3-9]\\d{8}", [9, 10], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]", "6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]"], "0$1"], ["(\\d{4})(\\d{5})", "$1 $2", ["3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])", "3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[3-7]|89|9[1-9]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[89]"], "0$1"]], "0", 0, 0, 0, 0, 0, 0, "0~0"], "UG": ["256", "00[057]", "800\\d{6}|(?:[29]0|[347]\\d)\\d{7}", [9], [["(\\d{4})(\\d{5})", "$1 $2", ["202", "2024"], "0$1"], ["(\\d{3})(\\d{6})", "$1 $2", ["[27-9]|4(?:6[45]|[7-9])"], "0$1"], ["(\\d{2})(\\d{7})", "$1 $2", ["[34]"], "0$1"]], "0"], "US": ["1", "011", "[2-9]\\d{9}|3\\d{6}", [10], [["(\\d{3})(\\d{4})", "$1-$2", ["310"], 0, 1], ["(\\d{3})(\\d{3})(\\d{4})", "($1) $2-$3", ["[2-9]"], 0, 1, "$1-$2-$3"]], "1", 0, 0, 0, 0, 0, [["(?:472[2-47-9]|983[2-57-9])\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[02469]|8[13])|3(?:0[1-57-9]|1[02-9]|2[013-79]|3[0-24679]|4[167]|5[0-3]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-269])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[0-2478]|4[0378]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[0168]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\d{6}"], [""], ["8(?:00|33|44|55|66|77|88)[2-9]\\d{6}"], ["900[2-9]\\d{6}"], ["52(?:3(?:[2-46-9][02-9]\\d|5(?:[02-46-9]\\d|5[0-46-9]))|4(?:[2-478][02-9]\\d|5(?:[034]\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\d)|9(?:[05-9]\\d|2[0-5]|49)))\\d{4}|52[34][2-9]1[02-9]\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\d{6}"]]], "UY": ["598", "0(?:0|1[3-9]\\d)", "0004\\d{2,9}|[1249]\\d{7}|2\\d{3,4}|(?:[49]\\d|80)\\d{5}", [4, 5, 6, 7, 8, 9, 10, 11, 12, 13], [["(\\d{4,5})", "$1", ["21"]], ["(\\d{3})(\\d{3,4})", "$1 $2", ["0"]], ["(\\d{3})(\\d{4})", "$1 $2", ["[49]0|8"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["9"], "0$1"], ["(\\d{4})(\\d{4})", "$1 $2", ["[124]"]], ["(\\d{3})(\\d{3})(\\d{2,4})", "$1 $2 $3", ["0"]], ["(\\d{3})(\\d{3})(\\d{3})(\\d{2,4})", "$1 $2 $3 $4", ["0"]]], "0", 0, 0, 0, 0, 0, 0, "00", " int. "], "UZ": ["998", "00", "(?:20|33|[5-9]\\d)\\d{7}", [9], [["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["[235-9]"]]]], "VA": ["39", "00", "0\\d{5,10}|3[0-8]\\d{7,10}|55\\d{8}|8\\d{5}(?:\\d{2,4})?|(?:1\\d|39)\\d{7,8}", [6, 7, 8, 9, 10, 11, 12], 0, 0, 0, 0, 0, 0, "06698"], "VC": ["1", "011", "(?:[58]\\d\\d|784|900)\\d{7}", [10], 0, "1", 0, "([2-7]\\d{6})$|1", "784$1", 0, "784"], "VE": ["58", "00", "[68]00\\d{7}|(?:[24]\\d|[59]0)\\d{8}", [10], [["(\\d{3})(\\d{7})", "$1-$2", ["[24-689]"], "0$1"]], "0"], "VG": ["1", "011", "(?:284|[58]\\d\\d|900)\\d{7}", [10], 0, "1", 0, "([2-578]\\d{6})$|1", "284$1", 0, "284"], "VI": ["1", "011", "[58]\\d{9}|(?:34|90)0\\d{7}", [10], 0, "1", 0, "([2-9]\\d{6})$|1", "340$1", 0, "340"], "VN": ["84", "00", "[12]\\d{9}|[135-9]\\d{8}|[16]\\d{6,7}|7\\d{6}", [7, 8, 9, 10], [["(\\d{4})(\\d{4,6})", "$1 $2", ["1(?:2[02]|[89])"], 0, 1], ["(\\d{2})(\\d{3})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["1[26]|6"], "0$1", 1], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[357-9]"], "0$1", 1], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["2[48]"], "0$1", 1], ["(\\d{3})(\\d{4})(\\d{3})", "$1 $2 $3", ["2"], "0$1", 1]], "0"], "VU": ["678", "00", "[57-9]\\d{6}|(?:[238]\\d|48)\\d{3}", [5, 7], [["(\\d{3})(\\d{4})", "$1 $2", ["[57-9]"]]]], "WF": ["681", "00", "(?:40|72|8\\d{4})\\d{4}|[89]\\d{5}", [6, 9], [["(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3", ["[47-9]"]], ["(\\d{3})(\\d{2})(\\d{2})(\\d{2})", "$1 $2 $3 $4", ["8"]]]], "WS": ["685", "0", "(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}", [5, 6, 7, 10], [["(\\d{5})", "$1", ["[2-5]|6[1-9]"]], ["(\\d{3})(\\d{3,7})", "$1 $2", ["[68]"]], ["(\\d{2})(\\d{5})", "$1 $2", ["7"]]]], "XK": ["383", "00", "2\\d{7,8}|3\\d{7,11}|(?:4\\d\\d|[89]00)\\d{5}", [8, 9, 10, 11, 12], [["(\\d{3})(\\d{5})", "$1 $2", ["[89]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3})", "$1 $2 $3", ["[2-4]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["2|39"], "0$1"], ["(\\d{2})(\\d{7,10})", "$1 $2", ["3"], "0$1"]], "0"], "YE": ["967", "00", "(?:1|7\\d)\\d{7}|[1-7]\\d{6}", [7, 8, 9], [["(\\d)(\\d{3})(\\d{3,4})", "$1 $2 $3", ["[1-6]|7(?:[24-6]|8[0-7])"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["7"], "0$1"]], "0"], "YT": ["262", "00", "(?:639\\d|7093)\\d{5}|(?:26|80|9\\d)\\d{7}", [9], 0, "0", 0, 0, 0, 0, 0, [["26(?:89\\d|9(?:0[0-467]|15|5[0-4]|6\\d|[78]0))\\d{4}"], ["(?:639(?:0[0-79]|1[019]|[267]\\d|3[09]|40|5[05-9]|9[04-79])|7093[5-7])\\d{4}"], ["80\\d{7}"], 0, 0, 0, 0, 0, ["9(?:(?:39|47)8[01]|769\\d)\\d{4}"]]], "ZA": ["27", "00", "[1-79]\\d{8}|8\\d{4,9}", [5, 6, 7, 8, 9, 10], [["(\\d{2})(\\d{3,4})", "$1 $2", ["8[1-4]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{2,3})", "$1 $2 $3", ["8[1-4]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["860"], "0$1"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["[1-9]"], "0$1"], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["8"], "0$1"]], "0"], "ZM": ["260", "00", "800\\d{6}|(?:21|[579]\\d|63)\\d{7}", [9], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[28]"], "0$1"], ["(\\d{2})(\\d{7})", "$1 $2", ["[579]"], "0$1"]], "0"], "ZW": ["263", "00", "2(?:[0-57-9]\\d{6,8}|6[0-24-9]\\d{6,7})|[38]\\d{9}|[35-8]\\d{8}|[3-6]\\d{7}|[1-689]\\d{6}|[1-3569]\\d{5}|[1356]\\d{4}", [5, 6, 7, 8, 9, 10], [["(\\d{3})(\\d{3,5})", "$1 $2", ["2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]"], "0$1"], ["(\\d)(\\d{3})(\\d{2,4})", "$1 $2 $3", ["[49]"], "0$1"], ["(\\d{3})(\\d{4})", "$1 $2", ["80"], "0$1"], ["(\\d{2})(\\d{7})", "$1 $2", ["24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2", "2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]"], "(0$1)"], ["(\\d{2})(\\d{3})(\\d{4})", "$1 $2 $3", ["7"], "0$1"], ["(\\d{3})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)", "2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)"], "0$1"], ["(\\d{4})(\\d{6})", "$1 $2", ["8"], "0$1"], ["(\\d{2})(\\d{3,5})", "$1 $2", ["1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]"], "0$1"], ["(\\d{2})(\\d{3})(\\d{3,4})", "$1 $2 $3", ["29[013-9]|39|54"], "0$1"], ["(\\d{4})(\\d{3,5})", "$1 $2", ["(?:25|54)8", "258|5483"], "0$1"]], "0"] }, "nonGeographic": { "800": ["800", 0, "(?:00|[1-9]\\d)\\d{6}", [8], [["(\\d{4})(\\d{4})", "$1 $2", ["\\d"]]], 0, 0, 0, 0, 0, 0, [0, 0, ["(?:00|[1-9]\\d)\\d{6}"]]], "808": ["808", 0, "[1-9]\\d{7}", [8], [["(\\d{4})(\\d{4})", "$1 $2", ["[1-9]"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 0, ["[1-9]\\d{7}"]]], "870": ["870", 0, "7\\d{11}|[235-7]\\d{8}", [9, 12], [["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["[235-7]"]]], 0, 0, 0, 0, 0, 0, [0, ["(?:[356]|774[45])\\d{8}|7[6-8]\\d{7}"], 0, 0, 0, 0, 0, 0, ["2\\d{8}", [9]]]], "878": ["878", 0, "10\\d{10}", [12], [["(\\d{2})(\\d{5})(\\d{5})", "$1 $2 $3", ["1"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, ["10\\d{10}"]]], "881": ["881", 0, "6\\d{9}|[0-36-9]\\d{8}", [9, 10], [["(\\d)(\\d{3})(\\d{5})", "$1 $2 $3", ["[0-37-9]"]], ["(\\d)(\\d{3})(\\d{5,6})", "$1 $2 $3", ["6"]]], 0, 0, 0, 0, 0, 0, [0, ["6\\d{9}|[0-36-9]\\d{8}"]]], "882": ["882", 0, "[13]\\d{6}(?:\\d{2,5})?|[19]\\d{7}|(?:[25]\\d\\d|4)\\d{7}(?:\\d{2})?", [7, 8, 9, 10, 11, 12], [["(\\d{2})(\\d{5})", "$1 $2", ["16|342"]], ["(\\d{2})(\\d{6})", "$1 $2", ["49"]], ["(\\d{2})(\\d{2})(\\d{4})", "$1 $2 $3", ["1[36]|9"]], ["(\\d{2})(\\d{4})(\\d{3})", "$1 $2 $3", ["3[23]"]], ["(\\d{2})(\\d{3,4})(\\d{4})", "$1 $2 $3", ["16"]], ["(\\d{2})(\\d{4})(\\d{4})", "$1 $2 $3", ["10|23|3(?:[15]|4[57])|4|5[12]"]], ["(\\d{3})(\\d{4})(\\d{4})", "$1 $2 $3", ["34"]], ["(\\d{2})(\\d{4,5})(\\d{5})", "$1 $2 $3", ["[1-35]"]]], 0, 0, 0, 0, 0, 0, [0, ["342\\d{4}|(?:337|49)\\d{6}|(?:3(?:2|47|7\\d{3})|5(?:0\\d{3}|2[0-2]))\\d{7}", [7, 8, 9, 10, 12]], 0, 0, 0, ["348[57]\\d{7}", [11]], 0, 0, ["1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\d{4}|6\\d{5,10})|(?:345\\d|9[89])\\d{6}|(?:10|2(?:3|85\\d)|3(?:[15]|[69]\\d\\d)|4[15-8]|51)\\d{8}"]]], "883": ["883", 0, "(?:[1-4]\\d|51)\\d{6,10}", [8, 9, 10, 11, 12], [["(\\d{3})(\\d{3})(\\d{2,8})", "$1 $2 $3", ["[14]|2[24-689]|3[02-689]|51[24-9]"]], ["(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3", ["510"]], ["(\\d{3})(\\d{3})(\\d{4})", "$1 $2 $3", ["21"]], ["(\\d{4})(\\d{4})(\\d{4})", "$1 $2 $3", ["51[13]"]], ["(\\d{3})(\\d{3})(\\d{3})(\\d{3})", "$1 $2 $3 $4", ["[235]"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, ["(?:2(?:00\\d\\d|10)|(?:370[1-9]|51\\d0)\\d)\\d{7}|51(?:00\\d{5}|[24-9]0\\d{4,7})|(?:1[0-79]|2[24-689]|3[02-689]|4[0-4])0\\d{5,9}"]]], "888": ["888", 0, "\\d{11}", [11], [["(\\d{3})(\\d{3})(\\d{5})", "$1 $2 $3"]], 0, 0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0, ["\\d{11}"]]], "979": ["979", 0, "[1359]\\d{8}", [9], [["(\\d)(\\d{4})(\\d{4})", "$1 $2 $3", ["[1359]"]]], 0, 0, 0, 0, 0, 0, [0, 0, 0, ["[1359]\\d{8}"]]] } };
|
|
10158
11279
|
|
|
10159
11280
|
// ../../node_modules/libphonenumber-js/min/exports/withMetadataArgument.js
|
|
10160
11281
|
function withMetadataArgument(func, _arguments) {
|
|
@@ -12563,7 +13684,7 @@ function requireCallerRole(args, flag) {
|
|
|
12563
13684
|
}
|
|
12564
13685
|
return role;
|
|
12565
13686
|
}
|
|
12566
|
-
var
|
|
13687
|
+
var COLUMNS26 = [
|
|
12567
13688
|
COL.id(),
|
|
12568
13689
|
{ header: "NUMBER", getValue: (item) => item.phoneNumber ?? item.number ?? "" },
|
|
12569
13690
|
{ header: "LABEL", getValue: (item) => item.label ?? item.name ?? "" },
|
|
@@ -12590,7 +13711,7 @@ var phoneNumbersDomain = {
|
|
|
12590
13711
|
entityName: "phone number",
|
|
12591
13712
|
listMethod: "getPhoneNumbers",
|
|
12592
13713
|
archiveMethod: "archivePhoneNumber",
|
|
12593
|
-
columns:
|
|
13714
|
+
columns: COLUMNS26
|
|
12594
13715
|
}),
|
|
12595
13716
|
{
|
|
12596
13717
|
path: ["phone-numbers", "get"],
|
|
@@ -12640,7 +13761,7 @@ ${PHONE_NUMBER_FIELD_REFERENCE}`,
|
|
|
12640
13761
|
);
|
|
12641
13762
|
const record = asPhoneRecord(result2);
|
|
12642
13763
|
const warnings = collectPhoneNumberWarnings(record);
|
|
12643
|
-
outputData([record], ctx,
|
|
13764
|
+
outputData([record], ctx, COLUMNS26);
|
|
12644
13765
|
if (warnings.length > 0) {
|
|
12645
13766
|
process.stderr.write("\nWarnings after create:\n");
|
|
12646
13767
|
for (const w of warnings) {
|
|
@@ -12672,7 +13793,7 @@ ${PHONE_NUMBER_FIELD_REFERENCE}`,
|
|
|
12672
13793
|
id,
|
|
12673
13794
|
data
|
|
12674
13795
|
);
|
|
12675
|
-
outputData([result2], ctx,
|
|
13796
|
+
outputData([result2], ctx, COLUMNS26);
|
|
12676
13797
|
} catch (err) {
|
|
12677
13798
|
return enrichPhoneNumberApiError(err);
|
|
12678
13799
|
}
|
|
@@ -12960,7 +14081,7 @@ ${formatRoutingSimulation(sim, phone)}
|
|
|
12960
14081
|
requiresWorkspace: true,
|
|
12961
14082
|
handler: async ({ ctx, workspace }) => {
|
|
12962
14083
|
const result2 = await requireAuth(ctx).apiClient.getAvailablePhoneNumbers(workspace);
|
|
12963
|
-
outputData(result2, ctx,
|
|
14084
|
+
outputData(result2, ctx, COLUMNS26);
|
|
12964
14085
|
}
|
|
12965
14086
|
},
|
|
12966
14087
|
{
|
|
@@ -12985,7 +14106,7 @@ ${formatRoutingSimulation(sim, phone)}
|
|
|
12985
14106
|
const id = requireNumberFrom(args, "phone-number-id", "id");
|
|
12986
14107
|
const providerPhoneUuid = requireString(args, "provider-phone-uuid");
|
|
12987
14108
|
const result2 = await auth.apiClient.linkPhoneNumber(workspace, id, providerPhoneUuid);
|
|
12988
|
-
outputData([result2], auth,
|
|
14109
|
+
outputData([result2], auth, COLUMNS26);
|
|
12989
14110
|
}
|
|
12990
14111
|
},
|
|
12991
14112
|
{
|
|
@@ -12998,7 +14119,7 @@ ${formatRoutingSimulation(sim, phone)}
|
|
|
12998
14119
|
workspace,
|
|
12999
14120
|
data
|
|
13000
14121
|
);
|
|
13001
|
-
outputData([result2], ctx,
|
|
14122
|
+
outputData([result2], ctx, COLUMNS26);
|
|
13002
14123
|
}
|
|
13003
14124
|
},
|
|
13004
14125
|
{
|
|
@@ -13145,7 +14266,7 @@ function normalizePronunciationUpdatePayload(data) {
|
|
|
13145
14266
|
}
|
|
13146
14267
|
|
|
13147
14268
|
// src/domains/pronunciations.ts
|
|
13148
|
-
var
|
|
14269
|
+
var COLUMNS27 = [
|
|
13149
14270
|
COL.id(),
|
|
13150
14271
|
{ header: "TERM", getValue: (item) => item.term ?? "" },
|
|
13151
14272
|
{ header: "RESPELLING", getValue: (item) => item.respelling ?? "" },
|
|
@@ -13167,7 +14288,7 @@ var pronunciationsDomain = {
|
|
|
13167
14288
|
const auth = requireAuth(ctx);
|
|
13168
14289
|
const orgUuid = await resolveOrgUuidFromWorkspace(auth.apiClient, workspace);
|
|
13169
14290
|
const result2 = await auth.apiClient.getPronunciationEntries(orgUuid);
|
|
13170
|
-
outputData(result2, ctx,
|
|
14291
|
+
outputData(result2, ctx, COLUMNS27);
|
|
13171
14292
|
}
|
|
13172
14293
|
},
|
|
13173
14294
|
{
|
|
@@ -13181,7 +14302,7 @@ var pronunciationsDomain = {
|
|
|
13181
14302
|
const orgUuid = await resolveOrgUuidFromWorkspace(auth.apiClient, workspace);
|
|
13182
14303
|
const payload = normalizePronunciationCreatePayload(data);
|
|
13183
14304
|
const result2 = await auth.apiClient.createPronunciationEntry(orgUuid, payload);
|
|
13184
|
-
outputSingle(result2, ctx,
|
|
14305
|
+
outputSingle(result2, ctx, COLUMNS27);
|
|
13185
14306
|
}
|
|
13186
14307
|
},
|
|
13187
14308
|
{
|
|
@@ -13199,7 +14320,7 @@ var pronunciationsDomain = {
|
|
|
13199
14320
|
requireNumber(args, "id"),
|
|
13200
14321
|
payload
|
|
13201
14322
|
);
|
|
13202
|
-
outputSingle(result2, ctx,
|
|
14323
|
+
outputSingle(result2, ctx, COLUMNS27);
|
|
13203
14324
|
}
|
|
13204
14325
|
},
|
|
13205
14326
|
{
|
|
@@ -13223,7 +14344,7 @@ var pronunciationsDomain = {
|
|
|
13223
14344
|
requiresWorkspace: true,
|
|
13224
14345
|
handler: async ({ ctx }) => {
|
|
13225
14346
|
const result2 = await requireAuth(ctx).apiClient.getMyPronunciations();
|
|
13226
|
-
outputData(result2, ctx,
|
|
14347
|
+
outputData(result2, ctx, COLUMNS27);
|
|
13227
14348
|
}
|
|
13228
14349
|
},
|
|
13229
14350
|
{
|
|
@@ -13234,7 +14355,7 @@ var pronunciationsDomain = {
|
|
|
13234
14355
|
handler: async ({ ctx, data }) => {
|
|
13235
14356
|
const payload = normalizePronunciationCreatePayload(data);
|
|
13236
14357
|
const result2 = await requireAuth(ctx).apiClient.createMyPronunciation(payload);
|
|
13237
|
-
outputSingle(result2, ctx,
|
|
14358
|
+
outputSingle(result2, ctx, COLUMNS27);
|
|
13238
14359
|
}
|
|
13239
14360
|
},
|
|
13240
14361
|
{
|
|
@@ -13532,7 +14653,7 @@ ${ROUTINE_FIELD_REFERENCE}`,
|
|
|
13532
14653
|
};
|
|
13533
14654
|
|
|
13534
14655
|
// src/domains/subscriptions.ts
|
|
13535
|
-
var
|
|
14656
|
+
var COLUMNS28 = [
|
|
13536
14657
|
COL.id(),
|
|
13537
14658
|
COL.status(),
|
|
13538
14659
|
{ header: "PLAN", getValue: (item) => item.planName ?? item.plan ?? "" },
|
|
@@ -13548,7 +14669,7 @@ var subscriptionsDomain = {
|
|
|
13548
14669
|
requiresWorkspace: false,
|
|
13549
14670
|
handler: async ({ ctx }) => {
|
|
13550
14671
|
const result2 = await requireAuth(ctx).apiClient.getSubscriptions();
|
|
13551
|
-
outputData(result2, ctx,
|
|
14672
|
+
outputData(result2, ctx, COLUMNS28);
|
|
13552
14673
|
}
|
|
13553
14674
|
},
|
|
13554
14675
|
{
|
|
@@ -13557,7 +14678,7 @@ var subscriptionsDomain = {
|
|
|
13557
14678
|
requiresWorkspace: true,
|
|
13558
14679
|
handler: async ({ ctx, workspace }) => {
|
|
13559
14680
|
const result2 = await requireAuth(ctx).apiClient.getWorkspaceSubscriptions(workspace);
|
|
13560
|
-
outputData(result2, ctx,
|
|
14681
|
+
outputData(result2, ctx, COLUMNS28);
|
|
13561
14682
|
}
|
|
13562
14683
|
},
|
|
13563
14684
|
{
|
|
@@ -13570,7 +14691,7 @@ var subscriptionsDomain = {
|
|
|
13570
14691
|
const result2 = await requireAuth(ctx).apiClient.cancelSubscription(
|
|
13571
14692
|
requireNumber(args, "id")
|
|
13572
14693
|
);
|
|
13573
|
-
outputSingle(result2, ctx,
|
|
14694
|
+
outputSingle(result2, ctx, COLUMNS28);
|
|
13574
14695
|
}
|
|
13575
14696
|
},
|
|
13576
14697
|
{
|
|
@@ -13582,7 +14703,7 @@ var subscriptionsDomain = {
|
|
|
13582
14703
|
const result2 = await requireAuth(ctx).apiClient.reactivateSubscription(
|
|
13583
14704
|
requireNumber(args, "id")
|
|
13584
14705
|
);
|
|
13585
|
-
outputSingle(result2, ctx,
|
|
14706
|
+
outputSingle(result2, ctx, COLUMNS28);
|
|
13586
14707
|
}
|
|
13587
14708
|
},
|
|
13588
14709
|
{
|
|
@@ -13596,7 +14717,7 @@ var subscriptionsDomain = {
|
|
|
13596
14717
|
requireNumber(args, "id"),
|
|
13597
14718
|
data
|
|
13598
14719
|
);
|
|
13599
|
-
outputSingle(result2, ctx,
|
|
14720
|
+
outputSingle(result2, ctx, COLUMNS28);
|
|
13600
14721
|
}
|
|
13601
14722
|
}
|
|
13602
14723
|
]
|
|
@@ -13850,7 +14971,7 @@ var supportDomain = {
|
|
|
13850
14971
|
};
|
|
13851
14972
|
|
|
13852
14973
|
// src/domains/supervisors.ts
|
|
13853
|
-
var
|
|
14974
|
+
var COLUMNS29 = [
|
|
13854
14975
|
COL.id(),
|
|
13855
14976
|
COL.name(),
|
|
13856
14977
|
{ header: "TYPE", getValue: (item) => item.type ?? "" },
|
|
@@ -13868,7 +14989,7 @@ var supervisorsDomain = {
|
|
|
13868
14989
|
createMethod: "createSupervisor",
|
|
13869
14990
|
updateMethod: "updateSupervisor",
|
|
13870
14991
|
deleteMethod: "deleteSupervisor",
|
|
13871
|
-
columns:
|
|
14992
|
+
columns: COLUMNS29
|
|
13872
14993
|
})
|
|
13873
14994
|
]
|
|
13874
14995
|
};
|
|
@@ -14256,7 +15377,7 @@ var widgetDomainsDomain = {
|
|
|
14256
15377
|
};
|
|
14257
15378
|
|
|
14258
15379
|
// src/domains/integrations/app-connections.ts
|
|
14259
|
-
var
|
|
15380
|
+
var COLUMNS30 = [
|
|
14260
15381
|
COL.id(),
|
|
14261
15382
|
COL.name(),
|
|
14262
15383
|
{ header: "TYPE", getValue: (item) => item.type ?? "" },
|
|
@@ -14297,7 +15418,7 @@ var appConnectionsDomain = {
|
|
|
14297
15418
|
requiresWorkspace: true,
|
|
14298
15419
|
handler: async ({ ctx, workspace }) => {
|
|
14299
15420
|
const result2 = await requireAuth(ctx).apiClient.listAvailableAppConnections(workspace);
|
|
14300
|
-
outputData(result2, ctx,
|
|
15421
|
+
outputData(result2, ctx, COLUMNS30);
|
|
14301
15422
|
}
|
|
14302
15423
|
},
|
|
14303
15424
|
{
|
|
@@ -14306,7 +15427,7 @@ var appConnectionsDomain = {
|
|
|
14306
15427
|
requiresWorkspace: true,
|
|
14307
15428
|
handler: async ({ ctx, workspace }) => {
|
|
14308
15429
|
const result2 = await requireAuth(ctx).apiClient.listAppConnections(workspace);
|
|
14309
|
-
outputData(result2, ctx,
|
|
15430
|
+
outputData(result2, ctx, COLUMNS30);
|
|
14310
15431
|
}
|
|
14311
15432
|
},
|
|
14312
15433
|
{
|
|
@@ -14330,7 +15451,7 @@ var appConnectionsDomain = {
|
|
|
14330
15451
|
const result2 = await requireAuth(ctx).apiClient.enablePlatformApp(workspace, {
|
|
14331
15452
|
slug: requireString(args, "slug")
|
|
14332
15453
|
});
|
|
14333
|
-
outputSingle(result2, ctx,
|
|
15454
|
+
outputSingle(result2, ctx, COLUMNS30);
|
|
14334
15455
|
}
|
|
14335
15456
|
},
|
|
14336
15457
|
{
|
|
@@ -14343,7 +15464,7 @@ var appConnectionsDomain = {
|
|
|
14343
15464
|
workspace,
|
|
14344
15465
|
requireString(args, "id")
|
|
14345
15466
|
);
|
|
14346
|
-
outputSingle(result2, ctx,
|
|
15467
|
+
outputSingle(result2, ctx, COLUMNS30);
|
|
14347
15468
|
}
|
|
14348
15469
|
},
|
|
14349
15470
|
{
|
|
@@ -14358,7 +15479,7 @@ var appConnectionsDomain = {
|
|
|
14358
15479
|
requireString(args, "id"),
|
|
14359
15480
|
data
|
|
14360
15481
|
);
|
|
14361
|
-
outputSingle(result2, ctx,
|
|
15482
|
+
outputSingle(result2, ctx, COLUMNS30);
|
|
14362
15483
|
}
|
|
14363
15484
|
},
|
|
14364
15485
|
{
|
|
@@ -14700,7 +15821,7 @@ var confluenceDomain = {
|
|
|
14700
15821
|
};
|
|
14701
15822
|
|
|
14702
15823
|
// src/domains/integrations/discord-bots.ts
|
|
14703
|
-
var
|
|
15824
|
+
var COLUMNS31 = [COL.id(), COL.name(), COL.status()];
|
|
14704
15825
|
var discordBotsDomain = {
|
|
14705
15826
|
name: "discord-bots",
|
|
14706
15827
|
description: "Manage Discord bot integrations",
|
|
@@ -14713,7 +15834,7 @@ var discordBotsDomain = {
|
|
|
14713
15834
|
createMethod: "createDiscordBot",
|
|
14714
15835
|
updateMethod: "updateDiscordBot",
|
|
14715
15836
|
deleteMethod: "deleteDiscordBot",
|
|
14716
|
-
columns:
|
|
15837
|
+
columns: COLUMNS31,
|
|
14717
15838
|
paginationSupport: "full"
|
|
14718
15839
|
}),
|
|
14719
15840
|
{
|
|
@@ -14773,7 +15894,7 @@ var discordBotsDomain = {
|
|
|
14773
15894
|
};
|
|
14774
15895
|
|
|
14775
15896
|
// src/domains/integrations/fhir-connections.ts
|
|
14776
|
-
var
|
|
15897
|
+
var COLUMNS32 = [
|
|
14777
15898
|
COL.id(),
|
|
14778
15899
|
COL.name(),
|
|
14779
15900
|
{ header: "URL", getValue: (item) => item.baseUrl ?? "" },
|
|
@@ -14791,7 +15912,7 @@ var fhirConnectionsDomain = {
|
|
|
14791
15912
|
createMethod: "createFhirConnection",
|
|
14792
15913
|
updateMethod: "updateFhirConnection",
|
|
14793
15914
|
deleteMethod: "deleteFhirConnection",
|
|
14794
|
-
columns:
|
|
15915
|
+
columns: COLUMNS32,
|
|
14795
15916
|
paginationSupport: "full"
|
|
14796
15917
|
}),
|
|
14797
15918
|
{
|
|
@@ -14811,7 +15932,7 @@ var fhirConnectionsDomain = {
|
|
|
14811
15932
|
};
|
|
14812
15933
|
|
|
14813
15934
|
// src/domains/integrations/patientsync.ts
|
|
14814
|
-
var
|
|
15935
|
+
var COLUMNS33 = [
|
|
14815
15936
|
{ header: "CONFIGURED", getValue: (i) => String(i.configured ?? false) },
|
|
14816
15937
|
{ header: "ENABLED", getValue: (i) => String(i.enabled ?? false) },
|
|
14817
15938
|
{ header: "HAS_KEY", getValue: (i) => String(i.hasApiKey ?? false) },
|
|
@@ -14840,7 +15961,7 @@ var patientSyncDomain = {
|
|
|
14840
15961
|
workspace,
|
|
14841
15962
|
data
|
|
14842
15963
|
);
|
|
14843
|
-
outputSingle(result2, ctx,
|
|
15964
|
+
outputSingle(result2, ctx, COLUMNS33);
|
|
14844
15965
|
}
|
|
14845
15966
|
},
|
|
14846
15967
|
{
|
|
@@ -14849,7 +15970,7 @@ var patientSyncDomain = {
|
|
|
14849
15970
|
requiresWorkspace: true,
|
|
14850
15971
|
handler: async ({ ctx, workspace }) => {
|
|
14851
15972
|
const result2 = await requireAuth(ctx).apiClient.getPatientSyncStatus(workspace);
|
|
14852
|
-
outputSingle(result2, ctx,
|
|
15973
|
+
outputSingle(result2, ctx, COLUMNS33);
|
|
14853
15974
|
}
|
|
14854
15975
|
},
|
|
14855
15976
|
{
|
|
@@ -15898,7 +17019,7 @@ var salesforceDomain = {
|
|
|
15898
17019
|
};
|
|
15899
17020
|
|
|
15900
17021
|
// src/domains/integrations/slack-apps.ts
|
|
15901
|
-
var
|
|
17022
|
+
var COLUMNS34 = [COL.id(), COL.name(), COL.status()];
|
|
15902
17023
|
function addSlackUrls(data, apiUrl, workspaceUuid) {
|
|
15903
17024
|
const base = `${apiUrl}/api/v2/w/${workspaceUuid}/app-connections/slack`;
|
|
15904
17025
|
return {
|
|
@@ -15921,7 +17042,7 @@ var slackAppsDomain = {
|
|
|
15921
17042
|
entityName: "Slack app",
|
|
15922
17043
|
listMethod: "getSlackApps",
|
|
15923
17044
|
deleteMethod: "deleteSlackApp",
|
|
15924
|
-
columns:
|
|
17045
|
+
columns: COLUMNS34,
|
|
15925
17046
|
paginationSupport: "full"
|
|
15926
17047
|
}),
|
|
15927
17048
|
{
|
|
@@ -16007,7 +17128,7 @@ var slackAppsDomain = {
|
|
|
16007
17128
|
};
|
|
16008
17129
|
|
|
16009
17130
|
// src/domains/integrations/teams-apps.ts
|
|
16010
|
-
var
|
|
17131
|
+
var COLUMNS35 = [COL.id(), COL.name(), COL.status()];
|
|
16011
17132
|
function addTeamsUrls(data, apiUrl, workspaceUuid) {
|
|
16012
17133
|
const base = `${apiUrl}/api/v2/w/${workspaceUuid}/app-connections/teams`;
|
|
16013
17134
|
return {
|
|
@@ -16028,7 +17149,7 @@ var teamsAppsDomain = {
|
|
|
16028
17149
|
entityName: "Teams app",
|
|
16029
17150
|
listMethod: "getTeamsApps",
|
|
16030
17151
|
deleteMethod: "deleteTeamsApp",
|
|
16031
|
-
columns:
|
|
17152
|
+
columns: COLUMNS35,
|
|
16032
17153
|
paginationSupport: "full"
|
|
16033
17154
|
}),
|
|
16034
17155
|
{
|
|
@@ -16134,6 +17255,7 @@ function registerPublicDomains(registry) {
|
|
|
16134
17255
|
registry.register(qualificationsDomain);
|
|
16135
17256
|
registry.register(queriesDomain);
|
|
16136
17257
|
registry.register(personasDomain);
|
|
17258
|
+
registry.register(metricsDomain);
|
|
16137
17259
|
registry.register(journeysDomain);
|
|
16138
17260
|
registry.register(abilitiesDomain);
|
|
16139
17261
|
registry.register(phoneNumbersDomain);
|
|
@@ -16141,11 +17263,12 @@ function registerPublicDomains(registry) {
|
|
|
16141
17263
|
registry.register(inboxesDomain);
|
|
16142
17264
|
registry.register(operatorGroupsDomain);
|
|
16143
17265
|
registry.register(accessGrantsDomain);
|
|
17266
|
+
registry.register(interventionRequestsDomain);
|
|
16144
17267
|
registry.register(notificationRulesDomain);
|
|
16145
17268
|
registry.register(supervisorsDomain);
|
|
16146
17269
|
registry.register(promptsDomain);
|
|
16147
|
-
registry.register(milestonesDomain);
|
|
16148
17270
|
registry.register(customToolkitsDomain);
|
|
17271
|
+
registry.register(toolkitsDomain);
|
|
16149
17272
|
registry.register(mcpServersDomain);
|
|
16150
17273
|
registry.register(apiKeysDomain);
|
|
16151
17274
|
registry.register(subscriptionsDomain);
|
|
@@ -16156,6 +17279,7 @@ function registerPublicDomains(registry) {
|
|
|
16156
17279
|
registry.register(featuresDomain);
|
|
16157
17280
|
registry.register(pronunciationsDomain);
|
|
16158
17281
|
registry.register(orgDomain);
|
|
17282
|
+
registry.register(orgLegalEntitiesDomain);
|
|
16159
17283
|
registry.register(orgPhoneNumbersDomain);
|
|
16160
17284
|
registry.register(authManageDomain);
|
|
16161
17285
|
registry.register(appsDomain);
|
|
@@ -16238,9 +17362,6 @@ function buildCliConciergeAppContext() {
|
|
|
16238
17362
|
};
|
|
16239
17363
|
}
|
|
16240
17364
|
|
|
16241
|
-
// src/lib/cli-hitl.ts
|
|
16242
|
-
import readline2 from "readline";
|
|
16243
|
-
|
|
16244
17365
|
// src/lib/local-files.ts
|
|
16245
17366
|
import fs from "fs";
|
|
16246
17367
|
import path2 from "path";
|
|
@@ -16344,11 +17465,739 @@ function isCliLocalFileInterrupt(value) {
|
|
|
16344
17465
|
return v.type === "cli_local_file" && typeof v.action === "string" && typeof v.path === "string";
|
|
16345
17466
|
}
|
|
16346
17467
|
|
|
17468
|
+
// src/lib/openui-terminal.ts
|
|
17469
|
+
import * as readline from "readline";
|
|
17470
|
+
|
|
17471
|
+
// src/lib/openui-parse.ts
|
|
17472
|
+
function markupIsInteractive(markup) {
|
|
17473
|
+
return markup.includes("ChoiceButton(") || markup.includes("Form(") || markup.includes("Input(") || markup.includes("TextArea(") || markup.includes("Select(");
|
|
17474
|
+
}
|
|
17475
|
+
function parseOpenUiMarkup(markup) {
|
|
17476
|
+
const bindings = parseBindings(markup);
|
|
17477
|
+
const choices = extractChoices(bindings);
|
|
17478
|
+
const form = extractForm(bindings);
|
|
17479
|
+
const display = extractDisplay(bindings);
|
|
17480
|
+
return { choices, form, display };
|
|
17481
|
+
}
|
|
17482
|
+
function parseBindings(markup) {
|
|
17483
|
+
const map = /* @__PURE__ */ new Map();
|
|
17484
|
+
const lines = markup.split(/\r?\n/);
|
|
17485
|
+
for (const rawLine of lines) {
|
|
17486
|
+
const line = rawLine.trim();
|
|
17487
|
+
if (!line || line.startsWith("//") || line.startsWith("#")) continue;
|
|
17488
|
+
const eq = line.indexOf("=");
|
|
17489
|
+
if (eq <= 0) continue;
|
|
17490
|
+
const name = line.slice(0, eq).trim();
|
|
17491
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(name)) continue;
|
|
17492
|
+
const expr = line.slice(eq + 1).trim();
|
|
17493
|
+
const call = parseComponentCall(expr);
|
|
17494
|
+
if (call) map.set(name, call);
|
|
17495
|
+
}
|
|
17496
|
+
return map;
|
|
17497
|
+
}
|
|
17498
|
+
function parseComponentCall(expr) {
|
|
17499
|
+
const open = expr.indexOf("(");
|
|
17500
|
+
if (open <= 0 || !expr.endsWith(")")) return null;
|
|
17501
|
+
const component = expr.slice(0, open).trim();
|
|
17502
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(component)) return null;
|
|
17503
|
+
const inner = expr.slice(open + 1, -1);
|
|
17504
|
+
try {
|
|
17505
|
+
return { component, args: parseArgList(inner) };
|
|
17506
|
+
} catch {
|
|
17507
|
+
return null;
|
|
17508
|
+
}
|
|
17509
|
+
}
|
|
17510
|
+
function parseArgList(src) {
|
|
17511
|
+
const args = [];
|
|
17512
|
+
let i = 0;
|
|
17513
|
+
const s = src.trim();
|
|
17514
|
+
if (!s) return args;
|
|
17515
|
+
while (i < s.length) {
|
|
17516
|
+
while (i < s.length && /[\s,]/.test(s[i])) i++;
|
|
17517
|
+
if (i >= s.length) break;
|
|
17518
|
+
const { value, next } = parseValue(s, i);
|
|
17519
|
+
args.push(value);
|
|
17520
|
+
i = next;
|
|
17521
|
+
}
|
|
17522
|
+
return args;
|
|
17523
|
+
}
|
|
17524
|
+
function parseValue(s, start) {
|
|
17525
|
+
let i = start;
|
|
17526
|
+
while (i < s.length && /\s/.test(s[i])) i++;
|
|
17527
|
+
if (i >= s.length) throw new Error("unexpected end");
|
|
17528
|
+
const ch = s[i];
|
|
17529
|
+
if (ch === '"') {
|
|
17530
|
+
return parseString(s, i);
|
|
17531
|
+
}
|
|
17532
|
+
if (ch === "[") {
|
|
17533
|
+
return parseArray(s, i);
|
|
17534
|
+
}
|
|
17535
|
+
if (ch === "{") {
|
|
17536
|
+
return parseObject(s, i);
|
|
17537
|
+
}
|
|
17538
|
+
let j = i;
|
|
17539
|
+
while (j < s.length && /[A-Za-z0-9_.+\-]/.test(s[j])) j++;
|
|
17540
|
+
const token = s.slice(i, j);
|
|
17541
|
+
if (!token) throw new Error(`unexpected char at ${i}`);
|
|
17542
|
+
const literals = {
|
|
17543
|
+
null: null,
|
|
17544
|
+
true: true,
|
|
17545
|
+
false: false
|
|
17546
|
+
};
|
|
17547
|
+
if (Object.prototype.hasOwnProperty.call(literals, token)) {
|
|
17548
|
+
return { value: literals[token], next: j };
|
|
17549
|
+
}
|
|
17550
|
+
if (/^-?\d+(\.\d+)?$/.test(token)) return { value: Number(token), next: j };
|
|
17551
|
+
return { value: { __ref: token }, next: j };
|
|
17552
|
+
}
|
|
17553
|
+
function parseString(s, start) {
|
|
17554
|
+
let i = start + 1;
|
|
17555
|
+
let out = "";
|
|
17556
|
+
while (i < s.length) {
|
|
17557
|
+
const ch = s[i];
|
|
17558
|
+
if (ch === "\\") {
|
|
17559
|
+
const next = s[i + 1];
|
|
17560
|
+
if (next === void 0) throw new Error("bad escape");
|
|
17561
|
+
if (next === "n") out += "\n";
|
|
17562
|
+
else if (next === "t") out += " ";
|
|
17563
|
+
else if (next === "r") out += "\r";
|
|
17564
|
+
else out += next;
|
|
17565
|
+
i += 2;
|
|
17566
|
+
continue;
|
|
17567
|
+
}
|
|
17568
|
+
if (ch === '"') return { value: out, next: i + 1 };
|
|
17569
|
+
out += ch;
|
|
17570
|
+
i++;
|
|
17571
|
+
}
|
|
17572
|
+
throw new Error("unterminated string");
|
|
17573
|
+
}
|
|
17574
|
+
function parseArray(s, start) {
|
|
17575
|
+
const items = [];
|
|
17576
|
+
let i = start + 1;
|
|
17577
|
+
while (i < s.length) {
|
|
17578
|
+
while (i < s.length && /[\s,]/.test(s[i])) i++;
|
|
17579
|
+
if (i < s.length && s[i] === "]") return { value: items, next: i + 1 };
|
|
17580
|
+
const { value, next } = parseValue(s, i);
|
|
17581
|
+
items.push(value);
|
|
17582
|
+
i = next;
|
|
17583
|
+
}
|
|
17584
|
+
throw new Error("unterminated array");
|
|
17585
|
+
}
|
|
17586
|
+
function parseObject(s, start) {
|
|
17587
|
+
const obj = {};
|
|
17588
|
+
let i = start + 1;
|
|
17589
|
+
while (i < s.length) {
|
|
17590
|
+
while (i < s.length && /[\s,]/.test(s[i])) i++;
|
|
17591
|
+
if (i < s.length && s[i] === "}") return { value: obj, next: i + 1 };
|
|
17592
|
+
let key;
|
|
17593
|
+
if (s[i] === '"') {
|
|
17594
|
+
const parsed = parseString(s, i);
|
|
17595
|
+
key = parsed.value;
|
|
17596
|
+
i = parsed.next;
|
|
17597
|
+
} else {
|
|
17598
|
+
let j = i;
|
|
17599
|
+
while (j < s.length && /[A-Za-z0-9_]/.test(s[j])) j++;
|
|
17600
|
+
key = s.slice(i, j);
|
|
17601
|
+
i = j;
|
|
17602
|
+
}
|
|
17603
|
+
while (i < s.length && /\s/.test(s[i])) i++;
|
|
17604
|
+
if (s[i] !== ":") throw new Error("expected : in object");
|
|
17605
|
+
i++;
|
|
17606
|
+
const { value, next } = parseValue(s, i);
|
|
17607
|
+
obj[key] = value;
|
|
17608
|
+
i = next;
|
|
17609
|
+
}
|
|
17610
|
+
throw new Error("unterminated object");
|
|
17611
|
+
}
|
|
17612
|
+
function asString(arg) {
|
|
17613
|
+
return typeof arg === "string" ? arg : void 0;
|
|
17614
|
+
}
|
|
17615
|
+
function asBool(arg, fallback) {
|
|
17616
|
+
return typeof arg === "boolean" ? arg : fallback;
|
|
17617
|
+
}
|
|
17618
|
+
function isRef(arg) {
|
|
17619
|
+
return !!arg && typeof arg === "object" && !Array.isArray(arg) && "__ref" in arg;
|
|
17620
|
+
}
|
|
17621
|
+
function extractChoices(bindings) {
|
|
17622
|
+
const choices = [];
|
|
17623
|
+
for (const binding of bindings.values()) {
|
|
17624
|
+
if (binding.component !== "ChoiceButton") continue;
|
|
17625
|
+
const [labelArg, descArg, variantArg, valueArg, terminalArg, auxArg] = binding.args;
|
|
17626
|
+
const label = asString(labelArg);
|
|
17627
|
+
if (!label) continue;
|
|
17628
|
+
const description = asString(descArg) || void 0;
|
|
17629
|
+
const variant = asString(variantArg) || void 0;
|
|
17630
|
+
const value = asString(valueArg) || label;
|
|
17631
|
+
const terminal = asBool(terminalArg, true);
|
|
17632
|
+
const auxiliaryBody = asString(auxArg) || void 0;
|
|
17633
|
+
choices.push({ label, description, variant, value, terminal, auxiliaryBody });
|
|
17634
|
+
}
|
|
17635
|
+
return choices;
|
|
17636
|
+
}
|
|
17637
|
+
function resolveBinding(bindings, arg) {
|
|
17638
|
+
if (!arg) return null;
|
|
17639
|
+
if (isRef(arg)) return bindings.get(arg.__ref) ?? null;
|
|
17640
|
+
return null;
|
|
17641
|
+
}
|
|
17642
|
+
function extractForm(bindings) {
|
|
17643
|
+
let formBinding = null;
|
|
17644
|
+
for (const binding of bindings.values()) {
|
|
17645
|
+
if (binding.component === "Form") {
|
|
17646
|
+
formBinding = binding;
|
|
17647
|
+
break;
|
|
17648
|
+
}
|
|
17649
|
+
}
|
|
17650
|
+
if (!formBinding) return null;
|
|
17651
|
+
const name = asString(formBinding.args[0]) || "form";
|
|
17652
|
+
const title = asString(formBinding.args[1]) || name;
|
|
17653
|
+
const description = asString(formBinding.args[2]) || void 0;
|
|
17654
|
+
const buttonsArg = formBinding.args[3];
|
|
17655
|
+
const fieldsArg = formBinding.args[4];
|
|
17656
|
+
const fields = [];
|
|
17657
|
+
if (Array.isArray(fieldsArg)) {
|
|
17658
|
+
for (const fieldRef of fieldsArg) {
|
|
17659
|
+
const field = resolveFormControl(bindings, fieldRef);
|
|
17660
|
+
if (field) fields.push(field);
|
|
17661
|
+
}
|
|
17662
|
+
}
|
|
17663
|
+
const buttons = resolveButtons(bindings, buttonsArg);
|
|
17664
|
+
return { name, title, description, fields, buttons };
|
|
17665
|
+
}
|
|
17666
|
+
function resolveFormControl(bindings, ref) {
|
|
17667
|
+
const control = resolveBinding(bindings, ref);
|
|
17668
|
+
if (!control || control.component !== "FormControl") return null;
|
|
17669
|
+
const label = asString(control.args[0]) || "Field";
|
|
17670
|
+
const inputBinding = resolveBinding(bindings, control.args[1]);
|
|
17671
|
+
const hint2 = asString(control.args[2]) || void 0;
|
|
17672
|
+
if (!inputBinding) return null;
|
|
17673
|
+
if (inputBinding.component === "Input") {
|
|
17674
|
+
const fieldName = asString(inputBinding.args[0]) || labelToName(label);
|
|
17675
|
+
const { placeholder, required } = splitPlaceholderAndRules(inputBinding.args, 1);
|
|
17676
|
+
return { name: fieldName, label, kind: "input", placeholder, required, hint: hint2 };
|
|
17677
|
+
}
|
|
17678
|
+
if (inputBinding.component === "TextArea") {
|
|
17679
|
+
const fieldName = asString(inputBinding.args[0]) || labelToName(label);
|
|
17680
|
+
const { placeholder, required } = splitPlaceholderAndRules(inputBinding.args, 1);
|
|
17681
|
+
return { name: fieldName, label, kind: "textarea", placeholder, required, hint: hint2 };
|
|
17682
|
+
}
|
|
17683
|
+
if (inputBinding.component === "Select") {
|
|
17684
|
+
const fieldName = asString(inputBinding.args[0]) || labelToName(label);
|
|
17685
|
+
const itemsArg = inputBinding.args[1];
|
|
17686
|
+
const { placeholder, required } = splitPlaceholderAndRules(inputBinding.args, 2);
|
|
17687
|
+
const options = [];
|
|
17688
|
+
if (Array.isArray(itemsArg)) {
|
|
17689
|
+
for (const itemRef of itemsArg) {
|
|
17690
|
+
const item = resolveBinding(bindings, itemRef);
|
|
17691
|
+
if (!item || item.component !== "SelectItem") continue;
|
|
17692
|
+
const value = asString(item.args[0]);
|
|
17693
|
+
const itemLabel = asString(item.args[1]) || value;
|
|
17694
|
+
if (value !== void 0 && itemLabel !== void 0) {
|
|
17695
|
+
options.push({ value, label: itemLabel });
|
|
17696
|
+
}
|
|
17697
|
+
}
|
|
17698
|
+
}
|
|
17699
|
+
return { name: fieldName, label, kind: "select", placeholder, required, options, hint: hint2 };
|
|
17700
|
+
}
|
|
17701
|
+
return null;
|
|
17702
|
+
}
|
|
17703
|
+
function isPlainObject(arg) {
|
|
17704
|
+
return !!arg && typeof arg === "object" && !Array.isArray(arg) && !("__ref" in arg);
|
|
17705
|
+
}
|
|
17706
|
+
function rulesRequired(arg) {
|
|
17707
|
+
if (!isPlainObject(arg)) return false;
|
|
17708
|
+
return arg["required"] === true;
|
|
17709
|
+
}
|
|
17710
|
+
function splitPlaceholderAndRules(args, start) {
|
|
17711
|
+
let placeholder;
|
|
17712
|
+
let required = false;
|
|
17713
|
+
for (let i = start; i < args.length; i++) {
|
|
17714
|
+
const arg = args[i];
|
|
17715
|
+
if (arg === null) {
|
|
17716
|
+
continue;
|
|
17717
|
+
}
|
|
17718
|
+
if (typeof arg === "string") {
|
|
17719
|
+
if (placeholder === void 0) placeholder = arg;
|
|
17720
|
+
continue;
|
|
17721
|
+
}
|
|
17722
|
+
if (isPlainObject(arg)) {
|
|
17723
|
+
required = rulesRequired(arg);
|
|
17724
|
+
break;
|
|
17725
|
+
}
|
|
17726
|
+
}
|
|
17727
|
+
return { placeholder, required };
|
|
17728
|
+
}
|
|
17729
|
+
function labelToName(label) {
|
|
17730
|
+
const name = label.replace(/\*/g, "").trim().toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_|_$/g, "");
|
|
17731
|
+
return name || "field";
|
|
17732
|
+
}
|
|
17733
|
+
function resolveButtons(bindings, arg) {
|
|
17734
|
+
const buttons = [];
|
|
17735
|
+
const collect = (b) => {
|
|
17736
|
+
if (!b) return;
|
|
17737
|
+
if (b.component === "Buttons") {
|
|
17738
|
+
const list = b.args[0];
|
|
17739
|
+
if (Array.isArray(list)) {
|
|
17740
|
+
for (const ref of list) collect(resolveBinding(bindings, ref));
|
|
17741
|
+
}
|
|
17742
|
+
return;
|
|
17743
|
+
}
|
|
17744
|
+
if (b.component === "Button") {
|
|
17745
|
+
const label = asString(b.args[0]);
|
|
17746
|
+
if (!label) return;
|
|
17747
|
+
const action = b.args[1];
|
|
17748
|
+
let actionType;
|
|
17749
|
+
let context;
|
|
17750
|
+
let url;
|
|
17751
|
+
if (action && typeof action === "object" && !Array.isArray(action) && !("__ref" in action)) {
|
|
17752
|
+
actionType = asString(action.type);
|
|
17753
|
+
context = asString(action.context);
|
|
17754
|
+
url = asString(action.url);
|
|
17755
|
+
}
|
|
17756
|
+
const variant = asString(b.args[2]);
|
|
17757
|
+
buttons.push({ label, variant, actionType, context, url });
|
|
17758
|
+
}
|
|
17759
|
+
};
|
|
17760
|
+
if (arg !== void 0 && isRef(arg)) {
|
|
17761
|
+
collect(resolveBinding(bindings, arg));
|
|
17762
|
+
}
|
|
17763
|
+
return buttons;
|
|
17764
|
+
}
|
|
17765
|
+
function extractDisplay(bindings) {
|
|
17766
|
+
const display = [];
|
|
17767
|
+
for (const binding of bindings.values()) {
|
|
17768
|
+
if (binding.component === "InfoCard") {
|
|
17769
|
+
const title = asString(binding.args[0]);
|
|
17770
|
+
const body = asString(binding.args[1]) ?? "";
|
|
17771
|
+
if (title) display.push({ kind: "info", title, body, icon: asString(binding.args[2]) });
|
|
17772
|
+
} else if (binding.component === "StatCard") {
|
|
17773
|
+
const label = asString(binding.args[0]);
|
|
17774
|
+
const value = asString(binding.args[1]);
|
|
17775
|
+
if (label && value !== void 0) {
|
|
17776
|
+
display.push({ kind: "stat", label, value, trend: asString(binding.args[2]) });
|
|
17777
|
+
}
|
|
17778
|
+
} else if (binding.component === "Table") {
|
|
17779
|
+
const columnsRaw = binding.args[0];
|
|
17780
|
+
const columns = typeof columnsRaw === "string" ? columnsRaw.split(",").map((c) => c.trim()).filter(Boolean) : Array.isArray(columnsRaw) ? columnsRaw.map((c) => String(c ?? "")) : [];
|
|
17781
|
+
const rows = [];
|
|
17782
|
+
const rowsArg = binding.args[1];
|
|
17783
|
+
if (Array.isArray(rowsArg)) {
|
|
17784
|
+
for (const rowRef of rowsArg) {
|
|
17785
|
+
const row = resolveBinding(bindings, rowRef);
|
|
17786
|
+
if (!row || row.component !== "TableRow") continue;
|
|
17787
|
+
const values = row.args[0];
|
|
17788
|
+
if (typeof values === "string") {
|
|
17789
|
+
rows.push(values.split(",").map((v) => v.trim()));
|
|
17790
|
+
} else if (Array.isArray(values)) {
|
|
17791
|
+
rows.push(values.map((v) => String(v ?? "")));
|
|
17792
|
+
}
|
|
17793
|
+
}
|
|
17794
|
+
}
|
|
17795
|
+
if (columns.length) display.push({ kind: "table", columns, rows });
|
|
17796
|
+
}
|
|
17797
|
+
}
|
|
17798
|
+
return display;
|
|
17799
|
+
}
|
|
17800
|
+
|
|
17801
|
+
// src/lib/openui-terminal.ts
|
|
17802
|
+
var CYAN = "\x1B[36m";
|
|
17803
|
+
var DIM = "\x1B[90m";
|
|
17804
|
+
var BOLD = "\x1B[1m";
|
|
17805
|
+
var RESET = "\x1B[0m";
|
|
17806
|
+
var INVERSE = "\x1B[7m";
|
|
17807
|
+
var GREEN = "\x1B[32m";
|
|
17808
|
+
async function promptOpenUiTerminal(payload) {
|
|
17809
|
+
const prompt = payload.userPrompt && payload.userPrompt.trim() || payload.description && payload.description.trim() || "Choose an option";
|
|
17810
|
+
const markup = payload.openuiMarkup ?? "";
|
|
17811
|
+
writeOut(`
|
|
17812
|
+
${CYAN}${BOLD}${prompt}${RESET}
|
|
17813
|
+
`);
|
|
17814
|
+
if (!markup.trim()) {
|
|
17815
|
+
return promptFreeform("Your reply");
|
|
17816
|
+
}
|
|
17817
|
+
const parsed = parseOpenUiMarkup(markup);
|
|
17818
|
+
renderDisplay(parsed.display);
|
|
17819
|
+
if (!process.stdin.isTTY) {
|
|
17820
|
+
writeParsedSummary(parsed, markup);
|
|
17821
|
+
return "";
|
|
17822
|
+
}
|
|
17823
|
+
if (parsed.form) {
|
|
17824
|
+
return promptForm(parsed.form, parsed.choices);
|
|
17825
|
+
}
|
|
17826
|
+
if (parsed.choices.length > 0) {
|
|
17827
|
+
return promptChoices(parsed.choices);
|
|
17828
|
+
}
|
|
17829
|
+
if (markupIsInteractive(markup)) {
|
|
17830
|
+
writeOut(`${DIM}(Could not fully parse UI controls \u2014 enter a value manually.)${RESET}
|
|
17831
|
+
`);
|
|
17832
|
+
writeOut(`${DIM}${markup.slice(0, 500)}${markup.length > 500 ? "\u2026" : ""}${RESET}
|
|
17833
|
+
`);
|
|
17834
|
+
}
|
|
17835
|
+
return promptFreeform("Your reply");
|
|
17836
|
+
}
|
|
17837
|
+
function writeOut(text) {
|
|
17838
|
+
process.stderr.write(text);
|
|
17839
|
+
}
|
|
17840
|
+
function writeParsedSummary(parsed, markup) {
|
|
17841
|
+
if (parsed.choices.length) {
|
|
17842
|
+
for (const [i, c] of parsed.choices.entries()) {
|
|
17843
|
+
writeOut(
|
|
17844
|
+
` ${i + 1}. ${c.label}${c.value !== c.label ? ` ${DIM}[${c.value}]${RESET}` : ""}
|
|
17845
|
+
`
|
|
17846
|
+
);
|
|
17847
|
+
}
|
|
17848
|
+
} else if (parsed.form) {
|
|
17849
|
+
writeOut(` Form: ${parsed.form.title}
|
|
17850
|
+
`);
|
|
17851
|
+
for (const f of parsed.form.fields) {
|
|
17852
|
+
writeOut(` - ${f.label} (${f.name})
|
|
17853
|
+
`);
|
|
17854
|
+
}
|
|
17855
|
+
} else {
|
|
17856
|
+
writeOut(`${markup.slice(0, 2e3)}
|
|
17857
|
+
`);
|
|
17858
|
+
}
|
|
17859
|
+
}
|
|
17860
|
+
function renderDisplay(display) {
|
|
17861
|
+
for (const item of display) {
|
|
17862
|
+
if (item.kind === "info") {
|
|
17863
|
+
writeOut(`
|
|
17864
|
+
${BOLD}${item.icon ? `${item.icon} ` : ""}${item.title}${RESET}
|
|
17865
|
+
`);
|
|
17866
|
+
if (item.body) {
|
|
17867
|
+
for (const line of item.body.split("\n")) {
|
|
17868
|
+
writeOut(` ${DIM}${line}${RESET}
|
|
17869
|
+
`);
|
|
17870
|
+
}
|
|
17871
|
+
}
|
|
17872
|
+
} else if (item.kind === "stat") {
|
|
17873
|
+
const trend = item.trend === "up" ? " \u2191" : item.trend === "down" ? " \u2193" : item.trend === "neutral" ? "" : "";
|
|
17874
|
+
writeOut(` ${DIM}${item.label}${RESET} ${BOLD}${item.value}${trend}${RESET}
|
|
17875
|
+
`);
|
|
17876
|
+
} else if (item.kind === "table") {
|
|
17877
|
+
writeOut("\n");
|
|
17878
|
+
writeOut(` ${item.columns.join(" | ")}
|
|
17879
|
+
`);
|
|
17880
|
+
writeOut(` ${item.columns.map((c) => "-".repeat(Math.max(3, c.length))).join("-+-")}
|
|
17881
|
+
`);
|
|
17882
|
+
for (const row of item.rows) {
|
|
17883
|
+
writeOut(` ${row.join(" | ")}
|
|
17884
|
+
`);
|
|
17885
|
+
}
|
|
17886
|
+
}
|
|
17887
|
+
}
|
|
17888
|
+
if (display.length) writeOut("\n");
|
|
17889
|
+
}
|
|
17890
|
+
var OpenUiTerminalAbortError = class extends Error {
|
|
17891
|
+
constructor() {
|
|
17892
|
+
super("UI choice cancelled");
|
|
17893
|
+
this.name = "OpenUiTerminalAbortError";
|
|
17894
|
+
}
|
|
17895
|
+
};
|
|
17896
|
+
async function promptChoices(choices) {
|
|
17897
|
+
for (; ; ) {
|
|
17898
|
+
const outcome = await selectChoice(choices);
|
|
17899
|
+
if (outcome.kind === "abort") {
|
|
17900
|
+
throw new OpenUiTerminalAbortError();
|
|
17901
|
+
}
|
|
17902
|
+
if (outcome.kind === "escape") {
|
|
17903
|
+
return promptFreeform("Your reply (or empty to cancel)");
|
|
17904
|
+
}
|
|
17905
|
+
const selected = outcome.choice;
|
|
17906
|
+
if (!selected.terminal) {
|
|
17907
|
+
const body = selected.auxiliaryBody?.trim() || selected.description?.trim() || `Selected "${selected.label}".`;
|
|
17908
|
+
writeOut(`
|
|
17909
|
+
${BOLD}${selected.label}${RESET}
|
|
17910
|
+
`);
|
|
17911
|
+
for (const line of body.split("\n")) {
|
|
17912
|
+
writeOut(` ${line}
|
|
17913
|
+
`);
|
|
17914
|
+
}
|
|
17915
|
+
writeOut(`
|
|
17916
|
+
${DIM}(Press Enter to return to choices)${RESET}
|
|
17917
|
+
`);
|
|
17918
|
+
await promptLine("");
|
|
17919
|
+
continue;
|
|
17920
|
+
}
|
|
17921
|
+
writeOut(`${GREEN}\u2713${RESET} ${selected.label}
|
|
17922
|
+
`);
|
|
17923
|
+
return selected.value;
|
|
17924
|
+
}
|
|
17925
|
+
}
|
|
17926
|
+
async function selectChoice(choices) {
|
|
17927
|
+
if (choices.length === 0) return { kind: "escape" };
|
|
17928
|
+
return new Promise((resolve) => {
|
|
17929
|
+
let index = 0;
|
|
17930
|
+
let linesDrawn = 0;
|
|
17931
|
+
const draw = () => {
|
|
17932
|
+
if (linesDrawn > 0) {
|
|
17933
|
+
process.stderr.write(`\x1B[${linesDrawn}A`);
|
|
17934
|
+
}
|
|
17935
|
+
const lines = [
|
|
17936
|
+
`${DIM}\u2191/\u2193 move \xB7 Enter select \xB7 1-${Math.min(choices.length, 9)} jump \xB7 Esc type freely${RESET}`,
|
|
17937
|
+
""
|
|
17938
|
+
];
|
|
17939
|
+
for (let i = 0; i < choices.length; i++) {
|
|
17940
|
+
const c = choices[i];
|
|
17941
|
+
const selected = i === index;
|
|
17942
|
+
const marker = selected ? ">" : " ";
|
|
17943
|
+
const num = String(i + 1).padStart(2);
|
|
17944
|
+
const descPlain = c.description ? ` \u2014 ${c.description}` : "";
|
|
17945
|
+
if (selected) {
|
|
17946
|
+
lines.push(`${INVERSE} ${marker} ${num}. ${c.label}${descPlain}${RESET}`);
|
|
17947
|
+
} else {
|
|
17948
|
+
const label = c.variant === "primary" ? `${BOLD}${c.label}${RESET}` : c.label;
|
|
17949
|
+
const desc = c.description ? `${DIM}${descPlain}${RESET}` : "";
|
|
17950
|
+
lines.push(` ${marker} ${num}. ${label}${desc}`);
|
|
17951
|
+
}
|
|
17952
|
+
}
|
|
17953
|
+
lines.push("");
|
|
17954
|
+
const block = lines.map((l) => `${l}\x1B[K`).join("\n") + "\n";
|
|
17955
|
+
process.stderr.write(block);
|
|
17956
|
+
linesDrawn = lines.length;
|
|
17957
|
+
};
|
|
17958
|
+
readline.emitKeypressEvents(process.stdin);
|
|
17959
|
+
const wasRaw = Boolean(process.stdin.isRaw);
|
|
17960
|
+
if (process.stdin.isTTY) process.stdin.setRawMode(true);
|
|
17961
|
+
process.stdin.resume();
|
|
17962
|
+
draw();
|
|
17963
|
+
let settled = false;
|
|
17964
|
+
const settle = (outcome) => {
|
|
17965
|
+
if (settled) return;
|
|
17966
|
+
settled = true;
|
|
17967
|
+
cleanup();
|
|
17968
|
+
resolve(outcome);
|
|
17969
|
+
};
|
|
17970
|
+
const cleanup = () => {
|
|
17971
|
+
process.stdin.removeListener("keypress", onKey);
|
|
17972
|
+
process.stdin.removeListener("close", onClose);
|
|
17973
|
+
if (process.stdin.isTTY) process.stdin.setRawMode(wasRaw);
|
|
17974
|
+
};
|
|
17975
|
+
const onClose = () => {
|
|
17976
|
+
settle({ kind: "abort" });
|
|
17977
|
+
};
|
|
17978
|
+
const onKey = (_str, key) => {
|
|
17979
|
+
if (!key) return;
|
|
17980
|
+
if (key.name === "up") {
|
|
17981
|
+
index = (index - 1 + choices.length) % choices.length;
|
|
17982
|
+
draw();
|
|
17983
|
+
return;
|
|
17984
|
+
}
|
|
17985
|
+
if (key.name === "down") {
|
|
17986
|
+
index = (index + 1) % choices.length;
|
|
17987
|
+
draw();
|
|
17988
|
+
return;
|
|
17989
|
+
}
|
|
17990
|
+
if (key.name === "return") {
|
|
17991
|
+
settle({ kind: "pick", choice: choices[index] });
|
|
17992
|
+
return;
|
|
17993
|
+
}
|
|
17994
|
+
if (key.ctrl && key.name === "c") {
|
|
17995
|
+
settle({ kind: "abort" });
|
|
17996
|
+
return;
|
|
17997
|
+
}
|
|
17998
|
+
if (key.name === "escape") {
|
|
17999
|
+
settle({ kind: "escape" });
|
|
18000
|
+
return;
|
|
18001
|
+
}
|
|
18002
|
+
if (_str && /^[0-9]$/.test(_str)) {
|
|
18003
|
+
const n = _str === "0" ? 10 : Number(_str);
|
|
18004
|
+
if (n >= 1 && n <= choices.length) {
|
|
18005
|
+
settle({ kind: "pick", choice: choices[n - 1] });
|
|
18006
|
+
}
|
|
18007
|
+
}
|
|
18008
|
+
};
|
|
18009
|
+
process.stdin.on("keypress", onKey);
|
|
18010
|
+
process.stdin.once("close", onClose);
|
|
18011
|
+
});
|
|
18012
|
+
}
|
|
18013
|
+
async function promptForm(form, extraChoices) {
|
|
18014
|
+
writeOut(`
|
|
18015
|
+
${BOLD}${form.title}${RESET}
|
|
18016
|
+
`);
|
|
18017
|
+
if (form.description) {
|
|
18018
|
+
writeOut(`${DIM}${form.description}${RESET}
|
|
18019
|
+
`);
|
|
18020
|
+
}
|
|
18021
|
+
writeOut("\n");
|
|
18022
|
+
const values = {};
|
|
18023
|
+
for (const field of form.fields) {
|
|
18024
|
+
const answer = await promptField(field);
|
|
18025
|
+
if (answer === null && field.required) {
|
|
18026
|
+
writeOut(`${DIM}Required field \u2014 try again.${RESET}
|
|
18027
|
+
`);
|
|
18028
|
+
const retry = await promptField(field);
|
|
18029
|
+
if (retry === null) {
|
|
18030
|
+
values[field.name] = "";
|
|
18031
|
+
} else {
|
|
18032
|
+
values[field.name] = retry;
|
|
18033
|
+
}
|
|
18034
|
+
} else {
|
|
18035
|
+
values[field.name] = answer ?? "";
|
|
18036
|
+
}
|
|
18037
|
+
}
|
|
18038
|
+
const actions = buildFormActions(form.buttons, extraChoices);
|
|
18039
|
+
if (actions.length === 0) {
|
|
18040
|
+
writeOut(`${GREEN}\u2713${RESET} Submitted
|
|
18041
|
+
`);
|
|
18042
|
+
return JSON.stringify(values);
|
|
18043
|
+
}
|
|
18044
|
+
for (; ; ) {
|
|
18045
|
+
writeOut(`
|
|
18046
|
+
${DIM}Select an action:${RESET}
|
|
18047
|
+
`);
|
|
18048
|
+
const outcome = await selectChoice(
|
|
18049
|
+
actions.map((a) => ({
|
|
18050
|
+
label: a.label,
|
|
18051
|
+
value: a.id,
|
|
18052
|
+
terminal: true,
|
|
18053
|
+
variant: a.variant,
|
|
18054
|
+
description: a.kind === "auxiliary" ? "show details (does not submit)" : void 0
|
|
18055
|
+
}))
|
|
18056
|
+
);
|
|
18057
|
+
if (outcome.kind === "abort") {
|
|
18058
|
+
throw new OpenUiTerminalAbortError();
|
|
18059
|
+
}
|
|
18060
|
+
if (outcome.kind === "escape") {
|
|
18061
|
+
writeOut(`${GREEN}\u2713${RESET} Submitted
|
|
18062
|
+
`);
|
|
18063
|
+
return JSON.stringify(values);
|
|
18064
|
+
}
|
|
18065
|
+
const action = actions.find((a) => a.id === outcome.choice.value);
|
|
18066
|
+
if (!action || action.kind === "submit") {
|
|
18067
|
+
writeOut(`${GREEN}\u2713${RESET} ${action?.label ?? "Submitted"}
|
|
18068
|
+
`);
|
|
18069
|
+
return JSON.stringify(values);
|
|
18070
|
+
}
|
|
18071
|
+
if (action.kind === "choice") {
|
|
18072
|
+
writeOut(`${GREEN}\u2713${RESET} ${action.label}
|
|
18073
|
+
`);
|
|
18074
|
+
return action.choiceValue ?? action.label;
|
|
18075
|
+
}
|
|
18076
|
+
if (action.kind === "cancel") {
|
|
18077
|
+
return "The user declined to make a selection.";
|
|
18078
|
+
}
|
|
18079
|
+
if (action.kind === "open_url" && action.url) {
|
|
18080
|
+
writeOut(`${DIM}Open URL: ${action.url}${RESET}
|
|
18081
|
+
`);
|
|
18082
|
+
continue;
|
|
18083
|
+
}
|
|
18084
|
+
if (action.kind === "auxiliary") {
|
|
18085
|
+
const body = action.context?.replace(/^auxiliary:/i, "").trim() || action.label;
|
|
18086
|
+
writeOut(`
|
|
18087
|
+
${BOLD}${action.label}${RESET}
|
|
18088
|
+
`);
|
|
18089
|
+
for (const line of body.split("\n")) writeOut(` ${line}
|
|
18090
|
+
`);
|
|
18091
|
+
writeOut(`
|
|
18092
|
+
${DIM}(Returning to actions \u2014 pick Submit when ready)${RESET}
|
|
18093
|
+
`);
|
|
18094
|
+
continue;
|
|
18095
|
+
}
|
|
18096
|
+
return JSON.stringify(values);
|
|
18097
|
+
}
|
|
18098
|
+
}
|
|
18099
|
+
function buildFormActions(buttons, extraChoices) {
|
|
18100
|
+
const actions = [];
|
|
18101
|
+
for (const [i, b] of buttons.entries()) {
|
|
18102
|
+
const ctx = b.context ?? "";
|
|
18103
|
+
if (b.actionType === "open_url" || b.url) {
|
|
18104
|
+
actions.push({
|
|
18105
|
+
id: `url:${i}`,
|
|
18106
|
+
label: b.label,
|
|
18107
|
+
kind: "open_url",
|
|
18108
|
+
variant: b.variant,
|
|
18109
|
+
url: b.url
|
|
18110
|
+
});
|
|
18111
|
+
continue;
|
|
18112
|
+
}
|
|
18113
|
+
if (/^(cancel|close|never\s*mind)$/i.test(b.label.trim()) || ctx === "cancel") {
|
|
18114
|
+
actions.push({ id: `cancel:${i}`, label: b.label, kind: "cancel", variant: b.variant });
|
|
18115
|
+
continue;
|
|
18116
|
+
}
|
|
18117
|
+
if (ctx.startsWith("auxiliary:") || /guidelines?|tell me more|learn more|help/i.test(b.label)) {
|
|
18118
|
+
actions.push({
|
|
18119
|
+
id: `aux:${i}`,
|
|
18120
|
+
label: b.label,
|
|
18121
|
+
kind: "auxiliary",
|
|
18122
|
+
variant: b.variant,
|
|
18123
|
+
context: ctx
|
|
18124
|
+
});
|
|
18125
|
+
continue;
|
|
18126
|
+
}
|
|
18127
|
+
actions.push({ id: `submit:${i}`, label: b.label, kind: "submit", variant: b.variant });
|
|
18128
|
+
}
|
|
18129
|
+
for (const [i, c] of extraChoices.entries()) {
|
|
18130
|
+
if (c.terminal === false) {
|
|
18131
|
+
actions.push({
|
|
18132
|
+
id: `aux-choice:${i}`,
|
|
18133
|
+
label: c.label,
|
|
18134
|
+
kind: "auxiliary",
|
|
18135
|
+
variant: c.variant,
|
|
18136
|
+
context: c.auxiliaryBody
|
|
18137
|
+
});
|
|
18138
|
+
} else {
|
|
18139
|
+
actions.push({
|
|
18140
|
+
id: `choice:${i}`,
|
|
18141
|
+
label: c.label,
|
|
18142
|
+
kind: "choice",
|
|
18143
|
+
variant: c.variant,
|
|
18144
|
+
choiceValue: c.value
|
|
18145
|
+
});
|
|
18146
|
+
}
|
|
18147
|
+
}
|
|
18148
|
+
return actions;
|
|
18149
|
+
}
|
|
18150
|
+
async function promptField(field) {
|
|
18151
|
+
const req = field.required ? " *" : "";
|
|
18152
|
+
const hint2 = field.hint ? ` ${DIM}(${field.hint})${RESET}` : "";
|
|
18153
|
+
if (field.kind === "select" && field.options && field.options.length > 0) {
|
|
18154
|
+
writeOut(`
|
|
18155
|
+
${BOLD}${field.label}${req}${RESET}${hint2}
|
|
18156
|
+
`);
|
|
18157
|
+
const outcome = await selectChoice(
|
|
18158
|
+
field.options.map((o) => ({
|
|
18159
|
+
label: o.label,
|
|
18160
|
+
value: o.value,
|
|
18161
|
+
terminal: true
|
|
18162
|
+
}))
|
|
18163
|
+
);
|
|
18164
|
+
if (outcome.kind === "abort") {
|
|
18165
|
+
throw new OpenUiTerminalAbortError();
|
|
18166
|
+
}
|
|
18167
|
+
if (outcome.kind === "escape") {
|
|
18168
|
+
if (!field.required) return "";
|
|
18169
|
+
return null;
|
|
18170
|
+
}
|
|
18171
|
+
return outcome.choice.value;
|
|
18172
|
+
}
|
|
18173
|
+
const placeholder = field.placeholder ? ` ${DIM}[${field.placeholder}]${RESET}` : "";
|
|
18174
|
+
const answer = await promptLine(`${field.label}${req}${placeholder}: `);
|
|
18175
|
+
if (!answer.trim()) {
|
|
18176
|
+
if (field.required) return null;
|
|
18177
|
+
return "";
|
|
18178
|
+
}
|
|
18179
|
+
return answer.trim();
|
|
18180
|
+
}
|
|
18181
|
+
function promptLine(question) {
|
|
18182
|
+
return new Promise((resolve) => {
|
|
18183
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
|
|
18184
|
+
rl.question(question, (answer) => {
|
|
18185
|
+
rl.close();
|
|
18186
|
+
resolve(answer);
|
|
18187
|
+
});
|
|
18188
|
+
});
|
|
18189
|
+
}
|
|
18190
|
+
async function promptFreeform(label) {
|
|
18191
|
+
if (!process.stdin.isTTY) return "";
|
|
18192
|
+
const answer = await promptLine(`${label}: `);
|
|
18193
|
+
return answer.trim();
|
|
18194
|
+
}
|
|
18195
|
+
|
|
16347
18196
|
// src/lib/trusted-dirs.ts
|
|
16348
18197
|
import fs2 from "fs";
|
|
16349
18198
|
import os from "os";
|
|
16350
18199
|
import path3 from "path";
|
|
16351
|
-
import
|
|
18200
|
+
import readline2 from "readline";
|
|
16352
18201
|
var STORE_VERSION = 1;
|
|
16353
18202
|
function storePath() {
|
|
16354
18203
|
const base = process.env.XDG_CONFIG_HOME ?? (process.platform === "win32" ? path3.join(process.env.APPDATA ?? os.homedir(), "gravityrail") : path3.join(os.homedir(), ".config", "gravityrail"));
|
|
@@ -16378,7 +18227,7 @@ function isDirectoryTrusted(dirPath, opts) {
|
|
|
16378
18227
|
return store.always.includes(resolved);
|
|
16379
18228
|
}
|
|
16380
18229
|
async function promptTrustInteractive(dirPath) {
|
|
16381
|
-
const rl =
|
|
18230
|
+
const rl = readline2.createInterface({ input: process.stdin, output: process.stderr });
|
|
16382
18231
|
const question = (q) => new Promise((resolve) => rl.question(q, resolve));
|
|
16383
18232
|
process.stderr.write(
|
|
16384
18233
|
`
|
|
@@ -16500,31 +18349,33 @@ async function handleCliLocalFile(interrupt, opts) {
|
|
|
16500
18349
|
resumeInterruptId: interrupt.interruptId
|
|
16501
18350
|
};
|
|
16502
18351
|
}
|
|
16503
|
-
|
|
16504
|
-
const
|
|
16505
|
-
|
|
16506
|
-
|
|
16507
|
-
${prompt}
|
|
16508
|
-
`);
|
|
16509
|
-
if (markup) {
|
|
16510
|
-
process.stderr.write(`${markup.slice(0, 2e3)}
|
|
16511
|
-
`);
|
|
18352
|
+
function stringField(payload, ...keys) {
|
|
18353
|
+
for (const key of keys) {
|
|
18354
|
+
const v = payload[key];
|
|
18355
|
+
if (typeof v === "string" && v.length > 0) return v;
|
|
16512
18356
|
}
|
|
16513
|
-
|
|
18357
|
+
return void 0;
|
|
18358
|
+
}
|
|
18359
|
+
async function handleUIChoiceTerminal(payload) {
|
|
18360
|
+
try {
|
|
18361
|
+
const resumeValue = await promptOpenUiTerminal({
|
|
18362
|
+
userPrompt: stringField(payload, "userPrompt", "user_prompt"),
|
|
18363
|
+
description: stringField(payload, "description"),
|
|
18364
|
+
openuiMarkup: stringField(payload, "openuiMarkup", "openui_markup")
|
|
18365
|
+
});
|
|
16514
18366
|
return {
|
|
16515
|
-
resumeValue
|
|
16516
|
-
resumeInterruptId:
|
|
18367
|
+
resumeValue,
|
|
18368
|
+
resumeInterruptId: stringField(payload, "interruptId", "interrupt_id")
|
|
16517
18369
|
};
|
|
18370
|
+
} catch (err) {
|
|
18371
|
+
if (err instanceof OpenUiTerminalAbortError) {
|
|
18372
|
+
return {
|
|
18373
|
+
resumeValue: "The user declined to make a selection.",
|
|
18374
|
+
resumeInterruptId: stringField(payload, "interruptId", "interrupt_id")
|
|
18375
|
+
};
|
|
18376
|
+
}
|
|
18377
|
+
throw err;
|
|
16518
18378
|
}
|
|
16519
|
-
const rl = readline2.createInterface({ input: process.stdin, output: process.stderr });
|
|
16520
|
-
const answer = await new Promise((resolve) => {
|
|
16521
|
-
rl.question("Your choice (value): ", resolve);
|
|
16522
|
-
});
|
|
16523
|
-
rl.close();
|
|
16524
|
-
return {
|
|
16525
|
-
resumeValue: answer.trim(),
|
|
16526
|
-
resumeInterruptId: typeof payload.interruptId === "string" ? payload.interruptId : void 0
|
|
16527
|
-
};
|
|
16528
18379
|
}
|
|
16529
18380
|
|
|
16530
18381
|
// src/lib/concierge-agui-loop.ts
|
|
@@ -16903,21 +18754,21 @@ var SHOW_CURSOR = `${CSI}?25h`;
|
|
|
16903
18754
|
var ALT_SCREEN_ON = `${CSI}?1049h`;
|
|
16904
18755
|
var ALT_SCREEN_OFF = `${CSI}?1049l`;
|
|
16905
18756
|
var CLEAR_EOL = `${CSI}K`;
|
|
16906
|
-
var
|
|
18757
|
+
var RESET2 = `${CSI}0m`;
|
|
16907
18758
|
var MOUSE_ON = `${CSI}?1000h${CSI}?1006h`;
|
|
16908
18759
|
var MOUSE_OFF = `${CSI}?1000l${CSI}?1006l`;
|
|
16909
18760
|
var BRACKETED_PASTE_ON = `${CSI}?2004h`;
|
|
16910
18761
|
var BRACKETED_PASTE_OFF = `${CSI}?2004l`;
|
|
16911
18762
|
var BLUE = `${CSI}34m`;
|
|
16912
|
-
var
|
|
18763
|
+
var GREEN2 = `${CSI}32m`;
|
|
16913
18764
|
var GRAY = `${CSI}90m`;
|
|
16914
18765
|
var YELLOW = `${CSI}33m`;
|
|
16915
18766
|
var ORANGE = `${CSI}38;5;208m`;
|
|
16916
18767
|
var LIGHT_BLUE = `${CSI}38;5;117m`;
|
|
16917
|
-
var
|
|
18768
|
+
var DIM2 = `${CSI}2m`;
|
|
16918
18769
|
var DIM_ITALIC_GRAY = `${CSI}2;3;90m`;
|
|
16919
18770
|
var RED = `${CSI}31m`;
|
|
16920
|
-
var
|
|
18771
|
+
var CYAN2 = `${CSI}36m`;
|
|
16921
18772
|
var MAX_INPUT_ROWS = 6;
|
|
16922
18773
|
var INPUT_LABEL = "You: ";
|
|
16923
18774
|
var INPUT_LABEL_WIDTH = 5;
|
|
@@ -17491,7 +19342,7 @@ var ChatTUI = class {
|
|
|
17491
19342
|
CLEAR_EOL,
|
|
17492
19343
|
// clear to end handles rest, but we need to position divider
|
|
17493
19344
|
moveTo(msgTop + i, divCol),
|
|
17494
|
-
`${
|
|
19345
|
+
`${DIM2}\u2502${RESET2}`,
|
|
17495
19346
|
debugLine
|
|
17496
19347
|
);
|
|
17497
19348
|
buf.push(CLEAR_EOL);
|
|
@@ -17505,7 +19356,7 @@ var ChatTUI = class {
|
|
|
17505
19356
|
for (let i = 0; i < inputRows; i++) {
|
|
17506
19357
|
const row = startRow + i;
|
|
17507
19358
|
const line = inputLines[i] ?? "";
|
|
17508
|
-
const prefix = i === 0 ? `${BLUE}${INPUT_LABEL}${
|
|
19359
|
+
const prefix = i === 0 ? `${BLUE}${INPUT_LABEL}${RESET2} ` : " ".repeat(INPUT_LABEL_WIDTH);
|
|
17509
19360
|
buf.push(moveTo(row, 1), prefix, line, CLEAR_EOL);
|
|
17510
19361
|
}
|
|
17511
19362
|
}
|
|
@@ -17528,27 +19379,27 @@ var ChatTUI = class {
|
|
|
17528
19379
|
buildTitleBar() {
|
|
17529
19380
|
const parts = [];
|
|
17530
19381
|
if (this.options.title) {
|
|
17531
|
-
parts.push(`${
|
|
19382
|
+
parts.push(`${CYAN2}${this.options.title}${RESET2}`);
|
|
17532
19383
|
}
|
|
17533
19384
|
if (this.options.subtitle) {
|
|
17534
|
-
parts.push(`${
|
|
19385
|
+
parts.push(`${DIM2}${this.options.subtitle}${RESET2}`);
|
|
17535
19386
|
}
|
|
17536
19387
|
let status = "";
|
|
17537
19388
|
switch (this.runState) {
|
|
17538
19389
|
case "thinking":
|
|
17539
|
-
status = `${YELLOW}Thinking\u2026${
|
|
19390
|
+
status = `${YELLOW}Thinking\u2026${RESET2}`;
|
|
17540
19391
|
break;
|
|
17541
19392
|
case "tool_running":
|
|
17542
|
-
status = `${YELLOW}Running ${this.activeToolName}\u2026${
|
|
19393
|
+
status = `${YELLOW}Running ${this.activeToolName}\u2026${RESET2}`;
|
|
17543
19394
|
break;
|
|
17544
19395
|
case "streaming":
|
|
17545
|
-
status = `${
|
|
19396
|
+
status = `${GREEN2}Writing\u2026${RESET2}`;
|
|
17546
19397
|
break;
|
|
17547
19398
|
default:
|
|
17548
19399
|
break;
|
|
17549
19400
|
}
|
|
17550
19401
|
if (status) parts.push(status);
|
|
17551
|
-
const line = parts.join(` ${
|
|
19402
|
+
const line = parts.join(` ${DIM2}|${RESET2} `);
|
|
17552
19403
|
return truncateAnsi(line, this.cols);
|
|
17553
19404
|
}
|
|
17554
19405
|
// ─── Separator ────────────────────────────────────────────────────
|
|
@@ -17567,13 +19418,13 @@ var ChatTUI = class {
|
|
|
17567
19418
|
hints.push("Enter send");
|
|
17568
19419
|
const lineWidth = Math.min(this.cols, 60);
|
|
17569
19420
|
if (!hints.length) {
|
|
17570
|
-
return `${GRAY}${"\u2500".repeat(lineWidth)}${
|
|
19421
|
+
return `${GRAY}${"\u2500".repeat(lineWidth)}${RESET2}`;
|
|
17571
19422
|
}
|
|
17572
19423
|
const hintStr = ` ${hints.join(" ")} `;
|
|
17573
19424
|
const dashes = Math.max(0, lineWidth - hintStr.length);
|
|
17574
19425
|
const left = Math.max(2, Math.floor(dashes / 2));
|
|
17575
19426
|
const right = Math.max(2, dashes - left);
|
|
17576
|
-
return `${GRAY}${"\u2500".repeat(left)}${hintStr}${"\u2500".repeat(right)}${
|
|
19427
|
+
return `${GRAY}${"\u2500".repeat(left)}${hintStr}${"\u2500".repeat(right)}${RESET2}`;
|
|
17577
19428
|
}
|
|
17578
19429
|
// ─── Chat display line building ───────────────────────────────────
|
|
17579
19430
|
buildDisplayLines() {
|
|
@@ -17597,7 +19448,7 @@ var ChatTUI = class {
|
|
|
17597
19448
|
appendToolCallLines(lines, tc, width) {
|
|
17598
19449
|
const status = tc.done ? "\u2713" : "\u2026";
|
|
17599
19450
|
const verb = tc.done ? "Called" : "Calling";
|
|
17600
|
-
const summary = ` ${tc.done ?
|
|
19451
|
+
const summary = ` ${tc.done ? GREEN2 : YELLOW}${status}${RESET2} ${GRAY}${verb} ${tc.name}${RESET2}`;
|
|
17601
19452
|
if (!this.expandDetails) {
|
|
17602
19453
|
lines.push(summary);
|
|
17603
19454
|
return;
|
|
@@ -17612,21 +19463,21 @@ var ChatTUI = class {
|
|
|
17612
19463
|
const indent = " ";
|
|
17613
19464
|
for (const argLine of formatted.split("\n")) {
|
|
17614
19465
|
for (const wl of this.wrapText(argLine, width - indent.length)) {
|
|
17615
|
-
lines.push(`${indent}${GRAY}${wl}${
|
|
19466
|
+
lines.push(`${indent}${GRAY}${wl}${RESET2}`);
|
|
17616
19467
|
}
|
|
17617
19468
|
}
|
|
17618
19469
|
}
|
|
17619
19470
|
}
|
|
17620
19471
|
appendToolResultLines(lines, tr, width) {
|
|
17621
|
-
const mark = tr.failed ? `${RED}\u2717${
|
|
19472
|
+
const mark = tr.failed ? `${RED}\u2717${RESET2}` : `${GREEN2}\u2713${RESET2}`;
|
|
17622
19473
|
if (!this.expandDetails) {
|
|
17623
19474
|
const maxLen = width - 12;
|
|
17624
19475
|
const preview = tr.content.replace(/\n/g, " ").slice(0, maxLen);
|
|
17625
19476
|
const truncated = preview.length < tr.content.length ? "..." : "";
|
|
17626
|
-
lines.push(` ${mark} ${GRAY}${tr.toolName}: ${preview}${truncated}${
|
|
19477
|
+
lines.push(` ${mark} ${GRAY}${tr.toolName}: ${preview}${truncated}${RESET2}`);
|
|
17627
19478
|
return;
|
|
17628
19479
|
}
|
|
17629
|
-
lines.push(` ${mark} ${GRAY}${tr.toolName} result:${
|
|
19480
|
+
lines.push(` ${mark} ${GRAY}${tr.toolName} result:${RESET2}`);
|
|
17630
19481
|
let formatted = tr.content;
|
|
17631
19482
|
try {
|
|
17632
19483
|
formatted = JSON.stringify(JSON.parse(tr.content), null, 2);
|
|
@@ -17635,7 +19486,7 @@ var ChatTUI = class {
|
|
|
17635
19486
|
const indent = " ";
|
|
17636
19487
|
for (const resultLine of formatted.split("\n")) {
|
|
17637
19488
|
for (const wl of this.wrapText(resultLine, width - indent.length)) {
|
|
17638
|
-
lines.push(`${indent}${GRAY}${wl}${
|
|
19489
|
+
lines.push(`${indent}${GRAY}${wl}${RESET2}`);
|
|
17639
19490
|
}
|
|
17640
19491
|
}
|
|
17641
19492
|
}
|
|
@@ -17643,13 +19494,13 @@ var ChatTUI = class {
|
|
|
17643
19494
|
if (msg.role === "system") {
|
|
17644
19495
|
for (const para of msg.content.split("\n")) {
|
|
17645
19496
|
for (const wl of this.wrapText(para, width - 2)) {
|
|
17646
|
-
lines.push(` ${GRAY}${wl}${
|
|
19497
|
+
lines.push(` ${GRAY}${wl}${RESET2}`);
|
|
17647
19498
|
}
|
|
17648
19499
|
}
|
|
17649
19500
|
return;
|
|
17650
19501
|
}
|
|
17651
19502
|
const isUser = msg.role === "user";
|
|
17652
|
-
const label = isUser ? `${BLUE}You:${
|
|
19503
|
+
const label = isUser ? `${BLUE}You:${RESET2} ` : `${GREEN2}Assistant:${RESET2} `;
|
|
17653
19504
|
const labelWidth = isUser ? 5 : 12;
|
|
17654
19505
|
const indent = " ".repeat(labelWidth);
|
|
17655
19506
|
let first = true;
|
|
@@ -17662,25 +19513,25 @@ var ChatTUI = class {
|
|
|
17662
19513
|
}
|
|
17663
19514
|
if (msg.truncationReason) {
|
|
17664
19515
|
const reasonLabel = getTruncationLabel(msg.truncationReason, msg.truncatedAtMs);
|
|
17665
|
-
lines.push(`${indent}${YELLOW}[${reasonLabel}]${
|
|
19516
|
+
lines.push(`${indent}${YELLOW}[${reasonLabel}]${RESET2}`);
|
|
17666
19517
|
const extra = getExtraContent(msg.content, msg.originalContent);
|
|
17667
19518
|
if (extra) {
|
|
17668
19519
|
for (const para of extra.split("\n")) {
|
|
17669
19520
|
for (const wl of this.wrapText(para, width - labelWidth)) {
|
|
17670
|
-
lines.push(`${indent}${DIM_ITALIC_GRAY}${wl}${
|
|
19521
|
+
lines.push(`${indent}${DIM_ITALIC_GRAY}${wl}${RESET2}`);
|
|
17671
19522
|
}
|
|
17672
19523
|
}
|
|
17673
19524
|
}
|
|
17674
19525
|
}
|
|
17675
19526
|
}
|
|
17676
19527
|
appendStreamLines(lines, width) {
|
|
17677
|
-
const label = `${
|
|
19528
|
+
const label = `${GREEN2}Assistant:${RESET2} `;
|
|
17678
19529
|
const labelWidth = 12;
|
|
17679
19530
|
const indent = " ".repeat(labelWidth);
|
|
17680
19531
|
if (!this.streamContent) {
|
|
17681
19532
|
if (this.runState === "thinking" || this.runState === "tool_running") {
|
|
17682
19533
|
const hint2 = this.runState === "tool_running" && this.activeToolName ? `Running ${this.activeToolName}\u2026` : "Thinking\u2026";
|
|
17683
|
-
lines.push(`${label}${YELLOW}${hint2}${
|
|
19534
|
+
lines.push(`${label}${YELLOW}${hint2}${RESET2}`);
|
|
17684
19535
|
} else {
|
|
17685
19536
|
lines.push(label);
|
|
17686
19537
|
}
|
|
@@ -17702,18 +19553,18 @@ var ChatTUI = class {
|
|
|
17702
19553
|
for (const entry of this.debugEntries) {
|
|
17703
19554
|
const color = entry.direction === "in" ? ORANGE : LIGHT_BLUE;
|
|
17704
19555
|
const arrow = entry.direction === "in" ? "\u25BC" : "\u25B2";
|
|
17705
|
-
const prefix = `${
|
|
19556
|
+
const prefix = `${DIM2}${entry.ts}${RESET2} ${color}${arrow}${RESET2} `;
|
|
17706
19557
|
const prefixWidth = entry.ts.length + 3;
|
|
17707
19558
|
if (!this.expandDetails) {
|
|
17708
19559
|
const maxSummary = dw - prefixWidth;
|
|
17709
19560
|
const summaryText = entry.summary.slice(0, maxSummary);
|
|
17710
|
-
lines.push(`${prefix}${color}${summaryText}${
|
|
19561
|
+
lines.push(`${prefix}${color}${summaryText}${RESET2}`);
|
|
17711
19562
|
} else {
|
|
17712
|
-
lines.push(`${prefix}${color}${entry.summary}${
|
|
19563
|
+
lines.push(`${prefix}${color}${entry.summary}${RESET2}`);
|
|
17713
19564
|
const indent = " ".repeat(prefixWidth);
|
|
17714
19565
|
for (const detailLine of entry.detail.split("\n")) {
|
|
17715
19566
|
for (const wl of this.wrapText(detailLine, dw - prefixWidth)) {
|
|
17716
|
-
lines.push(`${indent}${color}${
|
|
19567
|
+
lines.push(`${indent}${color}${DIM2}${wl}${RESET2}`);
|
|
17717
19568
|
}
|
|
17718
19569
|
}
|
|
17719
19570
|
lines.push("");
|
|
@@ -17763,7 +19614,7 @@ function truncateAnsi(s, maxCols) {
|
|
|
17763
19614
|
i++;
|
|
17764
19615
|
}
|
|
17765
19616
|
}
|
|
17766
|
-
return s.slice(0, i) +
|
|
19617
|
+
return s.slice(0, i) + RESET2;
|
|
17767
19618
|
}
|
|
17768
19619
|
function redactAudio(msg) {
|
|
17769
19620
|
if (!msg || typeof msg !== "object") return msg;
|
|
@@ -19293,7 +21144,7 @@ async function authImportDevCommand(ctx, args) {
|
|
|
19293
21144
|
}
|
|
19294
21145
|
|
|
19295
21146
|
// src/commands/organizations.ts
|
|
19296
|
-
var
|
|
21147
|
+
var COLUMNS36 = [
|
|
19297
21148
|
{ header: "NAME", getValue: (o) => o.organizationName || "", maxWidth: 35 },
|
|
19298
21149
|
{ header: "SLUG", getValue: (o) => o.organizationSlug || "", maxWidth: 25 },
|
|
19299
21150
|
{ header: "UUID", getValue: (o) => o.organizationUuid },
|
|
@@ -19301,7 +21152,7 @@ var COLUMNS34 = [
|
|
|
19301
21152
|
];
|
|
19302
21153
|
async function organizationsListCommand(ctx) {
|
|
19303
21154
|
const organizations = await ctx.apiClient.getMyOrganizations();
|
|
19304
|
-
outputData(organizations, ctx,
|
|
21155
|
+
outputData(organizations, ctx, COLUMNS36);
|
|
19305
21156
|
}
|
|
19306
21157
|
|
|
19307
21158
|
// src/commands/whoami.ts
|
|
@@ -19536,7 +21387,7 @@ var topLevelCommands = [
|
|
|
19536
21387
|
mutates: true,
|
|
19537
21388
|
args: [{ name: "phone", description: "E.164 phone number (optional; prompts if omitted)" }],
|
|
19538
21389
|
handler: async (hctx) => {
|
|
19539
|
-
const { accountVerifyPhoneCommand } = await import("./account-verify-phone-
|
|
21390
|
+
const { accountVerifyPhoneCommand } = await import("./account-verify-phone-LKTAJQD7.js");
|
|
19540
21391
|
await accountVerifyPhoneCommand(hctx);
|
|
19541
21392
|
}
|
|
19542
21393
|
},
|
|
@@ -19669,6 +21520,7 @@ export {
|
|
|
19669
21520
|
outputData,
|
|
19670
21521
|
outputSingle,
|
|
19671
21522
|
parseArgs,
|
|
21523
|
+
parseGlobalOptions,
|
|
19672
21524
|
parsePaginationArgs,
|
|
19673
21525
|
profilesFromDevRealms,
|
|
19674
21526
|
readJsonInput,
|