@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/dist/lib.js CHANGED
@@ -32,7 +32,7 @@ import {
32
32
  startAccountPhoneVerify,
33
33
  stderr,
34
34
  unwrapItems
35
- } from "./chunk-EITDLX75.js";
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(commands3) {
842
- for (const cmd of commands3) {
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: "[REDACTED]",
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); both must stay out of inspect output.
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: "[REDACTED]"
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: "[REDACTED]"
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/personas.ts
6188
+ // src/domains/metrics.ts
5686
6189
  var COLUMNS11 = [
5687
6190
  COL.id(),
5688
6191
  COL.name(),
5689
- { header: "AGE", getValue: (item) => item.age != null ? String(item.age) : "" },
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: "HAS_PHONE",
5692
- getValue: (item) => item.hasPhone ? "yes" : "no"
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: "HAS_EMAIL",
5696
- getValue: (item) => item.hasEmail ? "yes" : "no"
6207
+ header: "CHAT_ID",
6208
+ getValue: (item) => item.chatId != null ? String(item.chatId) : ""
5697
6209
  },
5698
6210
  {
5699
- header: "DATA_RECORDS",
5700
- getValue: (item) => item.dataRecords ? String(Object.keys(item.dataRecords).length) : "0"
5701
- },
5702
- COL.created()
6211
+ header: "MEMBER_ID",
6212
+ getValue: (item) => item.memberId != null ? String(item.memberId) : ""
6213
+ }
5703
6214
  ];
5704
- var personasDomain = {
5705
- name: "personas",
5706
- description: "Manage workspace-scoped test personas (identity templates for scenario runs)",
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: ["personas"],
5710
- entityName: "persona",
5711
- listMethod: "listPersonas",
5712
- getMethod: "getPersona",
5713
- createMethod: "createPersona",
5714
- updateMethod: "updatePersona",
5715
- deleteMethod: "deletePersona",
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
- // src/domains/qualifications.ts
5723
- import { mkdirSync } from "fs";
5724
- import { dirname } from "path";
5725
- import { DriverMode as DriverMode2 } from "@gravity-rail/sdk";
5726
-
5727
- // src/lib/qualifications_model_eval_batch.ts
5728
- import { randomInt } from "crypto";
5729
- import { appendFileSync, existsSync, statSync } from "fs";
5730
- import { basename } from "path";
5731
- import { DriverMode } from "@gravity-rail/sdk";
5732
- var CONFIGURATION_BLOCKER_FAILURE_PREFIX = "Configuration blocker (fix workspace setup, not a model defect):";
5733
- function isConfigurationBlockerFailure(failureReason) {
5734
- return typeof failureReason === "string" && failureReason.startsWith(CONFIGURATION_BLOCKER_FAILURE_PREFIX);
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
- assistantChatModelId: job.modelId
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
- const progress = formatBatchProgressLine(job, row);
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
- for (const job of jobs) {
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
- if (stopBatch) {
5969
- break;
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
- for (let index = 0; index < jobs.length; index++) {
6745
+ jobs.forEach((job, index) => {
5995
6746
  if (results[index] !== void 0) {
5996
- continue;
6747
+ return;
5997
6748
  }
5998
- const job = jobs[index];
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: true
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(requireString(args, "models"), "--models");
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 COLUMNS12 = [
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: COLUMNS12
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 COLUMNS13 = [
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, COLUMNS13);
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, COLUMNS13);
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, COLUMNS13);
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, COLUMNS13);
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, COLUMNS13);
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, COLUMNS13);
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, COLUMNS13);
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, COLUMNS13);
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, COLUMNS13);
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 COLUMNS14 = [
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, COLUMNS14);
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, COLUMNS14);
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, COLUMNS14);
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, COLUMNS14);
8412
+ outputData(result2, ctx, COLUMNS15);
7615
8413
  }
7616
8414
  }
7617
8415
  ]
7618
8416
  };
7619
8417
 
7620
8418
  // src/domains/api-keys.ts
7621
- var COLUMNS15 = [
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, COLUMNS15);
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, COLUMNS15);
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 COLUMNS16 = [COL.id(), COL.name(), COL.description(), COL.enabled()];
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: COLUMNS16
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, COLUMNS16);
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, COLUMNS16);
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 COLUMNS17 = [
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, COLUMNS17);
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, COLUMNS17);
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, COLUMNS17);
9316
+ outputData(result2, ctx, COLUMNS18);
8519
9317
  }
8520
9318
  }
8521
9319
  ]
8522
9320
  };
8523
9321
 
8524
9322
  // src/domains/inboxes.ts
8525
- var COLUMNS18 = [
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: COLUMNS18
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 COLUMNS19 = [
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: COLUMNS19
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, COLUMNS19);
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, COLUMNS19);
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: [{ name: "mcp-server-id", description: "MCP server ID", required: true }],
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 result2 = await requireAuth(ctx).apiClient.getMcpServerTools(
8690
- workspace,
8691
- requireNumber(args, "mcp-server-id")
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
- outputData(result2, ctx);
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 COLUMNS20 = [
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, COLUMNS20);
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, COLUMNS20);
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, COLUMNS20);
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/milestones.ts
8818
- var COLUMNS21 = [
9706
+ // src/domains/intervention-requests.ts
9707
+ var COLUMNS23 = [
8819
9708
  COL.id(),
8820
- COL.name(),
8821
- COL.status(),
8822
- { header: "DUE DATE", getValue: (item) => item.dueDate ?? "" }
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 milestonesDomain = {
8825
- name: "milestones",
8826
- description: "Manage milestones",
9721
+ var interventionRequestsDomain = {
9722
+ name: "interventions",
9723
+ description: "Inspect intervention requests \u2014 escalations and other asks for a person",
8827
9724
  commands: [
8828
- ...crudCommands({
8829
- prefix: ["milestones"],
8830
- entityName: "milestone",
8831
- listMethod: "getMilestones",
8832
- getMethod: "getMilestone",
8833
- createMethod: "createMilestone",
8834
- updateMethod: "updateMilestone",
8835
- deleteMethod: "deleteMilestone",
8836
- columns: COLUMNS21,
8837
- paginationSupport: "full"
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 COLUMNS22 = [
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: COLUMNS22
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 COLUMNS23 = [COL.id(), COL.name(), COL.description()];
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: COLUMNS23
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 ORG_UUID_ARG = {
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: [ORG_UUID_ARG, DOMAIN_UUID_ARG],
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
- requireOrgId(hctx.args),
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: [ORG_UUID_ARG, DOMAIN_UUID_ARG],
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
- requireOrgId(hctx.args),
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
- ORG_UUID_ARG,
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
- requireOrgId(hctx.args),
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: [ORG_UUID_ARG],
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
- requireOrgId(hctx.args)
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: [ORG_UUID_ARG, DOMAIN_UUID_ARG],
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
- requireOrgId(hctx.args),
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: [ORG_UUID_ARG, DOMAIN_UUID_ARG],
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
- requireOrgId(hctx.args),
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: [ORG_UUID_ARG, DOMAIN_UUID_ARG],
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(requireOrgId(hctx.args), domainUuid);
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: [ORG_UUID_ARG, DOMAIN_UUID_ARG],
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
- requireOrgId(hctx.args),
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: [ORG_UUID_ARG, DOMAIN_UUID_ARG],
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
- requireOrgId(hctx.args),
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
- ORG_UUID_ARG,
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
- requireOrgId(hctx.args),
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: [ORG_UUID_ARG, DOMAIN_UUID_ARG],
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
- requireOrgId(hctx.args),
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: [ORG_UUID_ARG, DOMAIN_UUID_ARG],
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
- requireOrgId(hctx.args),
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
- ORG_UUID_ARG,
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
- requireOrgId(hctx.args),
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
- function requireOrgUuid(args) {
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 = requireOrgUuid(hctx.args);
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 = requireOrgUuid(hctx.args);
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 = requireOrgUuid(hctx.args);
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 = requireOrgUuid(hctx.args);
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 = requireOrgUuid(hctx.args);
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 = requireOrgUuid(hctx.args);
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 = requireOrgUuid(hctx.args);
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: commands2
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 COLUMNS24 = [
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: COLUMNS24
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, COLUMNS24);
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, COLUMNS24);
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, COLUMNS24);
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, COLUMNS24);
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, COLUMNS24);
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 COLUMNS25 = [
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, COLUMNS25);
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, COLUMNS25);
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, COLUMNS25);
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, COLUMNS25);
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, COLUMNS25);
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 COLUMNS26 = [
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, COLUMNS26);
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, COLUMNS26);
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, COLUMNS26);
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, COLUMNS26);
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, COLUMNS26);
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 COLUMNS27 = [
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: COLUMNS27
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 COLUMNS28 = [
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, COLUMNS28);
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, COLUMNS28);
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, COLUMNS28);
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, COLUMNS28);
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, COLUMNS28);
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 COLUMNS29 = [COL.id(), COL.name(), COL.status()];
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: COLUMNS29,
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 COLUMNS30 = [
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: COLUMNS30,
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 COLUMNS31 = [
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, COLUMNS31);
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, COLUMNS31);
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 COLUMNS32 = [COL.id(), COL.name(), COL.status()];
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: COLUMNS32,
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 COLUMNS33 = [COL.id(), COL.name(), COL.status()];
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: COLUMNS33,
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 readline from "readline";
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 = readline.createInterface({ input: process.stdin, output: process.stderr });
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
- async function handleUIChoiceTerminal(payload) {
16504
- const prompt = typeof payload.userPrompt === "string" && payload.userPrompt || typeof payload.description === "string" && payload.description || "Choose an option";
16505
- const markup = typeof payload.openuiMarkup === "string" ? payload.openuiMarkup : "";
16506
- process.stderr.write(`
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
- if (!process.stdin.isTTY) {
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: typeof payload.interruptId === "string" ? payload.interruptId : void 0
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 RESET = `${CSI}0m`;
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 GREEN = `${CSI}32m`;
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 DIM = `${CSI}2m`;
18768
+ var DIM2 = `${CSI}2m`;
16918
18769
  var DIM_ITALIC_GRAY = `${CSI}2;3;90m`;
16919
18770
  var RED = `${CSI}31m`;
16920
- var CYAN = `${CSI}36m`;
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
- `${DIM}\u2502${RESET}`,
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}${RESET} ` : " ".repeat(INPUT_LABEL_WIDTH);
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(`${CYAN}${this.options.title}${RESET}`);
19382
+ parts.push(`${CYAN2}${this.options.title}${RESET2}`);
17532
19383
  }
17533
19384
  if (this.options.subtitle) {
17534
- parts.push(`${DIM}${this.options.subtitle}${RESET}`);
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${RESET}`;
19390
+ status = `${YELLOW}Thinking\u2026${RESET2}`;
17540
19391
  break;
17541
19392
  case "tool_running":
17542
- status = `${YELLOW}Running ${this.activeToolName}\u2026${RESET}`;
19393
+ status = `${YELLOW}Running ${this.activeToolName}\u2026${RESET2}`;
17543
19394
  break;
17544
19395
  case "streaming":
17545
- status = `${GREEN}Writing\u2026${RESET}`;
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(` ${DIM}|${RESET} `);
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)}${RESET}`;
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)}${RESET}`;
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 ? GREEN : YELLOW}${status}${RESET} ${GRAY}${verb} ${tc.name}${RESET}`;
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}${RESET}`);
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${RESET}` : `${GREEN}\u2713${RESET}`;
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}${RESET}`);
19477
+ lines.push(` ${mark} ${GRAY}${tr.toolName}: ${preview}${truncated}${RESET2}`);
17627
19478
  return;
17628
19479
  }
17629
- lines.push(` ${mark} ${GRAY}${tr.toolName} result:${RESET}`);
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}${RESET}`);
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}${RESET}`);
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:${RESET} ` : `${GREEN}Assistant:${RESET} `;
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}]${RESET}`);
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}${RESET}`);
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 = `${GREEN}Assistant:${RESET} `;
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}${RESET}`);
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 = `${DIM}${entry.ts}${RESET} ${color}${arrow}${RESET} `;
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}${RESET}`);
19561
+ lines.push(`${prefix}${color}${summaryText}${RESET2}`);
17711
19562
  } else {
17712
- lines.push(`${prefix}${color}${entry.summary}${RESET}`);
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}${DIM}${wl}${RESET}`);
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) + RESET;
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 COLUMNS34 = [
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, COLUMNS34);
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-Q2NIRSX4.js");
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,